info:
  name: Elenco Partecipanti - Dropdown con chiave
  type: http
  seq: 4

http:
  method: POST
  url: "{{elixFormsApiUrl}}/eftl/process/v1"
  headers:
    - name: x-requested-with
      value: XMLHttpRequest
    - name: x-api-key
      value: "{{elixFormsWsAuthenticationToken}}"
    - name: x-ef-request-id
      value: "21223"
  body:
    type: json
    data: |-
      {
        "userDocument": "{{elixBase64EftlDocument}}", // see the pre-request script
        "userContext": {
          "lang": "IT",
          "crlf": "\r\n"
        }
      }
  auth: inherit

runtime:
  scripts:
    - type: before-request
      code: |-
        const { prepareEftlDocument } = require("./elixFormsJs.js")
        // Copy-pasta your EFTL document below inside the template literals (`)
        prepareEftlDocument(String.raw`
        [EFTL][HEADER name="trimDocument" value="true" type="boolean" /]
        [VAR name="newLine" type="string"][VALUE_OF varname="crlf" /][/VAR]

        [VAR name="responsabili" type="string"][TRIM][TAG]GETVALUEBYTAG,CONTRATTO_RESPONSABILI,REQUEST,IUQOID[/TAG][/TRIM][/VAR]
        [VAR name="partecipanti" type="string"][TRIM][TAG]GETVALUEBYTAG,CONTRATTO_PARTECIPANTI,REQUEST,IUQOID[/TAG][/TRIM][/VAR]

        [!-- Aggiungi primo elemento "nullo" --]
        [VAR name="ripartizioniElenco" type="string"][% ripartizioniElenco = "[0] ---" + newLine; %][/VAR]

        [VAR name="responsabiliIterable" type="iterable"][SPLIT regex="\n"][VALUE_OF varname="responsabili" /][/SPLIT][/VAR]
        [VAR name="partecipantiIterable" type="iterable"][SPLIT regex="\n"][VALUE_OF varname="partecipanti" /][/SPLIT][/VAR]

        [VAR name="responsabiliCount" type="number"][SIZE_OF varname="responsabiliIterable" /][/VAR]
        [VAR name="partecipantiCount" type="number"][SIZE_OF varname="partecipantiIterable" /][/VAR]

        [VAR name="personaIdx" type="string"][% personaIdx = 0; %][/VAR]
        [VAR name="dropdownIdx" type="string"][% dropdownIdx = 0; %][/VAR]

        [VAR name="firstItem" type="number"][% firstItem = 0; %][/VAR]
        [VAR name="secondItem" type="number"][% secondItem = 1; %][/VAR]

        [WHILE threshold="99"]
            [CONDITION][% personaIdx < responsabiliCount %][/CONDITION]
            [DO]
                [VAR name="responsabileFull" type="string"][VALUE_OF varname="responsabiliIterable" index="personaIdx" /][/VAR]
                [VAR name="responsabileIterable" type="iterable"][SPLIT regex=", CF: "][TRIM][VALUE_OF varname="responsabileFull" /][/TRIM][/SPLIT][/VAR]

                [!-- Recupera il nominativo --]
                [VAR name="responsabileNominativo" type="string"][VALUE_OF varname="responsabileIterable" index="firstItem" /][/VAR]

                [!-- Recupera il codice fiscale --]
                [VAR name="responsabileResto" type="string"][VALUE_OF varname="responsabileIterable" index="secondItem" /][/VAR]
                [VAR name="responsabileRestoIterable" type="iterable"][SPLIT regex=", Data di inizio: "][VALUE_OF varname="responsabileResto" /][/SPLIT][/VAR]
                [VAR name="responsabileCodiceFiscale" type="string"][VALUE_OF varname="responsabileRestoIterable" index="firstItem" /][/VAR]

                [% personaIdx = personaIdx + 1; %]
                [% dropdownIdx = dropdownIdx + 1; %]

                [!-- HACK ignobile per recuperare il numero che altrimenti verrebbe emesso come "1.0", etc... --]
                [VAR name="responsabileKeyIterable" type="iterable"][SPLIT regex="\."][% dropdownIdx + "" %][/SPLIT][/VAR]
                [VAR name="responsabileKey" type="string"][VALUE_OF varname="responsabileKeyIterable" index="firstItem" /][/VAR]

                [% ripartizioniElenco = ripartizioniElenco + "[" + responsabileKey + "] " + responsabileNominativo + " (CF: " + responsabileCodiceFiscale + ")"; %]

                [IF]
                    [CONDITION][% personaIdx < responsabiliCount %][/CONDITION]
                    [THEN]
                        [% ripartizioniElenco = ripartizioniElenco + newLine; %]
                    [/THEN]
                [ELSE IF]
                    [CONDITION][IS_NOT_EMPTY varname="partecipanti" /][/CONDITION]
                    [THEN]
                        [% ripartizioniElenco = ripartizioniElenco + newLine; %]
                    [/THEN]
                [/ELSE IF]
                [/IF]
            [/DO]
        [/WHILE]

        [IF][CONDITION][IS_NOT_EMPTY varname="partecipanti" /][/CONDITION][THEN]
            [% personaIdx = 0; %]
            [WHILE threshold="99"]
                [CONDITION][% personaIdx < partecipantiCount %][/CONDITION]
                [DO]
                    [VAR name="partecipanteFull" type="string"][VALUE_OF varname="partecipantiIterable" index="personaIdx" /][/VAR]
                    [VAR name="partecipanteIterable" type="iterable"][SPLIT regex=", CF: "][TRIM][VALUE_OF varname="partecipanteFull" /][/TRIM][/SPLIT][/VAR]

                    [!-- Recupera il nominativo --]
                    [VAR name="partecipanteNominativo" type="string"][VALUE_OF varname="partecipanteIterable" index="firstItem" /][/VAR]

                    [!-- Recupera il codice fiscale --]
                    [VAR name="partecipanteResto" type="string"][VALUE_OF varname="partecipanteIterable" index="secondItem" /][/VAR]
                    [VAR name="partecipanteRestoIterable" type="iterable"][SPLIT regex=", Data di inizio: "][VALUE_OF varname="partecipanteResto" /][/SPLIT][/VAR]
                    [VAR name="partecipanteCodiceFiscale" type="string"][VALUE_OF varname="partecipanteRestoIterable" index="firstItem" /][/VAR]

                    [% personaIdx = personaIdx + 1; %]
                    [% dropdownIdx = dropdownIdx + 1; %]

                    [!-- HACK ignobile per recuperare il numero che altrimenti verrebbe emesso come "1.0", etc... --]
                    [VAR name="partecipanteKeyIterable" type="iterable"][SPLIT regex="\."][% dropdownIdx + "" %][/SPLIT][/VAR]
                    [VAR name="partecipanteKey" type="string"][VALUE_OF varname="partecipanteKeyIterable" index="firstItem" /][/VAR]

                    [% ripartizioniElenco = ripartizioniElenco + "[" + partecipanteKey + "] " + partecipanteNominativo + " (CF: " + partecipanteCodiceFiscale + ")"; %]

                    [IF]
                        [CONDITION][% personaIdx < partecipantiCount %][/CONDITION]
                        [THEN]
                            [% ripartizioniElenco = ripartizioniElenco + newLine; %]
                        [/THEN]
                    [/IF]
                [/DO]
            [/WHILE]
        [/THEN][/IF]

        [%= ripartizioniElenco %]
        [/EFTL]
        `);

settings:
  encodeUrl: true
  timeout: 0
  followRedirects: true
  maxRedirects: 5
  forwardAuthorizationHeader: true
