Skip to content

Quando viene creato un Case sul CzRM, creare una segnalazione su SegnalaCi

Quando viene aggiunto un Case sul CzRM, si riceverà la seguente notifica sul topic czrm-updates

{
        "X-Forwarded-For": "85.222.158.8",
        "entity": "Case",
        "event_created_at": "2023-05-04T10:04:15.918257502Z",
        "event_id": "5e5a93d8-1cd9-4e50-8094-7de4ac98be29",
        "event_version": 1,
        "id": "0685E000004E1FZQA0",
        "segnalaCiId": null,
        "updated_at": "2023-04-28T11:45:15.000Z"
}

Eseguire su SegnalaCi una GET /applications/byexternal-id/{id} e se viene ritornato un 404, eseguire sul CzRM una GET /Case/{id} dove id è l'identificativo del case presente nella notifica (in tutte e 2 le get)

Prendere il valore del campo AccountId ed eseguire una GET /Account/{AccountId} sul CzRM, poi prendere il valore del campo SegnalaCiId__c e l'anagrafica generale

Se SegnalaciId__c non è null e si tratta del servizio Segnala disservizio, eseguire una POST /applications con body

{
  "user": "<SegnalaCiId__c>",
  "service": "string", # id del servizio, se Categoria__r sul case è null allora si mette l'id del servizio Segnala disservizio, altrimenti Segnalazione interna disservizio
  "data": {
    "address.address.country": "<Indirizzo__c.country>",
    "address.address.country_code": "<Indirizzo__CountryCode__s>",
    "address.address.county": "<Indirizzo__c.state>",
    "address.address.postcode": "<Indirizzo__PostalCode__s>",
    "address.address.road": "<Indirizzo__Street__s>",
    "address.address.town": "<Indirizzo__City__s>",
    "address.lat": "<Indirizzo__Latitude__s>",
    "address.lon": "<Indirizzo__Longitude__s>",
    "applicant.data.completename.data.name": "<FirstName>",
    "applicant.data.completename.data.surname": "<LastName>",
    "applicant.data.email_address": "<Email__c>",
    "applicant.data.fiscal_code.data.fiscal_code": "<Codice_Fiscale__c>",
    "applicant.data.phone_number": "<Phone>",
    "details": "<Description>",
    "docs": [],
    "images": [],
    "subject": "<Subject>",
    "type.label": "<Categoria_del_Cittadino_Backend__c>",
    "type.value": "?"
  },
  "protocol_folder_number": null,
  "protocol_folder_code": null,
  "protocol_number": null,
  "protocol_document_id": null,
  "protocolled_at": null,
  "outcome": true,
  "outcome_motivation": null,
  "outcome_protocol_number": null,
  "outcome_protocol_document_id": null,
  "outcome_protocolled_at": null,
  "payment_type": null,
  "payment_data": null,
  "status": 2000,
  "user_compilation_notes": null,
  "external_id": "<id del case>"
}

Se SegnalaciId__c non è null e si tratta del servizio Segnalazione interna disservizio, eseguire una POST /applications con body

{
  "user": "<SegnalaCiId__c>",
  "service": "string", # id del servizio, se Categoria__r sul case è null allora si mette l'id del servizio Segnala disservizio, altrimenti Segnalazione interna disservizio
  "data": {
    "address.address.country": "<Indirizzo__c.country>",
    "address.address.country_code": "<Indirizzo__CountryCode__s>",
    "address.address.county": "<Indirizzo__c.state>",
    "address.address.postcode": "<Indirizzo__PostalCode__s>",
    "address.address.road": "<Indirizzo__Street__s>",
    "address.address.town": "<Indirizzo__City__s>",
    "address.lat": "<Indirizzo__Latitude__s>",
    "address.lon": "<Indirizzo__Longitude__s>",
    "applicant.data.completename.data.name": "<FirstName>",
    "applicant.data.completename.data.surname": "<LastName>",
    "applicant.data.email_address": "<Email__c>",
    "applicant.data.fiscal_code.data.fiscal_code": "<Codice_Fiscale__c>",
    "applicant.data.phone_number": "<Phone>",
    "details": "<Description>",
    "docs": [],
    "images": [],
    "subject": "<Subject>",
    "micromacrocategory.label": "<MacrocategoriaSegnalaCi__c>: <Categoria_Backend__c>",
    "micromacrocategory.value": "<Categoria__c>"
  },
  "protocol_folder_number": null,
  "protocol_folder_code": null,
  "protocol_number": null,
  "protocol_document_id": null,
  "protocolled_at": null,
  "outcome": true,
  "outcome_motivation": null,
  "outcome_protocol_number": null,
  "outcome_protocol_document_id": null,
  "outcome_protocolled_at": null,
  "payment_type": null,
  "payment_data": null,
  "status": 2000,
  "user_compilation_notes": null,
  "external_id": "<id del case>"
}

Eseguire infine sul CzRM una PATCH /Case/{id} con body

{
   "SegnalaCiId__c": "<id della segnalazione appena creata>"
}

Se SegnalaCiId__c è null, allora significa che l'utente non esiste lato SegnalaCi di conseguenza va fatta una POST /users con body

{
  "nome": "<FirstName>",
  "cognome": "<LastName>",
  "cellulare": null,
  "email": "<Email__c>",
  "codice_fiscale": "<CodiceFiscale__c>",
  "data_nascita": "<PersonBirthdate> (convertire in formato ISO8601)",
  "luogo_nascita": null,
  "codice_nascita": null,
  "provincia_nascita": null,
  "stato_nascita": null,
  "sesso": null,
  "telefono": "<Phone>",
  "indirizzo_domicilio": "<ShippingStreet>",
  "cap_domicilio": "<ShippingPostalCode>",
  "citta_domicilio": "<ShippingCity>",
  "provincia_domicilio": "<ShippingState>",
  "stato_domicilio": "<ShippingCountry>",
  "indirizzo_residenza": null,
  "cap_residenza": null,
  "citta_residenza": null,
  "provincia_residenza": null,
  "stato_residenza": null
}

prendere l'uuid restituito dalla POST ed eseguire poi una PATCH /Account/{AccountId} con body

{
   "SegnalaCiId__c": "<id dell'utente appena creato>"
}

eseguire poi l'inserimento del case come negli step sopra usando come user_id l'uuid ritornato dalla POST /users

┆Issue is synchronized with this Wrike task

Edited by Mouslim Fatnassi