public async Task <IActionResult> DeleteInLavorazione([FromBody] SintesiRichiesta intervento)
        {
            var IdUtente   = Request.Headers["IdUtente"];
            var codiceSede = Request.Headers["codicesede"];

            var command = new RimozioneInLavorazioneCommand()
            {
                IdRichiesta = intervento.Id,
                IdUtente    = IdUtente,
                Chiamata    = intervento,
                CodSede     = codiceSede
            };

            try
            {
                this._deleteInLavorazionehandler.Handle(command);
                return(Ok());
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains(Costanti.UtenteNonAutorizzato))
                {
                    return(StatusCode(403, Costanti.UtenteNonAutorizzato));
                }
                return(BadRequest());
            }
        }
        public async Task <IActionResult> AddPresaInCarico([FromBody] SintesiRichiesta intervento)
        {
            var    headerValues = Request.Headers["IdUtente"];
            var    codiceSede   = Request.Headers["codicesede"];
            string IdUtente     = headerValues.FirstOrDefault();

            var command = new PresaInCaricoCommand()
            {
                IdRichiesta = intervento.Id,
                IdUtente    = IdUtente,
                Chiamata    = intervento,
                CodSede     = codiceSede
            };

            try
            {
                this._presaInCaricohandler.Handle(command);
                return(Ok());
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains(Costanti.UtenteNonAutorizzato))
                {
                    return(StatusCode(403, Costanti.UtenteNonAutorizzato));
                }
                return(BadRequest());
            }
        }
Exemple #3
0
        public async Task <IActionResult> InserimentoIntervento([FromBody] SintesiRichiesta sintesi)
        {
            if (ModelState.IsValid)
            {
                var command = new AddInterventoCommand()
                {
                    sintesiRichiesta = sintesi
                };

                try
                {
                    this._handler.Handle(command);
                    await _NotificationHub.Clients.Groups(sintesi.Operatore.Sede.Codice).SendAsync("SaveAndNotifySuccessChiamata", command);

                    return(Ok());
                }
                catch
                {
                    return(BadRequest());
                }
            }
            else
            {
                return(BadRequest());
            }
        }
Exemple #4
0
        public async Task <IActionResult> UpdateIntervento([FromBody] SintesiRichiesta chiamata)
        {
            var codiceSede = Request.Headers["codicesede"];
            var idUtente   = Request.Headers["IdUtente"];

            var command = new UpDateInterventoCommand()
            {
                Chiamata   = chiamata,
                CodiceSede = codiceSede,
                CodUtente  = idUtente
            };

            try
            {
                this._Updatehandler.Handle(command);
                return(Ok());
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains(Costanti.UtenteNonAutorizzato))
                {
                    return(StatusCode(403, Costanti.UtenteNonAutorizzato));
                }
                return(BadRequest());
            }
        }
Exemple #5
0
        public List <SintesiRichiesta> MapRichiesteSuSintesi(List <RichiestaAssistenza> ListaRichieste)
        {
            List <SintesiRichiesta> ListaSintesi               = new List <SintesiRichiesta>();
            List <SintesiRichiesta> AppoListaSintesiChiamate   = new List <SintesiRichiesta>();
            List <SintesiRichiesta> AppoListaSintesiAltroStato = new List <SintesiRichiesta>();

            foreach (RichiestaAssistenza elemento in ListaRichieste)
            {
                SintesiRichiesta sintesi        = new SintesiRichiesta();
                string           statoRichiesta = DecodifcaStatoRichiesta(elemento.StatoRichiesta);

                sintesi.Codice          = elemento.Codice;
                sintesi.CodiceSchedaNue = elemento.CodiceSchedaNue;
                sintesi.Competenze      = elemento.Competenze;
                //sintesi.complessita = elemento.Richiesta.Complessita;
                sintesi.Descrizione = elemento.Descrizione;
                sintesi.Etichette   = elemento.Tags.ToArray();
                sintesi.Eventi      = elemento.Eventi.ToList();
                //sintesi.fonogramma = elemento.Richiesta.StatoInvioFonogramma;
                sintesi.Id = elemento.Id;
                sintesi.IstantePresaInCarico     = elemento.IstantePresaInCarico;
                sintesi.IstantePrimaAssegnazione = elemento.IstantePrimaAssegnazione;

                sintesi.IstanteRicezioneRichiesta = sintesi.Eventi.Count > 0 ? elemento.IstanteRicezioneRichiesta : DateTime.MinValue;
                sintesi.Localita  = elemento.Localita;
                sintesi.Operatore = elemento.Operatore;
                sintesi.Partenze  = elemento.ListaPartenze;
                //sintesi.Priorita = elemento.PrioritaRichiesta;
                sintesi.Richiedente   = elemento.Richiedente;
                sintesi.Rilevanza     = DateTime.Now;
                sintesi.Stato         = Convert.ToInt16(statoRichiesta);
                sintesi.Tipologie     = elemento.Tipologie;
                sintesi.ZoneEmergenza = elemento.ZoneEmergenza;

                if (statoRichiesta.Equals("Chiamata"))
                {
                    AppoListaSintesiChiamate.Add(sintesi);
                }
                else
                {
                    AppoListaSintesiAltroStato.Add(sintesi);
                }
            }

            //INIZIO - TUTTA QUESTA PARTE VA CANCELLATA DOPO IL FAKE
            foreach (SintesiRichiesta richiesta in AppoListaSintesiChiamate)
            {
                if (richiesta.Partenze.Count > 0)
                {
                    richiesta.Partenze.Clear();
                }
            }

            ListaSintesi.AddRange(AppoListaSintesiChiamate);
            ListaSintesi.AddRange(AppoListaSintesiAltroStato);
            //FINE

            return(ListaSintesi);
        }
Exemple #6
0
        public SintesiRichiesta GetSintesi(string codiceRichiesta)
        {
            var richiesta = GetByCodice(codiceRichiesta);
            var sintesi   = new SintesiRichiesta();

            if (richiesta.CodUOCompetenza != null)
            {
                sintesi            = _mapperSintesi.Map(richiesta);
                sintesi.Competenze = MapCompetenze(richiesta.CodUOCompetenza);
            }

            return(sintesi);
        }
Exemple #7
0
        public async Task <IActionResult> UpdateIntervento([FromBody] SintesiRichiesta chiamata)
        {
            var command = new UpDateInterventoCommand()
            {
                Chiamata = chiamata
            };

            try
            {
                this._Updatehandler.Handle(command);
                return(Ok());
            }
            catch
            {
                return(BadRequest());
            }
        }
Exemple #8
0
        public SintesiRichiesta GetSintesi(string codiceRichiesta)
        {
            var richiesta = GetByCodice(codiceRichiesta);
            var sintesi   = new SintesiRichiesta();

            var rubrica = new List <EnteDTO>();

            if (richiesta.CodEntiIntervenuti != null)
            {
                rubrica = _getRubrica.GetBylstCodici(richiesta.CodEntiIntervenuti.Select(c => int.Parse(c)).ToArray());
            }

            if (richiesta.CodUOCompetenza != null)
            {
                sintesi = _mapperSintesi.Map(richiesta);
                sintesi.ListaEntiIntervenuti = rubrica.Count > 0 ? rubrica?.FindAll(c => richiesta.CodEntiIntervenuti?.Contains(c.Codice.ToString()) ?? false) : null;
                sintesi.Competenze           = MapCompetenze(richiesta.CodUOCompetenza);
                sintesi.SediAllertate        = richiesta.CodSOAllertate != null?MapCompetenze(richiesta.CodSOAllertate.ToArray()) : null;
            }

            return(sintesi);
        }
Exemple #9
0
        public async Task <IActionResult> AddPresaInCarico([FromBody] SintesiRichiesta intervento)
        {
            var    headerValues = Request.Headers["IdUtente"];
            string IdUtente     = headerValues.FirstOrDefault();

            var command = new PresaInCaricoCommand()
            {
                IdRichiesta = intervento.Id,
                IdUtente    = IdUtente,
                Chiamata    = intervento
            };

            try
            {
                this._presaInCaricohandler.Handle(command);
                return(Ok());
            }
            catch
            {
                return(BadRequest());
            }
        }
Exemple #10
0
        public async Task <IActionResult> DeleteInLavorazione([FromBody] SintesiRichiesta intervento)
        {
            var    headerValues = Request.Headers["IdUtente"];
            string IdUtente     = headerValues.FirstOrDefault();

            var command = new RimozioneInLavorazioneCommand()
            {
                IdRichiesta = intervento.Id,
                IdUtente    = IdUtente,
                Chiamata    = intervento
            };

            try
            {
                this._deleteInLavorazionehandler.Handle(command);
                return(Ok());
            }
            catch
            {
                return(BadRequest());
            }
        }
Exemple #11
0
        public List <SintesiRichiesta> GetListaSintesiRichieste(FiltroRicercaRichiesteAssistenza filtro)
        {
            var filtroSediCompetenti = Builders <RichiestaAssistenza> .Filter
                                       .In(richiesta => richiesta.CodSOCompetente, filtro.UnitaOperative.Select(uo => uo.Codice));

            List <string> listaCodSedi = new List <string>();

            foreach (var sede in filtro.UnitaOperative)
            {
                listaCodSedi.Add(sede.Codice);
            }

            var filtriSediAllertate = Builders <RichiestaAssistenza> .Filter.AnyIn(x => x.CodSOAllertate, listaCodSedi);

            List <RichiestaAssistenza> result = new List <RichiestaAssistenza>();

            result = _dbContext.RichiestaAssistenzaCollection.Find(filtroSediCompetenti).ToList();

            //FILTRO TIPOLOGIA RICHIESTA (CHIAMATE/INTERVENTI)
            if (filtro.TipologiaRichiesta != null)
            {
                result = result.Where(r =>
                {
                    if (filtro.TipologiaRichiesta.Equals("Chiamate"))
                    {
                        return(r.TestoStatoRichiesta == "C");
                    }

                    if (filtro.TipologiaRichiesta.Equals("Interventi"))
                    {
                        return(r.TestoStatoRichiesta != "C");
                    }

                    return(true);
                }).ToList();
            }

            //FILTRO STATI RICHIESTA
            if (filtro.StatiRichiesta != null && filtro.StatiRichiesta.Count() != 0)
            {
                if (filtro.StatiRichiesta.Contains("Assegnata"))
                {
                    filtro.StatiRichiesta.Add("InAttesa");
                }

                result = result.Where(r => filtro.StatiRichiesta.Contains(r.StatoRichiesta.GetType().Name)).ToList();
            }
            else //CHIUSE NASCOSTE DI DEFAULT
            {
                result = result.Where(r => !r.StatoRichiesta.GetType().Name.Contains("Chiusa")).ToList();
            }

            //FILTRO ZONE EMERGENZA
            if (filtro.ZoneEmergenza != null)
            {
                result = result.Where(r => r.CodZoneEmergenza.Any(z => filtro.ZoneEmergenza.Contains(z))).ToList();
            }

            //FILTRO PERIODO CHIAMATE CHIUSE
            if (filtro.PeriodoChiuse != null)
            {
                result = result.Where(r =>
                {
                    if (filtro.PeriodoChiuse.Data != null)
                    {
                        return(r.Aperta == true || (r.Chiusa == true && r.IstanteChiusura.Value.Year == filtro.PeriodoChiuse.Data.Value.Year && r.IstanteChiusura.Value.Month == filtro.PeriodoChiuse.Data.Value.Month && r.IstanteChiusura.Value.Day == filtro.PeriodoChiuse.Data.Value.Day));
                    }

                    else if (filtro.PeriodoChiuse.Turno != null)
                    {
                        var turno = _getTurno.Get(r.IstanteChiusura);

                        return(r.Aperta == true || (r.Chiusa == true && turno.Codice.Contains(filtro.PeriodoChiuse.Turno)));
                    }

                    else if (filtro.PeriodoChiuse.Da != null && filtro.PeriodoChiuse.A != null)
                    {
                        return(r.Aperta == true || (r.IstanteChiusura >= filtro.PeriodoChiuse.Da && r.IstanteChiusura <= filtro.PeriodoChiuse.A));
                    }

                    return(true);
                }).ToList();
            }


            if (filtro.FiltriTipologie != null)
            {
                result = result.Where(o => filtro.FiltriTipologie.Any(s => o.Tipologie.Contains(s))).ToList();
            }

            if (filtro.IndirizzoIntervento != null)
            {
                result = result.FindAll(o => o.Localita.Coordinate.Latitudine.Equals(filtro.IndirizzoIntervento.Coordinate.Latitudine) && o.Localita.Coordinate.Longitudine.Equals(filtro.IndirizzoIntervento.Coordinate.Longitudine));
            }

            if (filtro.StatiRichiesta != null && filtro.StatiRichiesta.Count() > 0)
            {
                result = result.Where(r => filtro.StatiRichiesta.Contains(r.StatoRichiesta.GetType().Name)).ToList();
            }

            var listaSistesiRichieste = new List <SintesiRichiesta>();

            foreach (RichiestaAssistenza richiesta in result)
            {
                List <EnteDTO> rubrica = new List <EnteDTO>();
                if (richiesta.CodEntiIntervenuti != null)
                {
                    var lstCodiciEnti = richiesta.CodEntiIntervenuti.Select(c => int.Parse(c)).ToArray();

                    rubrica = _getRubrica.GetBylstCodici(lstCodiciEnti);
                }

                SintesiRichiesta sintesi = new SintesiRichiesta();

                if (richiesta.CodUOCompetenza != null)
                {
                    sintesi               = _mapperSintesi.Map(richiesta);
                    sintesi.Competenze    = MapCompetenze(richiesta.CodUOCompetenza);
                    sintesi.SediAllertate = richiesta.CodSOAllertate != null?MapCompetenze(richiesta.CodSOAllertate.ToArray()) : null;

                    sintesi.ListaEntiIntervenuti = rubrica.Count == 0 ? null : rubrica;
                    listaSistesiRichieste.Add(sintesi);
                }
            }

            //ORDINAMENTO RICHIESTE
            return(listaSistesiRichieste
                   .OrderByDescending(c => c.Stato.Equals(Costanti.Chiamata) && c.Partenze.Count == 0)
                   .ThenByDescending(c => c.Stato.Equals(Costanti.Chiamata) && c.Partenze.Count > 0)
                   .ThenByDescending(c => c.Stato.Equals(Costanti.RichiestaAssegnata))
                   .ThenByDescending(c => c.Stato.Equals(Costanti.RichiestaPresidiata))
                   .ThenByDescending(c => c.Stato.Equals(Costanti.RichiestaChiusa))
                   .ThenByDescending(x => x.PrioritaRichiesta)
                   .ThenBy(x => x.IstanteRicezioneRichiesta)
                   .ToList());
        }
Exemple #12
0
 public Intervento Map(SintesiRichiesta richiesta)
 {
     return(_mapper.Map <Intervento>(richiesta));
 }
Exemple #13
0
        public List <SintesiRichiesta> GetListaSintesiRichieste(FiltroRicercaRichiesteAssistenza filtro)
        {
            var filtroSediCompetenti = Builders <RichiestaAssistenza> .Filter
                                       .In(richiesta => richiesta.CodSOCompetente, filtro.UnitaOperative.Select(uo => uo.Codice));

            var filtriSediAllertate = filtro.UnitaOperative.Select(uo =>
                                                                   Builders <RichiestaAssistenza> .Filter
                                                                   .ElemMatch(richiesta => richiesta.CodSOAllertate, x => x == uo.Codice)
                                                                   );

            FilterDefinition <RichiestaAssistenza> orFiltroSediAllertate = Builders <RichiestaAssistenza> .Filter.Empty;

            foreach (var f in filtriSediAllertate)
            {
                orFiltroSediAllertate |= f;
            }

            List <RichiestaAssistenza> result = new List <RichiestaAssistenza>();

            //Iniziamo col restituire le richieste aperte.
            if (filtro.IncludiRichiesteAperte)
            {
                var filtroRichiesteAperte = Builders <RichiestaAssistenza> .Filter.Ne(r => r.TestoStatoRichiesta, "X");

                var filtroComplessivo = filtroSediCompetenti & filtroRichiesteAperte;

                var richiesteAperte = _dbContext.RichiestaAssistenzaCollection.Find(filtroComplessivo)
                                      .ToList();

                // qui l'ordinamento
                var richiestePerStato = richiesteAperte.GroupBy(r => r.TestoStatoRichiesta == InAttesa.SelettoreDB)
                                        .ToDictionary(g => g.Key, g => g);

                /*
                 * true -> c1, c2, c3
                 * false -> r5, r8, r19, r34
                 */

                if (richiestePerStato.ContainsKey(false))
                {
                    result.AddRange(
                        richiestePerStato[false]
                        .OrderBy(r => r.PrioritaRichiesta)
                        .ThenBy(r => r.IstanteRicezioneRichiesta));
                }

                if (richiestePerStato.ContainsKey(true))
                {
                    result.AddRange(
                        richiestePerStato[true]
                        .OrderBy(r => r.PrioritaRichiesta)
                        .ThenBy(r => r.IstanteRicezioneRichiesta));
                }

                // qui la paginazione var resultPaginato = result.Skip().Take();

                // se abbiamo già raggiunto il numero di richieste desiderate, restituiamo e finisce
                // qua return resultPaginato;

                result.ToList();
            }

            if (filtro.IncludiRichiesteChiuse)
            {
                var filtroRichiesteChiuse = Builders <RichiestaAssistenza> .Filter.Eq(r => r.TestoStatoRichiesta, "X");

                var filtroComplessivo = filtroSediCompetenti & filtroRichiesteChiuse;

                var numeroRichiesteDaRecuperare = filtro.PageSize - (result.Count - filtro.PageSize);

                if (numeroRichiesteDaRecuperare > 0)
                {
                    var closedToSkip = (filtro.Page - 1) * filtro.PageSize - result.Count;
                    if (closedToSkip < 0)
                    {
                        closedToSkip = 0;
                    }
                    var richiesteChiuse = _dbContext.RichiestaAssistenzaCollection.Find(filtroComplessivo)
                                          .Skip(closedToSkip)
                                          .Limit(numeroRichiesteDaRecuperare)
                                          .ToList();

                    result.AddRange(richiesteChiuse);
                }
            }

            var listaSistesiRichieste = new List <SintesiRichiesta>();

            foreach (RichiestaAssistenza richiesta in result)
            {
                SintesiRichiesta sintesi = new SintesiRichiesta();

                if (richiesta.CodUOCompetenza != null)
                {
                    sintesi            = _mapperSintesi.Map(richiesta);
                    sintesi.Competenze = MapCompetenze(richiesta.CodUOCompetenza);
                    listaSistesiRichieste.Add(sintesi);
                }
            }

            return(listaSistesiRichieste
                   .OrderByDescending(x => x.Stato == Costanti.Chiamata)
                   .ThenByDescending(x => x.Chiusa == false)
                   .ThenByDescending(x => x.PrioritaRichiesta)
                   .ThenBy(x => x.IstanteRicezioneRichiesta)
                   .ToList());
        }