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