*** Settings ***
Documentation     Actions spécifiques aux demandes

*** Keywords ***
Ajouter la nouvelle demande depuis le menu
    [Arguments]  ${demande_values}    ${petitionnaire_values}

    # On ouvre le menu nouveau dossier
    Depuis le contexte de nouvelle demande via le menu
    # On remplit le formulaire
    Saisir la demande  ${demande_values}
    Ajouter le pétitionnaire principal    ${petitionnaire_values}
    # On valide
    Click On Submit Button
    # Vérification du message de validation
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Valid Message Should Contain  Vos modifications ont bien été enregistrées.
    # Vérification qu'il n'y a aucune erreur
    Page Should Not Contain Errors
    # On récupère le libelle du dossier d'instruction
    ${libelle_di} =  Get Text  new_di
    # On le retourne
    [Return]  ${libelle_di}

Ajouter la nouvelle demande depuis le tableau de bord
    [Arguments]  ${demande_values}    ${petitionnaire_values}

    # On ouvre le menu nouveau dossier
    Depuis le contexte de nouvelle demande via le tableau de bord
    # On remplit le formulaire
    Saisir la demande  ${demande_values}
    Ajouter le pétitionnaire principal    ${petitionnaire_values}
    # On valide
    Click On Submit Button
    # Vérification du message de validation
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Valid Message Should Contain  Vos modifications ont bien été enregistrées.
    # Vérification qu'il n'y a aucune erreur
    Page Should Not Contain Errors
    # On récupère le libelle du dossier d'instruction
    ${libelle_di} =  Get Text  new_di
    # On le retourne
    [Return]  ${libelle_di}

Ajouter la demande sur existant depuis le tableau de bord
    [Arguments]  ${libelle_di}  ${demande_values}

    # On ouvre le menu autre dossier
    Depuis le contexte de demande sur existant via le tableau de bord
    ${di_libelle_sans_espace} =  Sans espace  ${libelle_di}
    # On fait une recherche sur le libellé du DI
    Input Text    recherche    ${di_libelle_sans_espace}
    # On valide
    Click On Search Button
    Click Element  css=span.add-16
    # On remplit le formulaire
    Saisir la demande  ${demande_values}
    # On valide
    Click On Submit Button
    # Vérification du message de validation
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Valid Message Should Contain  Vos modifications ont bien été enregistrées.
    # Vérification qu'il n'y a aucune erreur
    Page Should Not Contain Errors
    # On récupère le libelle du dossier d'instruction
    ${libelle_di} =  Get Text  new_di
    # On le retourne
    [Return]  ${libelle_di}

Depuis le contexte de nouvelle demande via le menu
    Go To Dashboard
    Go To Submenu In Menu  guichet_unique  nouveau-dossier

Depuis le contexte de nouvelle demande via le tableau de bord
    Go To Dashboard
    Click On Link  Cliquer ici pour saisir une nouvelle demande concernant le dépôt d'un nouveau dossier

Depuis le contexte de demande sur existant via le tableau de bord
    Go To Dashboard
    Click On Link  Cliquer ici pour saisir une nouvelle demande concernant un dossier en cours ou une autorisation existante

Depuis le contexte de demande sur existant via le menu
    Go To Dashboard
    Go To Submenu In Menu  guichet_unique  autre-dossier

Saisir la demande
    [Arguments]    ${demande_values}

    # On sélectionne le type de dossier d'autorisation détaillé
    Si "dossier_autorisation_type_detaille" existe dans "${demande_values}" on execute "Select From List By Label" dans le formulaire
    # On sélectionne le type de demande
    Wait Until Element is Visible  demande_type
    Si "demande_type" existe dans "${demande_values}" on execute "Select From List By Label" dans le formulaire
    # On saisit la date
    Si "date_demande" existe dans "${demande_values}" on execute "Input Text" dans le formulaire
    # On sélectionne la collectivité si renseignée
    Si "om_collectivite" existe dans "${demande_values}" on execute "Select From List By Label" dans le formulaire
    # localite du terrain
    Si "terrain_adresse_voie_numero" existe dans "${demande_values}" on execute "Input Text" dans le formulaire
    Si "terrain_adresse_voie" existe dans "${demande_values}" on execute "Input Text" dans le formulaire
    Si "terrain_adresse_lieu_dit" existe dans "${demande_values}" on execute "Input Text" dans le formulaire
    Si "terrain_adresse_code_postal" existe dans "${demande_values}" on execute "Input Text" dans le formulaire
    Si "terrain_adresse_localite" existe dans "${demande_values}" on execute "Input Text" dans le formulaire
    Si "terrain_references_cadastrales" existe dans "${demande_values}" on execute "Saisir les références cadastrales"

Saisir les références cadastrales
    [Arguments]    ${references_cadastrales}
    [Documentation]  Permet de saisir un nombre "infini" de références cadastrales sur une
    ...  seule ligne. Ce mot clé recoit une liste de références cadastrales avec un élément
    ...  par ligne, ex: @{ref_cad} =  Create List  806  AB  01  A  50
    ...  Ce mot-clé clique sur le bouton "ajouter d'autres champs" autant de fois que
    ...  nécessaire.

    # Initialisation du compteur à 1
    ${i} =  Set Variable  1
    ${modulo} =  Set Variable  0
    :FOR  ${values}  IN  @{references_cadastrales}
    \    Run Keyword If  ${i} > 3 and (${i}-3)%2 == 1  Click Element  moreFieldReferenceCadastrale0
    \    Input Text  css=.reference_cadastrale_custom_fields .reference_cadastrale_custom_field:nth-child(${i})  ${values}
    \    ${i}  Evaluate  ${i}+1

Ajouter le pétitionnaire principal
    [Arguments]  ${petitionnaire_values}

    # On clique sur le bouton
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  add_petitionnaire_principal
    # On vérifie qu'il n'y a pas d'erreur
    Page Should Not Contain Errors
    # On remplit le formulaire
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Saisir le pétitionnaire principal  ${petitionnaire_values}
    # Attente d'une seconde avant d'ajouter
    Sleep  1
    # Clic sur le bouton ajouter
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=#sousform-petitionnaire input[value=Ajouter]
    # Vérification du message de validation
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Valid Message Should Contain In Subform  Vos modifications ont bien été enregistrées.
    # On ferme l'overlay
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=#sousform-petitionnaire a.retour

Ajouter le pétitionnaire
    [Arguments]  ${petitionnaire_values}

    # On clique sur le bouton
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  add_petitionnaire
    # On vérifie qu'il n'y a pas d'erreur
    Page Should Not Contain Errors
    # On remplit le formulaire
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Saisir le pétitionnaire principal  ${petitionnaire_values}
    # Attente d'une seconde avant d'ajouter
    Sleep  1
    # Clic sur le bouton ajouter
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=#sousform-petitionnaire input[value=Ajouter]
    # Vérification du message de validation
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Valid Message Should Contain In Subform  Vos modifications ont bien été enregistrées.
    # On ferme l'overlay
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=#sousform-petitionnaire a.retour

Ajouter le demandeur
    [Documentation]  Permet d'ajouter un pétitionnaire fréquent depuis le menu.
    [Arguments]  ${petitionnaire_values}

    Go To Tab  petitionnaire_frequent
    # On clique sur le bouton ajouter
    Click On Add Button
    Saisir le demandeur  ${petitionnaire_values}
    # On valide
    Click On Submit Button
    # Vérification du message de validation
    Valid Message Should Contain  Vos modifications ont bien été enregistrées.

Saisir le demandeur
    [Documentation]  Remplit le formulaire
    [Arguments]  ${values}

    # XXX Problématique RF : Le champ om_collectivite ne doit pas être sélectionné en dernier
    # sinon le bouton de validation n'arrive pas à être cliqué.
    Si "om_collectivite" existe dans "${values}" on execute "Select From List By Label" dans le formulaire
    #
    Si "type_demandeur" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "qualite" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "particulier_nom" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "particulier_prenom" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "particulier_date_naissance" existe dans "${values}" on execute "Input Datepicker" dans le formulaire
    Si "particulier_commune_naissance" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "particulier_departement_naissance" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "personne_morale_denomination" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "personne_morale_raison_sociale" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "personne_morale_siret" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "personne_morale_categorie_juridique" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "personne_morale_nom" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "personne_morale_prenom" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "numero" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "voie" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "complement" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "lieu_dit" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "localite" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "code_postal" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "bp" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "cedex" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "pays" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "division_territoriale" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "telephone_fixe" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "telephone_mobile" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "indicatif" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "courriel" existe dans "${values}" on execute "Input Text" dans le formulaire
    Si "notification" existe dans "${values}" on execute "Set Checkbox" dans le formulaire
    Si "frequent" existe dans "${values}" on execute "Set Checkbox" dans le formulaire
    Si "particulier_civilite" existe dans "${values}" on execute "Select From List By Label" dans le formulaire
    Si "personne_morale_civilite" existe dans "${values}" on execute "Select From List By Label" dans le formulaire
    Si "fax" existe dans "${values}" on execute "Input Text" dans le formulaire

Ajouter le délégataire
    [Arguments]  ${petitionnaire_values}

    # On clique sur le bouton
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  add_delegataire
    # On vérifie qu'il n'y a pas d'erreur
    Page Should Not Contain Errors
    # On remplit le formulaire
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Saisir le délégataire  ${petitionnaire_values}
    # Attente d'une seconde avant d'ajouter
    Sleep  1
    # Clic sur le bouton ajouter
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=#sousform-delegataire input[value=Ajouter]
    # Vérification du message de validation
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Valid Message Should Contain In Subform  Vos modifications ont bien été enregistrées.
    # On ferme l'overlay
    Wait Until Keyword Succeeds  ${TIMEOUT}  ${RETRY_INTERVAL}  Click Element  css=#sousform-delegataire a.retour

Saisir le pétitionnaire principal
    [Arguments]  ${petitionnaire_values}

    # XXX Problématique RF : Le champ om_collectivite ne doit pas être sélectionné en dernier
    # sinon le bouton de validation n'arrive pas à être cliqué.
    Si "om_collectivite" existe dans "${petitionnaire_values}" on execute "Select From List By Label" dans "petitionnaire"
    #
    Si "qualite" existe dans "${petitionnaire_values}" on execute "Select From List By Label" dans "petitionnaire"
    Si "particulier_civilite" existe dans "${petitionnaire_values}" on execute "Select From List By Label" dans "petitionnaire"
    Si "particulier_nom" existe dans "${petitionnaire_values}" on execute "Input Text" dans "petitionnaire"
    Si "particulier_prenom" existe dans "${petitionnaire_values}" on execute "Input Text" dans "petitionnaire"
    Si "particulier_date_naissance" existe dans "${petitionnaire_values}" on execute "Input Datepicker From Css Selector" dans "petitionnaire"
    Si "particulier_commune_naissance" existe dans "${petitionnaire_values}" on execute "Input Text" dans "petitionnaire"
    Si "particulier_departement_naissance" existe dans "${petitionnaire_values}" on execute "Input Text" dans "petitionnaire"
    Si "personne_morale_denomination" existe dans "${petitionnaire_values}" on execute "Input Text" dans "petitionnaire"
    Si "personne_morale_raison_sociale" existe dans "${petitionnaire_values}" on execute "Input Text" dans "petitionnaire"
    Si "personne_morale_civilite" existe dans "${petitionnaire_values}" on execute "Select From List By Label" dans "petitionnaire"
    Si "personne_morale_nom" existe dans "${petitionnaire_values}" on execute "Input Text" dans "petitionnaire"
    Si "personne_morale_prenom" existe dans "${petitionnaire_values}" on execute "Input Text" dans "petitionnaire"
    Si "numero" existe dans "${petitionnaire_values}" on execute "Input Text" dans "petitionnaire"
    Si "voie" existe dans "${petitionnaire_values}" on execute "Input Text" dans "petitionnaire"
    Si "complement" existe dans "${petitionnaire_values}" on execute "Input Text" dans "petitionnaire"
    Si "lieu_dit" existe dans "${petitionnaire_values}" on execute "Input Text" dans "petitionnaire"
    Si "localite" existe dans "${petitionnaire_values}" on execute "Input Text" dans "petitionnaire"
    Si "code_postal" existe dans "${petitionnaire_values}" on execute "Input Text" dans "petitionnaire"
    Si "telephone_fixe" existe dans "${petitionnaire_values}" on execute "Input Text" dans "petitionnaire"
    Si "frequent" existe dans "${petitionnaire_values}" on execute "Set Checkbox" dans "petitionnaire"

Saisir le délégataire
    [Arguments]  ${delegataire_values}

    # XXX Problématique RF : Le champ om_collectivite ne doit pas être sélectionné en dernier
    # sinon le bouton de validation n'arrive pas à être cliqué.
    Si "om_collectivite" existe dans "${delegataire_values}" on execute "Select From List By Label" dans "delegataire"
    #
    Si "qualite" existe dans "${delegataire_values}" on execute "Select From List By Label" dans "delegataire"
    Si "particulier_civilite" existe dans "${delegataire_values}" on execute "Select From List By Label" dans "delegataire"
    Si "particulier_nom" existe dans "${delegataire_values}" on execute "Input Text" dans "delegataire"
    Si "particulier_prenom" existe dans "${delegataire_values}" on execute "Input Text" dans "delegataire"
    Si "particulier_date_naissance" existe dans "${delegataire_values}" on execute "Input Datepicker From Css Selector" dans "delegataire"
    Si "particulier_commune_naissance" existe dans "${delegataire_values}" on execute "Input Text" dans "delegataire"
    Si "particulier_departement_naissance" existe dans "${delegataire_values}" on execute "Input Text" dans "delegataire"
    Si "personne_morale_denomination" existe dans "${delegataire_values}" on execute "Input Text" dans "delegataire"
    Si "personne_morale_raison_sociale" existe dans "${delegataire_values}" on execute "Input Text" dans "delegataire"
    Si "personne_morale_civilite" existe dans "${delegataire_values}" on execute "Select From List By Label" dans "delegataire"
    Si "personne_morale_nom" existe dans "${delegataire_values}" on execute "Input Text" dans "delegataire"
    Si "personne_morale_prenom" existe dans "${delegataire_values}" on execute "Input Text" dans "delegataire"
    Si "numero" existe dans "${delegataire_values}" on execute "Input Text" dans "delegataire"
    Si "voie" existe dans "${delegataire_values}" on execute "Input Text" dans "delegataire"
    Si "complement" existe dans "${delegataire_values}" on execute "Input Text" dans "delegataire"
    Si "lieu_dit" existe dans "${delegataire_values}" on execute "Input Text" dans "delegataire"
    Si "localite" existe dans "${delegataire_values}" on execute "Input Text" dans "delegataire"
    Si "code_postal" existe dans "${delegataire_values}" on execute "Input Text" dans "delegataire"
    Si "telephone_fixe" existe dans "${delegataire_values}" on execute "Input Text" dans "delegataire"
    Si "frequent" existe dans "${delegataire_values}" on execute "Set Checkbox" dans "delegataire"