public void Handle(MessaInLavorazioneCommand command)
        {
            RichiestaAssistenza richiesta = _getRichiestaById.Get(command.IdRichiesta);
            Utente         utente         = _getUtenteById.GetUtenteById(command.IdUtente);
            AttivitaUtente attivita       = new AttivitaUtente();

            attivita.IdUtente           = utente.Id;
            attivita.Nominativo         = utente.Nome + " " + utente.Cognome;
            attivita.DataInizioAttivita = DateTime.UtcNow;

            if (richiesta.ListaUtentiInLavorazione != null)
            {
                richiesta.ListaUtentiInLavorazione.Add(attivita);
            }
            else
            {
                richiesta.ListaUtentiInLavorazione = new List <AttivitaUtente>();
                richiesta.ListaUtentiInLavorazione.Add(attivita);
            }

            if (command.Chiamata.ListaUtentiInLavorazione != null)
            {
                command.Chiamata.ListaUtentiInLavorazione.Add(attivita);
            }
            else
            {
                command.Chiamata.ListaUtentiInLavorazione = new List <AttivitaUtente>();
                command.Chiamata.ListaUtentiInLavorazione.Add(attivita);
            }

            richiesta.Id = richiesta.Codice;

            this._upDateRichiestaAssistenza.UpDate(richiesta);
        }
Пример #2
0
        private List <AttivitaUtente> MapUtenteAttivita(RichiestaAssistenza richiesta, string Tipo)
        {
            List <AttivitaUtente> ListaAttivita = new List <AttivitaUtente>();

            if (Tipo.Equals("P"))
            {
                foreach (var presaInCarico in richiesta.UtPresaInCarico)
                {
                    AttivitaUtente attivita = new AttivitaUtente()
                    {
                        Nominativo = presaInCarico.Replace(".", " ")
                    };
                    ListaAttivita.Add(attivita);
                }
                ;
            }
            else
            {
                foreach (var lavorazione in richiesta.UtInLavorazione)
                {
                    AttivitaUtente attivita = new AttivitaUtente()
                    {
                        Nominativo = lavorazione.Replace(".", " ")
                    };
                    ListaAttivita.Add(attivita);
                }
                ;
            }

            return(ListaAttivita);
        }
Пример #3
0
        private List <AttivitaUtente> MapUtenteAttivita(RichiestaAssistenza richiesta, string Tipo)
        {
            List <AttivitaUtente> ListaAttivita = new List <AttivitaUtente>();

            if (Tipo.Equals("P"))
            {
                foreach (var evento in richiesta.Eventi)
                {
                    if (!(evento is Telefonata) && !(evento is AssegnazionePriorita))
                    {
                        var utente = _getUtenteById.GetUtenteByCodice(evento.CodiceFonte);

                        AttivitaUtente attivita = new AttivitaUtente()
                        {
                            Nominativo         = utente.Nome + " " + utente.Cognome,
                            DataInizioAttivita = evento.Istante,
                            IdUtente           = evento.CodiceFonte
                        };

                        if (evento is AnnullamentoPresaInCarico)
                        {
                            var attivitaToDelete = ListaAttivita.Where(x => x.Nominativo.Equals(attivita.Nominativo)).ToList();
                            if (attivitaToDelete.Count > 0)
                            {
                                ListaAttivita.Remove(attivitaToDelete[0]);
                            }
                        }
                        else if (ListaAttivita.Where(x => x.Nominativo.Equals(attivita.Nominativo) && x.DataInizioAttivita <= attivita.DataInizioAttivita).ToList().Count > 0)
                        {
                            var attivitaToDelete = ListaAttivita.Where(x => x.Nominativo.Equals(attivita.Nominativo) && x.DataInizioAttivita <= attivita.DataInizioAttivita).ToList();
                            ListaAttivita.Remove(attivitaToDelete[0]);
                            ListaAttivita.Add(attivita);
                        }
                        else
                        {
                            ListaAttivita.Add(attivita);
                        }
                    }
                }
            }
            else
            {
                foreach (var lavorazione in richiesta.UtInLavorazione)
                {
                    AttivitaUtente attivita = new AttivitaUtente()
                    {
                        Nominativo = lavorazione.Replace(".", " ")
                    };
                    ListaAttivita.Add(attivita);
                }
                ;
            }

            return(ListaAttivita);
        }
Пример #4
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);
        }
Пример #5
0
        public void Handle(RimozioneInLavorazioneCommand command)
        {
            var richiesta = _getRichiestaById.GetById(command.IdRichiesta);
            var attivita  = new AttivitaUtente();

            richiesta.UtInLavorazione.RemoveAll(x => x == command.IdUtente);

            //if (command.Chiamata.ListaUtentiInLavorazione != null)
            //    command.Chiamata.ListaUtentiInLavorazione = richiesta.UtInLavorazione;
            //else
            //{
            //    if (richiesta.UtInLavorazione.Count > 0)
            //    {
            //        command.Chiamata.ListaUtentiInLavorazione = new List<AttivitaUtente>();
            //        command.Chiamata.ListaUtentiInLavorazione = richiesta.UtInLavorazione;
            //    }
            //}

            _updateRichiestaAssistenza.UpDate(richiesta);
        }
        public void Handle(PresaInCaricoCommand command)
        {
            var richiesta = _getRichiestaById.Get(command.IdRichiesta);
            var utente    = _getUtenteById.GetUtenteById(command.IdUtente);
            var attivita  = new AttivitaUtente
            {
                IdUtente           = utente.Id,
                Nominativo         = utente.Nome + " " + utente.Cognome,
                DataInizioAttivita = DateTime.UtcNow
            };

            richiesta.Id = richiesta.Codice;
            if (richiesta.ListaUtentiPresaInCarico != null)
            {
                new InizioPresaInCarico(richiesta, DateTime.UtcNow, richiesta.Operatore.Id);

                richiesta.ListaUtentiPresaInCarico.Add(attivita);
            }
            else
            {
                richiesta.ListaUtentiPresaInCarico = new List <AttivitaUtente>
                {
                    attivita
                };
            }

            if (command.Chiamata.ListaUtentiPresaInCarico != null)
            {
                command.Chiamata.ListaUtentiPresaInCarico.Add(attivita);
            }
            else
            {
                richiesta.ListaUtentiPresaInCarico = new List <AttivitaUtente>();
                command.Chiamata.ListaUtentiPresaInCarico.Add(attivita);
            }

            _updateRichiestaAssistenza.UpDate(richiesta);
        }
Пример #7
0
        public void Handle(RimozioneInLavorazioneCommand command)
        {
            var richiesta = _getRichiestaById.Get(command.IdRichiesta);
            var attivita  = new AttivitaUtente();

            richiesta.ListaUtentiInLavorazione.RemoveAll(x => x.IdUtente == command.IdUtente);

            richiesta.Id = richiesta.Codice;

            if (command.Chiamata.ListaUtentiInLavorazione != null)
            {
                command.Chiamata.ListaUtentiInLavorazione = richiesta.ListaUtentiInLavorazione;
            }
            else
            {
                if (richiesta.ListaUtentiInLavorazione.Count > 0)
                {
                    command.Chiamata.ListaUtentiInLavorazione = new List <AttivitaUtente>();
                    command.Chiamata.ListaUtentiInLavorazione = richiesta.ListaUtentiInLavorazione;
                }
            }

            _updateRichiestaAssistenza.UpDate(richiesta);
        }
Пример #8
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 stato_mezzo = _getStatoMezzi.Get(new string[] { command.ConfermaPartenze.CodiceSede });

            foreach (var partenza in command.ConfermaPartenze.Partenze)
            {
                var listaMezzi = _getStatoMezzi.Get(new string[] { command.ConfermaPartenze.CodiceSede }, partenza.Mezzo.Codice);
                if (listaMezzi.Count > 0)
                {
                    if (listaMezzi[0].IdOpPrenotazione != null && !listaMezzi[0].IdOpPrenotazione.Equals(command.ConfermaPartenze.IdOperatore))
                    {
                        throw new Exception(Costanti.MezzoErroreGiaOccupato);
                    }
                }
            }

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

            bool PartenzaEsistente = false;

            foreach (var partenza in command.ConfermaPartenze.Partenze)
            {
                PartenzaEsistente = command.Richiesta.Partenze.Select(x => x.Partenza.Mezzo.Codice.Equals(partenza.Mezzo.Codice) && !x.Partenza.Terminata && !x.Partenza.PartenzaAnnullata && !x.Partenza.Sganciata).FirstOrDefault();

                if (PartenzaEsistente)
                {
                    throw new Exception(Costanti.PartenzaGiaPresente);
                }
            }

            #region SGANCIAMENTO

            if (command.ConfermaPartenze.IdRichiestaDaSganciare != null)
            {
                command.RichiestaDaSganciare = _getRichiestaById.GetByCodice(command.ConfermaPartenze.IdRichiestaDaSganciare);

                foreach (var composizione in command.RichiestaDaSganciare.Eventi.Where(x => x is ComposizionePartenze).ToList())
                {
                    var CompPartenza = ((ComposizionePartenze)composizione).Partenza;
                    if (!CompPartenza.PartenzaAnnullata && !CompPartenza.Terminata &&
                        !CompPartenza.Sganciata && !CompPartenza.Mezzo.Stato.Equals(Costanti.MezzoInRientro))
                    {
                        if (CompPartenza.Mezzo.Codice.Equals(command.ConfermaPartenze.IdMezzoDaSganciare))
                        {
                            CompPartenza.Sganciata = true;
                        }

                        if (CompPartenza.Mezzo.Stato == Costanti.MezzoInViaggio && !CompPartenza.Mezzo.Codice.Equals(command.ConfermaPartenze.IdMezzoDaSganciare))
                        {
                            StatoInViaggio++;
                        }

                        if (CompPartenza.Mezzo.Stato == Costanti.MezzoSulPosto && !CompPartenza.Mezzo.Codice.Equals(command.ConfermaPartenze.IdMezzoDaSganciare))
                        {
                            StatoSulPosto++;
                        }

                        idComposizioneDaSganciare++;
                    }
                }

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

                if (idComposizioneDaSganciare == 1)
                {
                    command.RichiestaDaSganciare.SincronizzaStatoRichiesta(Costanti.RichiestaSospesa, command.RichiestaDaSganciare.StatoRichiesta, command.RichiestaDaSganciare.CodOperatore, "", DateTime.UtcNow);
                }
                else
                {
                    if (StatoSulPosto > 0)
                    {
                        command.RichiestaDaSganciare.SincronizzaStatoRichiesta(Costanti.RichiestaPresidiata, command.RichiestaDaSganciare.StatoRichiesta, command.RichiestaDaSganciare.CodOperatore, "", DateTime.UtcNow);
                    }
                    else if (StatoInViaggio > 0)
                    {
                        command.RichiestaDaSganciare.SincronizzaStatoRichiesta(Costanti.RichiestaAssegnata, command.RichiestaDaSganciare.StatoRichiesta, command.RichiestaDaSganciare.CodOperatore, "", DateTime.UtcNow);
                    }
                }

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

            #endregion SGANCIAMENTO

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

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

            command.Richiesta.SincronizzaStatoRichiesta(Costanti.RichiestaAssegnata, command.Richiesta.StatoRichiesta, command.Utente.Id, "", DateTime.UtcNow);

            command.ConfermaPartenze.richiesta = command.Richiesta;

            var sedeRichiesta = command.Richiesta.CodSOCompetente;

            if (command.Richiesta.CodRichiesta == null)
            {
                command.Richiesta.CodRichiesta = _generaCodiceRichiesta.Genera(sedeRichiesta, DateTime.UtcNow.Year);
            }

            foreach (var partenza in command.ConfermaPartenze.Partenze)
            {
                partenza.Mezzo.IdRichiesta = command.Richiesta.Id;
            }
            var nominativo = command.Utente.Nome + "." + command.Utente.Cognome;

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

            foreach (var partenza in command.ConfermaPartenze.Partenze)
            {
                foreach (var squadra in partenza.Squadre)
                {
                    squadra.Stato = MappaStatoSquadraDaStatoMezzo.MappaStato(partenza.Mezzo.Stato);
                }
            }

            int ContatorePartenze = 1;
            foreach (var partenza in command.Richiesta.Partenze)
            {
                if (partenza.Partenza.Codice == 0)
                {
                    partenza.Partenza.Codice = ContatorePartenze;
                }

                ContatorePartenze++;
            }

            command.ConfermaPartenze.IdRichiesta = command.Richiesta.Id;

            var confermaPartenze = _updateConfermaPartenze.Update(command);

            command.ConfermaPartenze.CodiceSede = confermaPartenze.CodiceSede;
        }
Пример #9
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 void Handle(ConfermaPartenzeCommand command)
        {
            /// preparazione del DTO
            var richiesta            = _getRichiestaById.Get(command.ConfermaPartenze.IdRichiesta);
            var richiestaDaSganciare = new RichiestaAssistenza();

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

            ///Gestione Sganciamento
            if (command.ConfermaPartenze.IdRichiestaDaSganciare != null)
            {
                richiestaDaSganciare = _getRichiestaById.Get(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.Operatore.Id, "");
                }

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

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

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

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

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

            var sedeRichiesta = command.ConfermaPartenze.richiesta.Operatore.Sede.Codice;

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

            foreach (var partenza in command.ConfermaPartenze.Partenze)
            {
                partenza.Mezzo.IdRichiesta = richiesta.CodiceRichiesta;
            }

            attivita.IdUtente           = command.ConfermaPartenze.richiesta.Operatore.Id;
            attivita.Nominativo         = command.ConfermaPartenze.richiesta.Operatore.Nome + " " + command.ConfermaPartenze.richiesta.Operatore.Cognome;
            attivita.DataInizioAttivita = DateTime.UtcNow;

            if (richiesta.ListaUtentiPresaInCarico != null)
            {
                richiesta.ListaUtentiPresaInCarico.Add(attivita);
            }
            else
            {
                richiesta.ListaUtentiPresaInCarico = new List <AttivitaUtente>
                {
                    attivita
                };
            }

            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;
        }