/// <summary> /// Il metodo accetta in firma il command, e aggiorna i dati relativi alla conferma della partenza /// </summary> /// <param name="command">il command in ingresso</param> /// <returns>ConfermaPartenze</returns> public ConfermaPartenze Update(ConfermaPartenzeCommand command) { var conferma = new ConfermaPartenze(); _updateRichiesta.UpDate(command.ConfermaPartenze.richiesta); var tipologia = _getTipologieByCodice.Get(command.ConfermaPartenze.richiesta.Tipologie)[0]; foreach (var partenza in command.ConfermaPartenze.Partenze) { var dataMovintazione = DateTime.UtcNow; //_setMovimentazione.Set(partenza.Mezzo.Codice, DateTime.UtcNow, command.ConfermaPartenze.IdRichiesta, tipologia.Codice, tipologia.Descrizione); //TODO IMPLEMENTARE CON GAC _setStatoOperativoMezzo.Set(command.ConfermaPartenze.CodiceSede, partenza.Mezzo.Codice, Costanti.MezzoInViaggio, command.ConfermaPartenze.IdRichiesta); foreach (var squadra in partenza.Squadre) { _setStatoSquadra.SetStato(squadra.Codice, command.ConfermaPartenze.IdRichiesta, Costanti.MezzoInViaggio, command.ConfermaPartenze.CodiceSede); } } conferma.CodiceSede = command.ConfermaPartenze.CodiceSede; conferma.IdRichiesta = command.ConfermaPartenze.IdRichiesta; conferma.richiesta = command.ConfermaPartenze.richiesta; return(conferma); }
public TipologieResult Handle(TipologieQuery query) { Log.Debug("Inizio elaborazione Tipologie Handler"); var ListaTipologie = _getTipologie.Get(); Log.Debug("Fine elaborazione Tipologie Handler"); return(new TipologieResult { Tipologie = ListaTipologie }); }
private decimal GeneraValoreAdeguatezzaMezzo(List <string> codiciTipologie, string genere) { foreach (var tipologia in _getTipologieByCodice.Get(codiciTipologie)) { if (tipologia != null) { return(genere switch { "APS" => Convert.ToDecimal(tipologia.AdeguatezzaMezzo.Aps), "AS" => Convert.ToDecimal(tipologia.AdeguatezzaMezzo.As), "AB" => Convert.ToDecimal(tipologia.AdeguatezzaMezzo.Ab), "AV" => Convert.ToDecimal(tipologia.AdeguatezzaMezzo.Av), "AG" => Convert.ToDecimal(tipologia.AdeguatezzaMezzo.Ag), _ => Convert.ToDecimal(tipologia.AdeguatezzaMezzo.Default), });
public SintesiRichiesta Map(RichiestaAssistenza richiesta) { try { var mapConfing = new MapperConfiguration( cfg => cfg.CreateMap <RichiestaAssistenza, SintesiRichiesta>() .ForMember(x => x.CodiceSchedaNue, y => y.MapFrom(z => z.CodNue)) .ForMember(x => x.ZoneEmergenza, y => y.MapFrom(z => z.CodZoneEmergenza)) .ForMember(x => x.ListaEntiIntervenuti, y => y.MapFrom(z => z.CodEntiIntervenuti)) .ForMember(x => x.Tipologie, y => y.MapFrom(_ => _getTipologieByCodice.Get(richiesta.Tipologie))) .ForMember(x => x.Operatore, y => y.MapFrom(_ => _getUtenteById.GetUtenteByCodice(richiesta.CodOperatore))) //.ForMember(x => x.TurnoInserimentoChiamata, y => y.Ignore()) .ForMember(x => x.ListaUtentiInLavorazione, y => y.MapFrom(_ => MapUtenteAttivita(richiesta, "L"))) .ForMember(x => x.ListaUtentiPresaInCarico, y => y.MapFrom(_ => MapUtenteAttivita(richiesta, "P"))) ); _mapper = mapConfing.CreateMapper(); return(_mapper.Map <SintesiRichiesta>(richiesta)); } catch (Exception ex) { return(null); } }
/// <summary> /// Query che estrae tutti i parametri iniziali della Home Page /// </summary> /// <param name="query">Filtri utilizzati per l'estrazione</param> /// <returns>Tutti i parametri iniziali della Home Page</returns> public WelcomeResult Handle(WelcomeQuery query) { Log.Debug("Inizio elaborazione Welcome Handler"); var listaSediAlberate = _getAlberaturaUnitaOperative.ListaSediAlberata(); var pinNodi = new List <PinNodo>(); var pinNodiNoDistaccamenti = new List <PinNodo>(); foreach (var sede in query.CodiceSede) { pinNodi.Add(new PinNodo(sede, true)); pinNodiNoDistaccamenti.Add(new PinNodo(sede, true)); } foreach (var figlio in listaSediAlberate.GetSottoAlbero(pinNodi)) { pinNodi.Add(new PinNodo(figlio.Codice, true)); } FiltroRicercaRichiesteAssistenza filtro = new FiltroRicercaRichiesteAssistenza { SearchKey = "0", idOperatore = query.idOperatore, UnitaOperative = pinNodi.ToHashSet() }; var sintesiRichiesteAssistenzaQuery = new SintesiRichiesteAssistenzaQuery() { CodiciSede = query.CodiceSede, Filtro = filtro }; var filtri = _filtriHandler.Get(); filtri.Distaccamenti = _getDistaccamenti.GetListaDistaccamenti(pinNodiNoDistaccamenti); try { var boxListaInterventi = _boxRichiesteHandler.Get(pinNodi.ToHashSet()); var boxListaMezzi = _boxMezziHandler.Get(query.CodiceSede); var boxListaPersonale = _boxPersonaleHandler.Get(query.CodiceSede); var listaChiamateInCorso = _listaChiamateInCorsoMarkerHandler.Get(pinNodi); var listaSintesi = _sintesiRichiesteAssistenzaHandler.Handle(sintesiRichiesteAssistenzaQuery); var centroMappaMarker = _centroMappaMarkerHandler.GetCentroMappaMarker(query.CodiceSede[0]); var listaFiltri = filtri; var infoNue = _getConteggioSchedeHandler.GetConteggio(query.CodiceSede); var tipologie = _tipologieQueryHandler.Get(); var welcome = new SO115App.Models.Classi.Condivise.Welcome() { BoxListaInterventi = boxListaInterventi, BoxListaMezzi = boxListaMezzi, BoxListaPersonale = boxListaPersonale, ListaChiamateInCorso = listaChiamateInCorso, ListaSintesi = listaSintesi, CentroMappaMarker = centroMappaMarker, ListaFiltri = listaFiltri, InfoNue = infoNue, Tipologie = tipologie }; Log.Debug("Fine elaborazione Welcome Handler"); return(new WelcomeResult() { WelcomeRes = welcome }); } catch (System.Exception ex) { throw; } }
public List <SintesiRichiestaMarker> GetListaRichiesteMarker(SintesiRichiesteAssistenzaMarkerQuery query) { var listaSintesiRichieste = new List <RichiestaAssistenza>(); var pinNodi = new List <PinNodo>(); foreach (var sede in query.CodiciSedi) { pinNodi.Add(new PinNodo(sede, true)); } query.Filtro = new API.Models.Servizi.Infrastruttura.GestioneSoccorso.RicercaRichiesteAssistenza.FiltroRicercaRichiesteAssistenza { UnitaOperative = pinNodi.ToHashSet() }; var listaSediAlberate = _getAlberaturaUnitaOperative.ListaSediAlberata(); foreach (var figlio in listaSediAlberate.GetSottoAlbero(query.Filtro.UnitaOperative)) { listaSintesiRichieste.AddRange(_dbContext.RichiestaAssistenzaCollection.Find(Builders <RichiestaAssistenza> .Filter.Eq(x => x.CodSOCompetente, figlio.Codice)).ToList()); } var listaSintesiRichiesteMarker = new List <SintesiRichiestaMarker>(); foreach (RichiestaAssistenza richiesta in listaSintesiRichieste) { SintesiRichiestaMarker sintesi = new SintesiRichiestaMarker() { Aperta = richiesta.Aperta, Chiusa = richiesta.Chiusa, Codice = richiesta.Codice, CodiceRichiesta = richiesta.CodRichiesta, Descrizione = richiesta.Descrizione, Id = richiesta.Id, InAttesa = richiesta.InAttesa, IstantePrimaAssegnazione = richiesta.IstantePrimaAssegnazione, Localita = richiesta.Localita, Presidiata = richiesta.Presidiata, PrioritaRichiesta = richiesta.PrioritaRichiesta, RilevanteGrave = richiesta.RilevanteGrave, RilevanteStArCu = richiesta.RilevanteStArCu, Sospesa = richiesta.Sospesa, Tipologie = _getTipologie.Get(richiesta.Tipologie) }; listaSintesiRichiesteMarker.Add(sintesi); } List <SintesiRichiestaMarker> listaSintesiRichiestaMarkers; if (listaSintesiRichiesteMarker == null) { return(null); } switch (query.FiltroCentroMappa) { case null: return(listaSintesiRichiesteMarker); default: listaSintesiRichiestaMarkers = listaSintesiRichiesteMarker.Where(richiesta => (richiesta.Localita.Coordinate.Latitudine >= query.FiltroCentroMappa.BottomLeft.Latitudine) && (richiesta.Localita.Coordinate.Latitudine <= query.FiltroCentroMappa.TopRight.Latitudine) && (richiesta.Localita.Coordinate.Longitudine >= query.FiltroCentroMappa.BottomLeft.Longitudine) && (richiesta.Localita.Coordinate.Longitudine <= query.FiltroCentroMappa.TopRight.Longitudine)) .ToList(); break; } if (query.FiltroCentroMappa.FiltroRichieste == null) { return(listaSintesiRichiestaMarkers); } var listaRichiesteFiltrate = new List <SintesiRichiestaMarker>(); if (!query.FiltroCentroMappa.FiltroRichieste.Stato.Any()) { return(query.FiltroCentroMappa.FiltroRichieste.Priorita == null ? listaSintesiRichiestaMarkers : listaSintesiRichiestaMarkers.FindAll(x => x.PrioritaRichiesta >= query.FiltroCentroMappa.FiltroRichieste.Priorita)); } ; foreach (var statoRichiesta in query.FiltroCentroMappa.FiltroRichieste.Stato) { if (statoRichiesta == Costanti.RichiestaAssegnata) { listaRichiesteFiltrate.AddRange( listaSintesiRichiesteMarker.FindAll(x => x.Stato == Costanti.RichiestaAssegnata)); } if (statoRichiesta == Costanti.RichiestaPresidiata) { listaRichiesteFiltrate.AddRange( listaSintesiRichiesteMarker.FindAll(x => x.Stato == Costanti.RichiestaPresidiata)); } if (statoRichiesta == Costanti.Chiamata) { listaRichiesteFiltrate.AddRange( listaSintesiRichiesteMarker.FindAll(x => x.Stato == Costanti.Chiamata)); } if (statoRichiesta == Costanti.RichiestaSospesa) { listaRichiesteFiltrate.AddRange( listaSintesiRichiesteMarker.FindAll(x => x.Stato == Costanti.RichiestaSospesa)); } } return(query.FiltroCentroMappa.FiltroRichieste.Priorita == null ? listaRichiesteFiltrate : listaRichiesteFiltrate.FindAll(x => x.PrioritaRichiesta >= query.FiltroCentroMappa.FiltroRichieste.Priorita)); }
public ComposizionePartenzaAvanzataResult Handle(ComposizionePartenzaAvanzataQuery query) { Log.Debug("Inizio elaborazione Composizione partenza avanzata Handler"); var lstSedi = query.CodiceSede.ToList(); var tipologia90 = _getTipologieByCodice.Get(new List <string> { "90" }).First(); var turnoCorrente = _getTurno.Get(); var turnoPrecedente = _getTurno.Get(turnoCorrente.DataOraInizio.AddMilliseconds(-1)); var turnoSuccessivo = _getTurno.Get(turnoCorrente.DataOraFine.AddMinutes(1)); //REPERISCO I DATI, FACCIO IL MAPPING ED APPLICO I FILTRI (MEZZI E SQUADRE) var lstSquadre = Task.Factory.StartNew(() => _getListaSquadre.Get(lstSedi) .ContinueWith(lstsquadre => { var statiOperativi = _getStatoSquadre.Get(lstSedi); return(lstsquadre.Result.Select(squadra => { if (statiOperativi.Exists(x => x.IdSquadra.Equals(squadra.Id))) { squadra.Stato = MappaStatoSquadraDaStatoMezzo.MappaStato(statiOperativi.Find(x => x.IdSquadra.Equals(squadra.Id)).StatoSquadra); } else { squadra.Stato = Squadra.StatoSquadra.InSede; } var comp = new Classi.Composizione.ComposizioneSquadre() { Id = squadra.Id, Squadra = squadra }; squadra.IndiceOrdinamento = new OrdinamentoSquadre(query.Richiesta).GetIndiceOrdinamento(comp); return comp; })); }) .ContinueWith(lstCompSquadre => FiltraSquadre(query, lstCompSquadre.Result, tipologia90, turnoCorrente, turnoPrecedente, turnoSuccessivo)).Result); var lstMezzi = Task.Factory.StartNew(() => _getPosizioneFlotta.Get(0) .ContinueWith(lstPosizioneFlotta => _getMezziUtilizzabili.Get(lstSedi, posizioneFlotta: lstPosizioneFlotta.Result).Result) .ContinueWith(lstmezzi => //Mapping { var composizioneMezzi = (from mezzo in lstmezzi.Result let kmGen = new Random().Next(1, 60).ToString() let tempoPer = Convert.ToDouble(kmGen.Replace(".", ",")) / 1.75 select new Classi.Composizione.ComposizioneMezzi() { Id = mezzo.Codice, Mezzo = mezzo, Km = kmGen, TempoPercorrenza = Math.Round(tempoPer, 2).ToString(CultureInfo.InvariantCulture), }).ToList(); var mezziPrenotati = _getMezziPrenotati.Get(query.CodiceSede); decimal totaleKM = 0; decimal totaleTempoPercorrenza = 0; string mediaDistanza; string mediaTempoPercorrenza; return(composizioneMezzi.Select(c => { if (c.IstanteScadenzaSelezione < DateTime.Now) { c.IstanteScadenzaSelezione = null; } if (mezziPrenotati.Find(x => x.CodiceMezzo.Equals(c.Mezzo.Codice)) != null) { c.Id = c.Mezzo.Codice; c.IstanteScadenzaSelezione = mezziPrenotati.Find(x => x.CodiceMezzo.Equals(c.Mezzo.Codice)).IstanteScadenzaSelezione; if (c.Mezzo.Stato.Equals("In Sede")) { c.Mezzo.Stato = mezziPrenotati.Find(x => x.CodiceMezzo.Equals(c.Mezzo.Codice)).StatoOperativo; } } //Per i mezzi con coordinate Fake nella property i Km e la TempoPercorrenza vengono impostati i valori medi della collection totaleKM += Convert.ToDecimal(c.Km.Replace(".", ",")); totaleTempoPercorrenza += Convert.ToDecimal(c.TempoPercorrenza.Replace(".", ",")); mediaDistanza = Math.Round(totaleKM / composizioneMezzi.Count(), 2).ToString(CultureInfo.InvariantCulture); mediaTempoPercorrenza = Math.Round(totaleTempoPercorrenza / composizioneMezzi.Count(), 2).ToString(CultureInfo.InvariantCulture); c.Km = mediaDistanza; c.TempoPercorrenza = mediaTempoPercorrenza; c.IndiceOrdinamento = new OrdinamentoMezzi(query.Richiesta, _getTipologieByCodice, _configuration, _memoryCache).GetIndiceOrdinamento(c, c.Mezzo.CoordinateFake); return c; })); }) .ContinueWith(lstCompMezzi => FiltraMezzi(query, lstCompMezzi.Result)).Result); //PREPARO PAGINAZIONE IN BASE AI FILTRI var indexMezzo = query.Filtro.Mezzo != null?lstMezzi.Result.FindIndex(c => c.Mezzo.Codice.Equals(query.Filtro.Mezzo.Codice)) : 0; var indexSquadra = query.Filtro.Squadre != null?lstSquadre.Result.FindIndex(c => c.Squadra.Codice.Equals(query.Filtro.Squadre.FirstOrDefault().Codice)) : 0; if (indexMezzo != 0) { query.Filtro.MezziPagination.Page = (indexMezzo + 1) / query.Filtro.MezziPagination.PageSize + 1; } if (indexSquadra != 0) { query.Filtro.SquadrePagination.Page = (indexSquadra + 1) / query.Filtro.SquadrePagination.PageSize + 1; } //COMPONGO IL DTO E FACCIO LA PAGINAZIONE var composizioneAvanzata = new Classi.Composizione.ComposizionePartenzaAvanzata() { ComposizioneMezziDataArray = lstMezzi.Result .Skip(query.Filtro.MezziPagination.PageSize * (query.Filtro.MezziPagination.Page - 1)) .Take(query.Filtro.MezziPagination.PageSize).ToList(), ComposizioneSquadreDataArray = lstSquadre.Result .Skip(query.Filtro.SquadrePagination.PageSize * (query.Filtro.SquadrePagination.Page - 1)) .Take(query.Filtro.SquadrePagination.PageSize).ToList(), MezziPagination = new Paginazione() { Page = query.Filtro.MezziPagination.Page, PageSize = query.Filtro.MezziPagination.PageSize, TotalItems = lstMezzi.Result.Count }, SquadrePagination = new Paginazione() { Page = query.Filtro.SquadrePagination.Page, PageSize = query.Filtro.SquadrePagination.PageSize, TotalItems = lstSquadre.Result.Count } }; Log.Debug("Fine elaborazione Composizione partenza avanzata Handler"); return(new ComposizionePartenzaAvanzataResult() { ComposizionePartenzaAvanzata = composizioneAvanzata }); }