Beispiel #1
0
        public void Handle(PresaInCaricoCommand command)
        {
            var richiesta = _getRichiestaById.GetById(command.IdRichiesta);
            var utente    = _getUtenteById.GetUtenteByCodice(command.IdUtente);

            var nominativoPresaInCarico = utente.Nome + "." + utente.Cognome;

            if (richiesta.UtPresaInCarico != null)
            {
                new InizioPresaInCarico(richiesta, DateTime.UtcNow, richiesta.CodOperatore);

                if (!richiesta.UtPresaInCarico.Contains(nominativoPresaInCarico))
                {
                    richiesta.UtPresaInCarico.Add(nominativoPresaInCarico);
                }
            }
            else
            {
                richiesta.UtPresaInCarico = new List <string>
                {
                    nominativoPresaInCarico
                };
            }

            _updateRichiestaAssistenza.UpDate(richiesta);
        }
Beispiel #2
0
        /// <summary>
        ///   metodo che utilizza la query in firma per effettuare la ricerca degli operatori a
        ///   seconda dei parametri immessi nella query stessa
        /// </summary>
        /// <param name="query">la query in firma</param>
        /// <returns>ListaOperatoriResult</returns>
        public ListaOperatoriResult Handle(ListaOperatoriQuery query)
        {
            var utente = _getUtenteById.GetUtenteByCodice(query.IdUtente);
            var listaCodiciSedeRuoloAdmin = new List <string>();
            var sediAlberate = _getAlberaturaUnitaOperative.ListaSediAlberata();
            var listaPin     = new List <PinNodo>();

            foreach (var ruolo in utente.Ruoli.FindAll(x => x.Descrizione.Equals("Amministratore")))
            {
                listaCodiciSedeRuoloAdmin.Add(ruolo.CodSede);
                if (ruolo.Ricorsivo)
                {
                    listaPin.Add(new PinNodo(ruolo.CodSede, ruolo.Ricorsivo));
                    foreach (var figli in sediAlberate.GetSottoAlbero(listaPin))
                    {
                        listaCodiciSedeRuoloAdmin.Add(figli.Codice);
                    }
                }
            }
            var utentiByCodSede = _getUtenteByCodiciSedi.Get(listaCodiciSedeRuoloAdmin, query.Filters.Search);

            utentiByCodSede.Reverse();
            var utentiPaginati = utentiByCodSede.Skip((query.Pagination.Page - 1) * query.Pagination.PageSize).Take(query.Pagination.PageSize).ToList();

            query.Pagination.TotalItems = utentiByCodSede.Count;
            return(new ListaOperatoriResult
            {
                DataArray = utentiPaginati,
                Pagination = query.Pagination
            });
        }
Beispiel #3
0
 /// <summary>
 ///   metodo che utilizza la query in firma per effettuare la ricerca degli operatori a
 ///   seconda dei parametri immessi nella query stessa
 /// </summary>
 /// <param name="query">la query in firma</param>
 /// <returns>ListaOperatoriResult</returns>
 public DettaglioUtenteResult Handle(DettaglioUtenteQuery query)
 {
     return(new DettaglioUtenteResult
     {
         DetUtente = _getUtenteById.GetUtenteByCodice(query.IdUtente)
     });
 }
Beispiel #4
0
        public IEnumerable <AuthorizationResult> Authorize(MergeSchedeNueCommand command)
        {
            var user = _getUtenteById.GetUtenteByCodice(command.IdUtente);

            if (_currentUser.Identity.IsAuthenticated)
            {
                if (user == null)
                {
                    yield return(new AuthorizationResult(Costanti.UtenteNonAutorizzato));
                }
                else
                {
                    foreach (var ruolo in user.Ruoli)
                    {
                        if (!_getAutorizzazioni.GetAutorizzazioniUtente(user.Ruoli, command.SchedaNue.CodiceSede, Costanti.GestoreChiamate))
                        {
                            yield return(new AuthorizationResult(Costanti.UtenteNonAutorizzato));
                        }
                    }
                }
            }
            else
            {
                yield return(new AuthorizationResult(Costanti.UtenteNonAutorizzato));
            }
        }
Beispiel #5
0
        /// <summary>
        ///   Metodo di esecuzione della query
        /// </summary>
        /// <param name="query">Il DTO di ingresso della query</param>
        /// <returns>Il DTO di uscita della query</returns>
        public ListaMezziInServizioResult Handle(ListaMezziInServizioQuery query)
        {
            var Utente = _getUtenteById.GetUtenteByCodice(query.IdOperatore);
            var listaSediUtenteAbilitate = Utente.Ruoli.Where(x => x.Descrizione.Equals(Costanti.GestoreRichieste)).ToHashSet();
            var listaSediAlberate        = _getAlberaturaUnitaOperative.ListaSediAlberata();
            var pinNodi = new List <PinNodo>();

            /// <summary>
            ///Faccio gestire esclusivamente i Mezzi in Servizio delle Sedi nel quale l'operatore ha il ruolo di Gestore Richieste
            /// </summary>
            foreach (var sede in listaSediUtenteAbilitate)
            {
                pinNodi.Add(new PinNodo(sede.CodSede, true));
            }

            /// <summary>
            ///   Aggiungo alla Sede principale gli eventuali sotto Nodi
            /// </summary>
            foreach (var figlio in listaSediAlberate.GetSottoAlbero(pinNodi))
            {
                pinNodi.Add(new PinNodo(figlio.Codice, true));
            }

            var listaCodiciSediGestite = pinNodi.Select(x => x.Codice).ToArray();

            var listaMezzi = _getListaMezzi.Get(listaCodiciSediGestite);

            return(new ListaMezziInServizioResult()
            {
                ListaMezzi = listaMezzi
            });
        }
Beispiel #6
0
        /// <summary>
        ///   Metodo di esecuzione della query
        /// </summary>
        /// <param name="query">Il DTO di ingresso della query</param>
        /// <returns>Il DTO di uscita della query</returns>
        public ListaEventiResult Handle(ListaEventiQuery query)
        {
            Log.Debug("Inizio elaborazione Lista Eventi Handler");

            var eventi       = _iEventi.Get(query);
            var eventiMapper = new List <MapperEventoSuEventoGui>();

            foreach (var evento in eventi)
            {
                var operatore    = _getUtenteById.GetUtenteByCodice(evento.CodiceFonte);
                var eventoMapper = new MapperEventoSuEventoGui
                {
                    NomeClasseEvento = MapEvento(evento),
                    IstanteEvento    = evento.Istante,
                    Targa            = MapTarghe(evento),
                    Note             = MapNote(evento),
                    Operatore        = operatore.Nome + " " + operatore.Cognome
                };
                eventiMapper.Add(eventoMapper);
            }

            Log.Debug("Fine elaborazione Lista Eventi Handler");

            return(new ListaEventiResult()
            {
                Eventi = eventiMapper.OrderByDescending(x => x.IstanteEvento).ToList()
            });
        }
        public void Delete(string idUtente)
        {
            var utente     = _getUtente.GetUtenteByCodice(idUtente);
            var nominativo = utente.Nome + " " + utente.Cognome;

            _dbContext.ChiamateInCorsoCollection.DeleteMany(Builders <ChiamateInCorso> .Filter.Eq(x => x.DescrizioneOperatore, nominativo));
        }
Beispiel #8
0
        public void Handle(RimozioneInLavorazioneCommand command)
        {
            var richiesta = _getRichiestaById.GetById(command.IdRichiesta);
            var utente    = _getUtenteById.GetUtenteByCodice(command.IdUtente);
            var attivita  = new AttivitaUtente();

            var nominativo = utente.Nome + "." + utente.Cognome;

            richiesta.UtInLavorazione.RemoveAll(x => x == nominativo);

            _updateRichiestaAssistenza.UpDate(richiesta);
        }
Beispiel #9
0
 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.CodiceRichiesta, y => y.MapFrom(z => z.CodRichiesta))
             .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").ToHashSet()))
             .ForMember(x => x.ListaUtentiPresaInCarico, y => y.MapFrom(_ => MapUtenteAttivita(richiesta, "P").ToHashSet()))
             );
         _mapper = mapConfing.CreateMapper();
         return(_mapper.Map <SintesiRichiesta>(richiesta));
     }
     catch (Exception ex)
     {
         return(null);
     }
 }
Beispiel #10
0
        /// <summary>
        ///   Metodo di esecuzione della query
        /// </summary>
        /// <param name="query">Il DTO di ingresso della query</param>
        /// <returns>Il DTO di uscita della query</returns>
        public SintesiRichiesteAssistenzaResult Handle(SintesiRichiesteAssistenzaQuery query)
        {
            Log.Debug("Inizio elaborazione Lista Sintesi Richieste Assistenza Handler");

            var listaSediUtenteAbilitate = _getUtenteById.GetUtenteByCodice(query.Filtro.idOperatore).ListaUnitaOperativeAbilitate.ToHashSet();
            var listaSediAlberate        = _getAlberaturaUnitaOperative.ListaSediAlberata();
            var pinNodi = new List <PinNodo>();

            foreach (var sede in query.CodiciSede)
            {
                pinNodi.Add(new PinNodo(sede, true));
            }

            foreach (var figlio in listaSediAlberate.GetSottoAlbero(pinNodi))
            {
                pinNodi.Add(new PinNodo(figlio.Codice, true));
            }

            query.Filtro.UnitaOperative = pinNodi.ToHashSet();
            if (query.Filtro.IncludiRichiesteAperte == false && query.Filtro.IncludiRichiesteChiuse == false)
            {
                query.Filtro.IncludiRichiesteAperte = true;
                query.Filtro.IncludiRichiesteChiuse = true;
            }

            var listaSintesi         = _iGetListaSintesi.GetListaSintesiRichieste(query.Filtro);
            var listaSintesiPaginata = new List <SintesiRichiesta>();

            if (query.Filtro.Page > 0 && query.Filtro.PageSize > 0)
            {
                listaSintesiPaginata = listaSintesi.Skip((query.Filtro.Page - 1) * query.Filtro.PageSize).Take(query.Filtro.PageSize).ToList();
            }

            Log.Debug("Fine elaborazione Lista Sintesi Richieste Assistenza Handler");

            return(new SintesiRichiesteAssistenzaResult()
            {
                SintesiRichiesta = (query.Filtro.Page > 0 && query.Filtro.PageSize > 0) ? listaSintesiPaginata : listaSintesi,
                Pagination = new Paginazione
                {
                    Page = query.Filtro.Page,
                    PageSize = query.Filtro.PageSize,
                    TotalItems = listaSintesi.Count
                }
            });
        }
Beispiel #11
0
        /// <summary>
        ///   Query che estrae i valori dei Box presenti in Home Page
        /// </summary>
        /// <param name="query">Filtri utilizzati per l'estrazione</param>
        /// <returns>Elenco dei mezzi disponibili</returns>
        public NavbarResult Handle(NavbarQuery query)
        {
            Log.Debug("Inizio elaborazione Informazioni Navbar Handler");

            var navbars = new SO115App.API.Models.Classi.NavBar.Navbar
            {
                ListaSedi = _alberaturaUO.ListaSediAlberata(),
                Utente    = _getUtenteById.GetUtenteByCodice(query.IdUtente)
            };

            Log.Debug("Fine elaborazione Informazioni Navbar Handler");

            return(new NavbarResult()
            {
                Navbar = navbars
            });
        }
        public GetSchedeFiltrateResult Handle(GetSchedeFiltrateQuery query)
        {
            string codiceFiscale = null;

            if (query.Filtro.CercaPerOperatore == true)
            {
                var utente = _getUtenteBy.GetUtenteByCodice(query.Filtro.IdUtente);
                codiceFiscale = utente.CodiceFiscale;
            }

            var listaSchedeContatto = _getSchedeFiltrate.Get(query.Filtro.TestoLibero, query.Filtro.Gestita, codiceFiscale, query.Filtro.RangeVisualizzazione, query.CodiceSede).OrderByDescending(x => !x.Gestita).ThenByDescending(x => x.Priorita).ThenBy(x => x.DataInserimento).ToList();

            return(new GetSchedeFiltrateResult()
            {
                SchedeContatto = listaSchedeContatto
            });
        }
Beispiel #13
0
        public TrasferimentiChiamateResult Handle(TrasferimentiChiamateQuery query)
        {
            //GESTIONE RICORSIVITA'
            var lstPin = new List <string>();

            foreach (var sede in query.CodiciSede)
            {
                lstPin.AddRange(_getGerarchia.GetGerarchiaSede(sede).ToList());
            }

            //MAPPING
            var lstTrasferimenti = _getTrasferimenti.GetAll(lstPin.ToArray(), query.Filters.Search)
                                   .Select(c => new TrasferimentoChiamataFull()
            {
                Id          = c.Id,
                CodChiamata = c.CodChiamata,
                SedeA       = _getDistaccamentoByCodiceSede.Get(c.CodSedeA).Descrizione,
                SedeDa      = _getDistaccamentoByCodiceSede.Get(c.CodSedeDa).Descrizione,
                Data        = c.Data,
                Operatore   = _getUtenteById.GetUtenteByCodice(c.IdOperatore)
            }).ToList();

            //PAGINAZIONE
            List <TrasferimentoChiamataFull> trasferimentiPaginati = null;

            if (query.Pagination != default)
            {
                lstTrasferimenti.Reverse();
                trasferimentiPaginati       = lstTrasferimenti.Skip((query.Pagination.Page - 1) * query.Pagination.PageSize).Take(query.Pagination.PageSize).ToList();
                query.Pagination.TotalItems = lstTrasferimenti.Count;
            }
            else
            {
                trasferimentiPaginati = lstTrasferimenti;
            }

            //ORDINAMENTO
            return(new TrasferimentiChiamateResult()
            {
                DataArray = trasferimentiPaginati.OrderByDescending(c => c.Data).ToList(),
                Pagination = query.Pagination
            });
        }
Beispiel #14
0
        public void Handle(AddTrasferimentoCommand command)
        {
            //GESTIONE RICHIESTA E TRASFERIMENTO
            var richiesta = _getRichiestaById.GetByCodice(command.TrasferimentoChiamata.CodChiamata);

            command.TrasferimentoChiamata.CodSedeDa = richiesta.CodSOCompetente;
            richiesta.CodSOCompetente = command.TrasferimentoChiamata.CodSedeA;
            command.TrasferimentoChiamata.IdOperatore = command.IdOperatore;
            command.TrasferimentoChiamata.Data        = DateTime.Now;

            var sedeDa = _getSede.Get(command.TrasferimentoChiamata.CodSedeDa).Descrizione;
            var sedeA  = _getSede.Get(command.TrasferimentoChiamata.CodSedeA).Descrizione;

            var codSedeUtente = _getUtenteById.GetUtenteByCodice(command.TrasferimentoChiamata.IdOperatore).Sede.Descrizione;

            new TrasferimentoChiamata(richiesta, command.TrasferimentoChiamata.Data, command.IdOperatore, sedeDa, sedeA, codSedeUtente);

            //DB SYNC
            _addTrasferimento.Add(command.TrasferimentoChiamata, richiesta);
        }
        public void Handle(MessaInLavorazioneCommand command)
        {
            var richiesta = _getRichiestaById.GetByCodice(command.IdRichiesta);
            var utente    = _getUtenteById.GetUtenteByCodice(command.IdUtente);
            var nominativoInLavorazione = utente.Nome + "." + utente.Cognome;

            if (richiesta.UtInLavorazione != null)
            {
                if (!richiesta.UtInLavorazione.Contains(nominativoInLavorazione))
                {
                    richiesta.UtInLavorazione.Add(nominativoInLavorazione);
                }
            }
            else
            {
                richiesta.UtInLavorazione = new List <string>();
                richiesta.UtInLavorazione.Add(nominativoInLavorazione);
            }


            this._upDateRichiestaAssistenza.UpDate(richiesta);
        }
Beispiel #16
0
        /// <summary>
        ///   metodo che utilizza la query in firma per effettuare la ricerca degli operatori a
        ///   seconda dei parametri immessi nella query stessa
        /// </summary>
        /// <param name="query">la query in firma</param>
        /// <returns>ListaOperatoriResult</returns>
        public ListaOperatoriResult Handle(ListaOperatoriQuery query)
        {
            //var codiciSede = query.CodiciSede.Split(',');
            var utente = _getUtenteById.GetUtenteByCodice(query.IdUtente);
            var listaCodiciSedeRuoloAdmin = new List <string>();
            var sediAlberate = _getAlberaturaUnitaOperative.ListaSediAlberata();
            var listaPin     = new List <PinNodo>();

            foreach (var ruolo in utente.Ruoli.FindAll(x => x.Descrizione.Equals("Amministratore")))
            {
                listaCodiciSedeRuoloAdmin.Add(ruolo.CodSede);
                if (ruolo.Ricorsivo)
                {
                    listaPin.Add(new PinNodo(ruolo.CodSede, ruolo.Ricorsivo));
                    foreach (var figli in sediAlberate.GetSottoAlbero(listaPin))
                    {
                        listaCodiciSedeRuoloAdmin.Add(figli.Codice);
                    }
                }
            }

            var utentiByCodSede = _getUtenteByCodiciSedi.Get(listaCodiciSedeRuoloAdmin, query.Filters.Search);

            if (query.Filters.CodSede != null)
            {
                List <Utente> listaFiltrata = new List <Utente>();
                foreach (string sede in query.Filters.CodSede)
                {
                    listaFiltrata.AddRange(utentiByCodSede.FindAll(x => x.Ruoli.Any(y => y.CodSede.Equals(sede))).ToList());
                }

                utentiByCodSede = listaFiltrata.ToHashSet().ToList();
            }

            utentiByCodSede.Reverse();
            var utentiPaginati = utentiByCodSede.Skip((query.Pagination.Page - 1) * query.Pagination.PageSize).Take(query.Pagination.PageSize).ToList();

            query.Pagination.TotalItems = utentiByCodSede.Count;

            List <Role> listaSediPresenti = new List <Role>();

            query.Filters.Search = null;
            foreach (var UtenteInLista in _getUtenteByCodiciSedi.Get(listaCodiciSedeRuoloAdmin, query.Filters.Search))
            {
                foreach (var ruolo in UtenteInLista.Ruoli)
                {
                    Role ruoloToAdd = new Role("", ruolo.CodSede)
                    {
                        DescSede = ruolo.DescSede
                    };

                    if (listaSediPresenti.Count > 0)
                    {
                        if (listaSediPresenti.Find(x => x.CodSede.Equals(ruoloToAdd.CodSede)) == null)
                        {
                            listaSediPresenti.Add(ruoloToAdd);
                        }
                    }
                    else
                    {
                        listaSediPresenti.Add(ruoloToAdd);
                    }
                }
            }

            return(new ListaOperatoriResult
            {
                DataArray = utentiPaginati,
                Pagination = query.Pagination,
                ListaSediPresenti = listaSediPresenti.ToHashSet().ToList()
            });
        }
Beispiel #17
0
        public void Handle(AddInterventoCommand command)
        {
            var Competenze    = _getCompetenze.GetCompetenzeByCoordinateIntervento(command.Chiamata.Localita.Coordinate).ToHashSet();
            var lstCompetenze = new List <Distaccamento>();

            Competenze.ToList().ForEach(c => lstCompetenze.Add(_getDistaccamento.Get(c).Result));

            if (Competenze.ToList()[0] == null)
            {
                throw new Exception(Costanti.CoordinateErrate);
            }

            var sedeRichiesta     = command.CodiceSede;
            var prioritaRichiesta = (RichiestaAssistenza.Priorita)command.Chiamata.PrioritaRichiesta;
            var codiceChiamata    = _generaCodiceRichiesta.GeneraCodiceChiamata(sedeRichiesta, DateTime.UtcNow.Year);

            command.Chiamata.Codice = codiceChiamata;
            var listaCodiciTipologie = new List <string>();
            var utentiInLavorazione  = new List <string>();
            var utentiPresaInCarico  = new List <string>();

            foreach (var tipologia in command.Chiamata.Tipologie)
            {
                listaCodiciTipologie.Add(tipologia.Codice);
            }
            if (command.Chiamata.ListaUtentiInLavorazione != null)
            {
                foreach (var utente in command.Chiamata.ListaUtentiInLavorazione)
                {
                    utentiInLavorazione.Add(utente.Nominativo);
                }
            }
            if (command.Chiamata.ListaUtentiPresaInCarico != null)
            {
                foreach (var utente in command.Chiamata.ListaUtentiPresaInCarico)
                {
                    utentiPresaInCarico.Add(utente.Nominativo);
                }
            }

            var richiesta = new RichiestaAssistenza()
            {
                Tipologie          = listaCodiciTipologie,
                CodZoneEmergenza   = command.Chiamata.ZoneEmergenza,
                Richiedente        = command.Chiamata.Richiedente,
                Localita           = command.Chiamata.Localita,
                Descrizione        = command.Chiamata.Descrizione,
                Codice             = codiceChiamata,
                TrnInsChiamata     = $"Turno {_getTurno.Get().Codice.Substring(0, 1)}",
                TipoTerreno        = command.Chiamata.TipoTerreno,
                ObiettivoSensibile = command.Chiamata.ObiettivoSensibile,
                UtInLavorazione    = utentiInLavorazione,
                UtPresaInCarico    = utentiPresaInCarico,
                NotePubbliche      = command.Chiamata.NotePubbliche,
                NotePrivate        = command.Chiamata.NotePrivate,
                CodUOCompetenza    = Competenze.ToArray(),
                Competenze         = lstCompetenze.Select(d => new Sede(d.CodSede.ToString(), d.DescDistaccamento, d.Indirizzo, d.Coordinate, null, null, null, null, null)).ToList(),
                CodOperatore       = command.CodUtente,
                CodSOCompetente    = command.CodiceSede,
                CodEntiIntervenuti = command.Chiamata.listaEnti != null?command.Chiamata.listaEnti.Select(c => c.ToString()).ToList() : null
            };

            if (command.Chiamata.Stato == Costanti.RichiestaChiusa)
            {
                new ChiusuraRichiesta("", richiesta, DateTime.UtcNow, command.CodUtente);
            }

            if (command.Chiamata.Tags != null)
            {
                foreach (var t in command.Chiamata.Tags)
                {
                    richiesta.Tags.Add(t);
                }
            }

            new Telefonata(richiesta, command.Chiamata.Richiedente.Telefono, DateTime.UtcNow, command.CodUtente)
            {
                NominativoChiamante = command.Chiamata.Richiedente.Nominativo,
                Motivazione         = command.Chiamata.Motivazione,
                NotePrivate         = command.Chiamata.NotePrivate,
                NotePubbliche       = command.Chiamata.NotePubbliche,
                NumeroTelefono      = command.Chiamata.Richiedente.Telefono,
                Esito = command.Chiamata.Azione.ToString(),
                CodiceSchedaContatto = command.Chiamata.CodiceSchedaNue
            };

            new AssegnazionePriorita(richiesta, prioritaRichiesta, DateTime.UtcNow.AddMilliseconds(1.0), command.CodUtente);

            if (command.Chiamata.RilevanteGrave || command.Chiamata.RilevanteStArCu)
            {
                new MarcaRilevante(richiesta, DateTime.UtcNow.AddMilliseconds(1.5), command.CodUtente, "", command.Chiamata.RilevanteGrave,
                                   command.Chiamata.RilevanteStArCu);
            }

            if (command.Chiamata.Azione.Equals(Azione.FalsoAllarme) || command.Chiamata.Azione.Equals(Azione.ChiusuraForzata) ||
                command.Chiamata.Azione.Equals(Azione.InterventoDuplicato) || command.Chiamata.Azione.Equals(Azione.InterventoNonPiuNecessario))
            {
                command.Chiamata.Stato = Costanti.RichiestaChiusa;
                new ChiusuraRichiesta("", richiesta, DateTime.UtcNow.AddMilliseconds(1.0), command.CodUtente);
            }

            if (command.Chiamata.CodiceSchedaNue != null)
            {
                var codiceFiscaleOperatore = _getUtenteById.GetUtenteByCodice(command.CodUtente).CodiceFiscale;
                _setStatoGestioneSchedaContatto.Gestita(command.Chiamata.CodiceSchedaNue, command.CodiceSede, codiceFiscaleOperatore, true);
            }

            _saveRichiestaAssistenza.Save(richiesta);
        }
        public void Handle(SetSchedaGestitaCommand command)
        {
            var codiceFiscaleOperatore = _getUtenteById.GetUtenteByCodice(command.IdUtente).CodiceFiscale;

            _setGestita.Gestita(command.CodiceScheda, command.CodiceSede, codiceFiscaleOperatore, command.Gestita);
        }
Beispiel #19
0
        public async Task SendNotification(AddTrasferimentoCommand command)
        {
            var mioComandoDes = _getSede.Get(command.CodiciSede[0]).Descrizione;
            var mioOperatore  = _getUtenteById.GetUtenteByCodice(command.TrasferimentoChiamata.IdOperatore);
            var totalItemsA   = _getTrasferimenti.Count(command.TrasferimentoChiamata.CodSedeA);
            var totalItemsDa  = _getTrasferimenti.Count(command.TrasferimentoChiamata.CodSedeDa);
            var richiesta     = _getRichiesta.Handle(new GetSintesiRichiestaAssistenzaQuery()
            {
                CodiceRichiesta = command.TrasferimentoChiamata.CodChiamata,
                CodiceSede      = command.TrasferimentoChiamata.CodSedeA
            }).SintesiRichiesta;

            //GESTIONE SEDI A
            var SediDaNotificareAdd = _getGerarchiaToSend.Get(command.TrasferimentoChiamata.CodSedeA);

            foreach (var sede in SediDaNotificareAdd)
            {
                var boxInterventi = _boxRichiesteHandler.Handle(new BoxRichiesteQuery()
                {
                    CodiciSede = new string[] { sede }
                }).BoxRichieste;

                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxInterventi", boxInterventi);

                await _notificationHubContext.Clients.Group(sede).SendAsync("SaveAndNotifySuccessChiamata", richiesta);

                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyAddTrasferimento", new
                {
                    Data = new TrasferimentoChiamataFull()
                    {
                        Id          = command.TrasferimentoChiamata.Id,
                        CodChiamata = command.TrasferimentoChiamata.CodChiamata,
                        Data        = command.TrasferimentoChiamata.Data,
                        SedeA       = _getSede.Get(command.TrasferimentoChiamata.CodSedeA).Descrizione,
                        SedeDa      = mioComandoDes,
                        Operatore   = mioOperatore
                    },
                    Pagination = new Paginazione()
                    {
                        TotalItems = totalItemsA
                    }
                });

                //NOTIFICA NAVBAR
                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyNavBar", new Notifica()
                {
                    Titolo      = "Hai una nuova chiamata",
                    Descrizione = $"La chiamata {richiesta.Codice} è stata trasferita dal {mioComandoDes} alla tua sede",
                    Tipo        = TipoNotifica.TrasferimentoChiamata,
                    Data        = command.TrasferimentoChiamata.Data
                });
            }

            //GESTIONE SEDI DA
            var SediDaNotificareDelete = _getGerarchiaToSend.Get(command.TrasferimentoChiamata.CodSedeDa);

            foreach (var sede in SediDaNotificareDelete)
            {
                var boxInterventi = _boxRichiesteHandler.Handle(new BoxRichiesteQuery()
                {
                    CodiciSede = new string[] { sede }
                }).BoxRichieste;

                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxInterventi", boxInterventi);

                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyDeleteChiamata", richiesta.Id);

                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyAddTrasferimento", new
                {
                    Data = new TrasferimentoChiamataFull()
                    {
                        Id          = command.TrasferimentoChiamata.Id,
                        CodChiamata = command.TrasferimentoChiamata.CodChiamata,
                        Data        = command.TrasferimentoChiamata.Data,
                        SedeA       = _getSede.Get(command.TrasferimentoChiamata.CodSedeA).Descrizione,
                        SedeDa      = mioComandoDes,
                        Operatore   = mioOperatore
                    },
                    Pagination = new Paginazione()
                    {
                        TotalItems = totalItemsDa
                    }
                });
            }
        }
Beispiel #20
0
        /// <summary>
        ///   Query che estrae i valori dei Box presenti in Home Page
        /// </summary>
        /// <param name="command">Filtri utilizzati per l'estrazione</param>
        /// <returns>Elenco dei mezzi disponibili</returns>
        public void Handle(ConfermaPartenzeCommand command)
        {
            /// preparazione del DTO
            var richiesta            = _getRichiestaById.GetByCodice(command.ConfermaPartenze.IdRichiesta);
            var richiestaDaSganciare = new RichiestaAssistenza();
            var utente = _getUtenteById.GetUtenteByCodice(command.ConfermaPartenze.IdOperatore);

            var attivita = new AttivitaUtente();
            var idComposizioneDaSganciare = 0;

            ///Gestione Sganciamento
            if (command.ConfermaPartenze.IdRichiestaDaSganciare != null)
            {
                richiestaDaSganciare = _getRichiestaById.GetByCodice(command.ConfermaPartenze.IdRichiestaDaSganciare);

                foreach (var composizione in richiestaDaSganciare.Eventi.Where(x => x is ComposizionePartenze).ToList())
                {
                    if (((ComposizionePartenze)composizione).Partenza.Mezzo.Codice.Equals(command.ConfermaPartenze.IdMezzoDaSganciare))
                    {
                        ((ComposizionePartenze)composizione).Partenza.Sganciata = true;
                    }

                    idComposizioneDaSganciare++;
                }

                foreach (var composizione in richiestaDaSganciare.Partenze)
                {
                    if (composizione.Partenza.Mezzo.Codice.Equals(command.ConfermaPartenze.IdMezzoDaSganciare))
                    {
                        composizione.Partenza.Sganciata = true;
                    }
                }

                if (idComposizioneDaSganciare == 1)
                {
                    richiestaDaSganciare.SincronizzaStatoRichiesta(Costanti.RichiestaSospesa, richiestaDaSganciare.StatoRichiesta, richiestaDaSganciare.CodOperatore, "");
                }

                //new RevocaPerRiassegnazione(richiesta, richiestaDaSganciare, command.ConfermaPartenze.IdMezzoDaSganciare, DateTime.UtcNow, richiesta.CodOperatore);
                _updateRichiestaAssistenza.UpDate(richiestaDaSganciare);
            }

            if (richiesta.Eventi.Where(x => x is InizioPresaInCarico).ToList().Count == 0)
            {
                new InizioPresaInCarico(richiesta, DateTime.UtcNow, utente.Id);
            }

            foreach (var partenza in command.ConfermaPartenze.Partenze)
            {
                new ComposizionePartenze(richiesta, DateTime.UtcNow, utente.Id, false)
                {
                    Partenza = partenza
                };
            }

            richiesta.SincronizzaStatoRichiesta(Costanti.RichiestaAssegnata, richiesta.StatoRichiesta, utente.Id, "");

            //richiesta.Id = command.ConfermaPartenze.IdRichiesta;
            command.ConfermaPartenze.richiesta = richiesta;

            var sedeRichiesta = command.ConfermaPartenze.CodiceSede;

            richiesta.CodRichiesta = _generaCodiceRichiesta.Genera(sedeRichiesta, DateTime.UtcNow.Year);

            foreach (var partenza in command.ConfermaPartenze.Partenze)
            {
                partenza.Mezzo.IdRichiesta = richiesta.CodRichiesta;
            }
            var nominativo = utente.Nome + "." + utente.Cognome;

            if (richiesta.UtPresaInCarico != null)
            {
                richiesta.UtPresaInCarico.Add(nominativo);
            }
            else
            {
                richiesta.UtPresaInCarico = new List <String>
                {
                    nominativo
                };
            }

            foreach (var partenze in command.ConfermaPartenze.Partenze)
            {
                foreach (var squadra in partenze.Squadre)
                {
                    squadra.Stato = MappaStatoSquadraDaStatoMezzo.MappaStato(partenze.Mezzo.Stato);
                }
            }
            var confermaPartenze = _updateConfermaPartenze.Update(command);

            command.ConfermaPartenze.CodiceSede = confermaPartenze.CodiceSede;
        }