public async Task <IActionResult> Get(string Id) { FiltroRicercaRichiesteAssistenza filtro = new FiltroRicercaRichiesteAssistenza { SearchKey = "0" }; var query = new ListaEventiQuery() { IdRichiesta = Id }; try { return(Ok(this.handler.Handle(query).Eventi)); } catch (Exception ex) { if (ex.Message.Contains(Costanti.UtenteNonAutorizzato)) { return(StatusCode(403, Costanti.UtenteNonAutorizzato)); } return(BadRequest()); } }
public async Task <IActionResult> GetRichieste(FiltroRicercaRichiesteAssistenza filtro) { filtro.idOperatore = Request.Headers["idUtente"]; var sintesiRichiesteAssistenzaQuery = new SintesiRichiesteAssistenzaQuery { CodiciSede = Request.Headers["codiceSede"].ToString().Split(','), Filtro = filtro }; try { return(Ok(_sintesiRichiesteQuery.Handle(sintesiRichiesteAssistenzaQuery))); } catch (Exception ex) { if (ex.Message.Contains(Costanti.UtenteNonAutorizzato)) { return(StatusCode(403, new { message = Costanti.UtenteNonAutorizzato })); } else { return(BadRequest(new { message = ex.Message })); } } }
/// <summary> /// Metodi di esecuzione della query /// </summary> /// <param name="query">Il DTO di ingresso della query</param> /// <returns>Il DTO di uscita della query</returns> public IndicatoriStatoSoccorsoResult Handle(IndicatoriStatoSoccorsoQuery query) { var filtro = new FiltroRicercaRichiesteAssistenza() { UnitaOperative = query.UnitaOperative }; // estrarre le richieste di assistenza in corso relative alle Unità Operative interessate var richiesteAssistenza = this._cercaRichiesteAssistenza.Get(filtro).ToArray(); // estrae una lista che include una lista di eventi per ogni richiesta var eventi = richiesteAssistenza.Select(r => r.Eventi); // calcolare i valori degli indicatori. var result = new IndicatoriStatoSoccorsoResult() { NumeroRichiesteInCorso = richiesteAssistenza.Count(), NumeroRichiesteSospese = richiesteAssistenza.Count(r => r.Sospesa), NumeroRichiesteInAttesa = richiesteAssistenza.Count(r => r.InAttesa), NumeroMezziSoccorsoSulPosto = richiesteAssistenza.Sum(r => r.MezziCoinvolti.Values.Count(s => s is SulPosto)), NumeroMezziSoccorsoInRientro = richiesteAssistenza.Sum(r => r.MezziCoinvolti.Values.Count(s => s is InRientro)), NumeroMezziSoccorsoInViaggio = richiesteAssistenza.Sum(r => r.MezziCoinvolti.Values.Count(s => s is InViaggio)), NumeroSquadreSoccorsoImpegnate = 1 //richiesteAssistenza.Sum(r => r.ListaPartenze.Count(s => s.StatoDellaSquadra != SquadraCoinvolta.StatoSquadra.RientrataInSede)) }; #warning Va realizzata una classe SelettoreOrganigramma che consenta di individuare un sottoinsieme di nodi dell'organigramma result.NumeroTotaleMezziSoccorso = this._getNumeroMezziSoccorsoOraInServizio.Get(null); result.NumeroTotaleSquadreSoccorso = this._getNumeroSquadreSoccorsoOraInServizio.Get(null); return(result); }
public IEnumerable <AuthorizationResult> Authorize(ChiamataInCorsoMarkerCommand command) { var username = _currentUser.Identity.Name; var user = _findUserByUsername.FindUserByUs(username); var Competenze = _getCompetenze.GetCompetenzeByCoordinateIntervento(command.AddChiamataInCorso.Localita.Coordinate).ToHashSet(); if (_currentUser.Identity.IsAuthenticated) { if (user == null) { yield return(new AuthorizationResult(Costanti.UtenteNonAutorizzato)); } var listaPin = _getPinNodoByCodSede.GetListaPin(Competenze.ToArray()); FiltroRicercaRichiesteAssistenza filtro = new FiltroRicercaRichiesteAssistenza() { IndirizzoIntervento = command.AddChiamataInCorso.Localita, SearchKey = "0", UnitaOperative = listaPin.ToHashSet() }; var richiesteEsistenti = _getListaSintesi.GetListaSintesiRichieste(filtro); if (richiesteEsistenti.Count > 0) { _notificationDoubleChiamataInCorso.SendNotification(command); } } else { yield return(new AuthorizationResult(Costanti.UtenteNonAutorizzato)); } }
public async Task <IActionResult> Get() { var headerValues = Request.Headers["HubConnectionId"]; string ConId = headerValues.FirstOrDefault(); FiltroRicercaRichiesteAssistenza filtro = new FiltroRicercaRichiesteAssistenza { SearchKey = "0" }; var query = new FiltriQuery() { Filtro = filtro }; try { Filtri filtri = new Filtri(); filtri = this.handler.Handle(query).Filtri; await _NotificationHub.Clients.Client(ConId).SendAsync("NotifyGetFiltri", filtri); return(Ok()); } catch { return(BadRequest()); } }
public BoxInterventi Get(ISet <PinNodo> listaPin) { var interventi = new BoxInterventi(); var filtro = new FiltroRicercaRichiesteAssistenza { UnitaOperative = listaPin, IncludiRichiesteChiuse = true }; var listaSintesi = _getListaSintesi.GetListaSintesiRichieste(filtro); if (listaSintesi.Count > 0) { interventi.Assegnati = listaSintesi.Count(x => x.Partenze.Count > 0 && !x.Partenze.All(c => c.Partenza.Terminata || c.Partenza.PartenzaAnnullata || c.Partenza.Sganciata) && !x.Chiusa && !x.Presidiata && !x.Sospesa && x.Aperta); interventi.Chiamate = listaSintesi.Count(x => (x.Partenze.Count == 0 || x.Partenze.All(c => c.Partenza.Terminata || c.Partenza.PartenzaAnnullata || c.Partenza.Sganciata)) && !x.Chiusa && !x.Sospesa); interventi.Presidiati = listaSintesi.Count(x => x.Presidiata); interventi.Chiusi = listaSintesi.Count(x => x.Chiusa); interventi.TotAnnoCorrente = listaSintesi.Count(x => x.IstanteRicezioneRichiesta.Year == DateTime.Now.Year && x.Chiusa); interventi.TotTurnoCorrente = listaSintesi.Count(x => x.IstanteRicezioneRichiesta.Year == DateTime.Now.Year); interventi.TotTurnoPrecedente = 0; interventi.Totale = listaSintesi.Count(x => x.Aperta); interventi.AnnoCorrente = DateTime.Now.Year; } return(interventi); }
public ListaEventiResult GetMarkerFromId(FiltroRicercaRichiesteAssistenza filtro) { var query = new ListaEventiQuery() { Filtro = filtro }; return(this.handler.Handle(query)); }
/// <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(); if (query.CodiceSede[0].Equals("CON")) { filtri.Distaccamenti = _getDistaccamenti.GetListaDistaccamenti(pinNodi.ToHashSet().ToList()); } else { filtri.Distaccamenti = _getDistaccamenti.GetListaDistaccamenti(pinNodiNoDistaccamenti); } var rubrica = Task.Factory.StartNew(() => _rubricaQueryHandler.Handle(new RubricaQuery() { IdOperatore = query.idOperatore, IdSede = query.CodiceSede, Filters = new FiltriRubrica() { Search = "" }, Pagination = default }).DataArray);
public async Task <IActionResult> Get(string Id) { FiltroRicercaRichiesteAssistenza filtro = new FiltroRicercaRichiesteAssistenza { SearchKey = "0" }; var query = new ListaEventiQuery() { Id = Id }; try { return(Ok(this.handler.Handle(query).Eventi)); } catch { return(BadRequest()); } }
public List <SintesiRichiesta> GetListaSintesiRichieste(FiltroRicercaRichiesteAssistenza filtro) { var mapper = new MapperRichiestaAssistenzaSuSintesi(_mapper); var listaSintesiRichieste = new List <SintesiRichiesta>(); var listaSintesiRichiesteVuota = new List <SintesiRichiesta>(); var listaRichiesteAssistenza = new List <RichiestaAssistenza>(); string filepath = CostantiJson.ListaRichiesteAssistenza; string json; using (StreamReader r = new StreamReader(filepath)) { json = r.ReadToEnd(); } var listaRichieste = JsonConvert.DeserializeObject <List <RichiestaAssistenzaDTO> >(json); if (listaRichieste != null) { foreach (RichiestaAssistenzaDTO richiesta in listaRichieste) { richiesta.Id = richiesta.Codice; listaRichiesteAssistenza.Add(MapperDTO.MapRichiestaDTOtoRichiesta(richiesta)); } foreach (RichiestaAssistenza richiesta in listaRichiesteAssistenza) { listaSintesiRichieste.Add(mapper.Map(richiesta)); } listaSintesiRichieste = listaSintesiRichieste.OrderByDescending(x => x.Stato == Costanti.Chiamata) .ThenByDescending(x => x.PrioritaRichiesta) .ThenBy(x => x.IstanteRicezioneRichiesta) .ToList(); return(listaSintesiRichieste); } return(listaSintesiRichiesteVuota); }
public async Task <IActionResult> Get() { var codiceSede = Request.Headers["codicesede"]; FiltroRicercaRichiesteAssistenza filtro = new FiltroRicercaRichiesteAssistenza { SearchKey = "0" }; try { var query = new WelcomeQuery() { FiltroBox = filtro.SearchKey, CodiceSede = codiceSede }; return(Ok(this._handler.Handle(query).WelcomeRes)); } catch (Exception ex) { return(BadRequest(ex.Message)); } }
public BoxInterventi Get(ISet <PinNodo> listaPin) { var interventi = new BoxInterventi(); var filtro = new FiltroRicercaRichiesteAssistenza { UnitaOperative = listaPin }; var listaSintesi = _getListaSintesi.GetListaSintesiRichieste(filtro); if (listaSintesi.Count > 0) { interventi.Assegnati = listaSintesi.Count(x => x.Partenze.Count > 0 && !x.Chiusa); interventi.Chiamate = listaSintesi.Count(x => x.Partenze.Count == 0 && !x.Chiusa && !x.Sospesa); interventi.Presidiati = listaSintesi.Count(x => x.Presidiata); interventi.Sospesi = listaSintesi.Count(x => x.Sospesa); interventi.TotAnnoCorrente = listaSintesi.Count(x => x.IstanteRicezioneRichiesta.Year == DateTime.Now.Year); interventi.TotTurnoCorrente = listaSintesi.Count(x => x.IstanteRicezioneRichiesta.Year == DateTime.Now.Year); interventi.TotTurnoPrecedente = 0; interventi.Totale = listaSintesi.Count; interventi.AnnoCorrente = DateTime.Now.Year; } return(interventi); }
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()); }
/// <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; } }
/// <summary> /// Restituisce un set vuoto di sintesi richiesta /// </summary> /// <param name="filtro">Not used</param> /// <returns>Il set vuoto di richieste</returns> public IEnumerable <RichiestaAssistenza> Get(FiltroRicercaRichiesteAssistenza filtro) { return(Enumerable.Empty <RichiestaAssistenza>()); }
public List <SintesiRichiesta> GetListaSintesiRichieste(FiltroRicercaRichiesteAssistenza filtro) { throw new NotImplementedException(); }
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()); }