<commit_before>﻿using CQRS.Commands;
using SO115App.API.Models.Servizi.Infrastruttura.GestioneSoccorso;
using SO115App.Models.Classi.ServiziEsterni.Utility;
using SO115App.Models.Classi.Soccorso.Eventi;
using SO115App.Models.Servizi.Infrastruttura.SistemiEsterni.AFM;
using System;
using System.Linq;

namespace SO115App.Models.Servizi.CQRS.Commands.GestioneSoccorso.GestioneIntervento.InserisciRichiestaSoccorsoAereo
{
    public class InserisciRichiestaSoccorsoAereoCommandHandler : ICommandHandler<InserisciRichiestaSoccorsoAereoCommand>
    {
        private readonly IAggiornaRichiestaSoccorsoAereo _aggiorna;
        private readonly IUpDateRichiestaAssistenza _updateRichiesta;

        //IGetCompetenzeByCoordinateIntervento

        public InserisciRichiestaSoccorsoAereoCommandHandler(IAggiornaRichiestaSoccorsoAereo aggiorna, IUpDateRichiestaAssistenza updateRichiesta)
        {
            _aggiorna = aggiorna;
            _updateRichiesta = updateRichiesta;
        }

        public void Handle(InserisciRichiestaSoccorsoAereoCommand command)
        {
            var date = DateTime.Now;

            string azione = "Inserimento";

            if (command.Richiesta.ListaEventi.Last() is RichiestaSoccorsoAereo)
            {
                azione = "Aggiornamento";
            }

            #region AFM Servizio

            //COMPONGO IL MODELLO PER AFM
            command.RichiestaSoccorsoAereo.datetime = date;
            command.RichiestaSoccorsoAereo.requestKey = MapRequestKeyAFM.MapForAFM(command.RichiestaSoccorsoAereo.requestKey);
            command.RichiestaSoccorsoAereo.progressiveNumber = command.Richiesta.CodRichiesta?.Split('-')[2] ?? "";
            //command.RichiestaSoccorsoAereo.;


            //Comunico al servizio esterno
            var responseAFM = _aggiorna.Aggiorna(command.RichiestaSoccorsoAereo);

            #endregion

            command.ResponseAFM = responseAFM;

            if (!responseAFM.IsError()) //OK INSERIMENTO
            {
                new RichiestaSoccorsoAereo(command.Richiesta, date, command.IdOperatore, command.ResponseAFM.GetNoteEvento(azione), command.ResponseAFM.GetTargaEvento());

                command.Richiesta.RichiestaSoccorsoAereo = true;
            }
            else //ERRORE INSERIMENTO
            {<commit_msg>fix: popolati campi per servizio esterno inserimento AFM<commit_after>﻿using CQRS.Commands;
using SO115App.API.Models.Classi.Condivise;
using SO115App.API.Models.Servizi.Infrastruttura.GestioneSoccorso;
using SO115App.Models.Classi.ServiziEsterni.Utility;
using SO115App.Models.Classi.Soccorso.Eventi;
using SO115App.Models.Servizi.Infrastruttura.SistemiEsterni.AFM;
using SO115App.Models.Servizi.Infrastruttura.SistemiEsterni.Competenze;
using SO115App.Models.Servizi.Infrastruttura.SistemiEsterni.Distaccamenti;
using System;
using System.Linq;

namespace SO115App.Models.Servizi.CQRS.Commands.GestioneSoccorso.GestioneIntervento.InserisciRichiestaSoccorsoAereo
{
    public class InserisciRichiestaSoccorsoAereoCommandHandler : ICommandHandler<InserisciRichiestaSoccorsoAereoCommand>
    {
        private readonly IAggiornaRichiestaSoccorsoAereo _aggiorna;
        private readonly IUpDateRichiestaAssistenza _updateRichiesta;
        private readonly IGetCompetenzeByCoordinateIntervento _getComeptenze;
        private readonly IGetDistaccamentoByCodiceSedeUC _getDistaccamento;

        public InserisciRichiestaSoccorsoAereoCommandHandler(IAggiornaRichiestaSoccorsoAereo aggiorna,
            IUpDateRichiestaAssistenza updateRichiesta,
            IGetCompetenzeByCoordinateIntervento getComeptenze,
            IGetDistaccamentoByCodiceSedeUC getDistaccamento)
        {
            _aggiorna = aggiorna;
            _updateRichiesta = updateRichiesta;
            _getComeptenze = getComeptenze;
            _getDistaccamento = getDistaccamento;
        }

        public void Handle(InserisciRichiestaSoccorsoAereoCommand command)
        {
            var date = DateTime.Now;

            string azione = "Inserimento";

            if (command.Richiesta.ListaEventi.Last() is RichiestaSoccorsoAereo)
            {
                azione = "Aggiornamento";
            }

            #region AFM Servizio

            //COMPONGO IL MODELLO PER AFM
            var codiceDistaccamentoCompetenza = _getComeptenze.GetCompetenzeByCoordinateIntervento(new Coordinate((double)command.RichiestaSoccorsoAereo.lat, (double)command.RichiestaSoccorsoAereo.lng))[0];
            var distaccamentoCompetenza = _getDistaccamento.Get(codiceDistaccamentoCompetenza);
            command.RichiestaSoccorsoAereo.datetime = date;
            command.RichiestaSoccorsoAereo.requestKey = MapRequestKeyAFM.MapForAFM(command.RichiestaSoccorsoAereo.requestKey);
            command.RichiestaSoccorsoAereo.progressiveNumber = command.Richiesta.CodRichiesta?.Split('-')[2].TrimStart() ?? "";
            command.RichiestaSoccorsoAereo.locality = command.Richiesta.Localita.Indirizzo;
            command.RichiestaSoccorsoAereo.venueInCharge = distaccamentoCompetenza.Result.DescDistaccamento;
            command.RichiestaSoccorsoAereo.onSiteContact = command.Richiesta.Richiedente.Nominativo;
            command.RichiestaSoccorsoAereo.onSiteContactPhoneNumber = command.Richiesta.Richiedente.Telefono;

            //Comunico al servizio esterno
            var responseAFM = _aggiorna.Aggiorna(command.RichiestaSoccorsoAereo);

            #endregion

            command.ResponseAFM = responseAFM;

            if (!responseAFM.IsError()) //OK INSERIMENTO
            {
                new RichiestaSoccorsoAereo(command.Richiesta, date, command.IdOperatore, command.ResponseAFM.GetNoteEvento(azione), command.ResponseAFM.GetTargaEvento());

                command.Richiesta.RichiestaSoccorsoAereo = true;
            }
            else //ERRORE INSERIMENTO
            {
{'fraction_non_alphanumeric': 0.06840224604389995, 'fraction_numerical': 0.0071465033180193975, 'mean_word_length': 3.2532561505065125, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3323048', 'n_tokens_mistral': 1955, 'n_tokens_neox': 1875, 'n_words': 231}