public List <StatoOperativoMezzo> Get(string[] codiciSede, string codiceMezzo = null) { var listaSediAlberate = _getAlberaturaUnitaOperative.ListaSediAlberata(); var pinNodi = new List <PinNodo>(); var pinNodiNoDistaccamenti = new List <PinNodo>(); pinNodi.AddRange(codiciSede.Select(c => new PinNodo(c, true))); foreach (var figlio in listaSediAlberate.GetSottoAlbero(pinNodi)) { pinNodi.Add(new PinNodo(figlio.Codice, true)); } if (codiceMezzo == null) { var listaMezziPrenotati = _dbContext.StatoMezzoCollection.Find(Builders <StatoOperativoMezzo> .Filter.In(x => x.CodiceSede, pinNodi.Select(y => y.Codice))).ToList(); foreach (var mezzo in listaMezziPrenotati) { if (mezzo.IstantePrenotazione != null) { mezzo.IstantePrenotazione = TimeZoneInfo.ConvertTime(mezzo.IstantePrenotazione.Value, TimeZoneInfo.Local); } if (mezzo.IstanteScadenzaSelezione != null) { mezzo.IstanteScadenzaSelezione = TimeZoneInfo.ConvertTime(mezzo.IstanteScadenzaSelezione.Value, TimeZoneInfo.Local); } } return(listaMezziPrenotati); } else { var listaMezziPrenotati = _dbContext.StatoMezzoCollection.Find(Builders <StatoOperativoMezzo> .Filter.Eq(x => x.CodiceMezzo, codiceMezzo)).ToList(); foreach (var mezzo in listaMezziPrenotati) { if (mezzo.IstantePrenotazione != null) { mezzo.IstantePrenotazione = TimeZoneInfo.ConvertTime(mezzo.IstantePrenotazione.Value, TimeZoneInfo.Local); } if (mezzo.IstanteScadenzaSelezione != null) { mezzo.IstanteScadenzaSelezione = TimeZoneInfo.ConvertTime(mezzo.IstanteScadenzaSelezione.Value, TimeZoneInfo.Local); } } return(listaMezziPrenotati); } }
/// <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 BoxRichiesteResult Handle(BoxRichiesteQuery query) { Log.Debug("Inizio elaborazione Box Richieste Handler"); 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)); } // preparazione del DTO var boxes = _iGetBox.Get(pinNodi.ToHashSet()); Log.Debug("Fine elaborazione Box Richieste Handler"); return(new BoxRichiesteResult() { BoxRichieste = boxes }); }
public List <Distaccamento> GetListaDistaccamenti(List <PinNodo> listaPin) { var listaSedi = _getSediAlberate.ListaSediAlberata(); var listaSottoSedi = listaSedi.GetSottoAlbero(listaPin).Where(x => x.Codice.Length > 2); List <ListaSedi> DistaccamentiResult = new List <ListaSedi>(); if (listaPin[0].Codice.Equals("CON")) { DistaccamentiResult = _dbContext.SediCollection.Find(Builders <ListaSedi> .Filter.Empty).ToList(); } else { var filtroSede = Builders <ListaSedi> .Filter .In(sede => sede.codProv, listaSottoSedi.Select(uo => uo.Codice.Split('.')[0])); var filtroCodice = Builders <ListaSedi> .Filter .In(sede => sede.codFiglio_TC, listaSottoSedi.Select(uo => Convert.ToInt32(uo.Codice.Split('.')[1]))); var filterAttive = Builders <ListaSedi> .Filter.Eq(x => x.attiva, 1); DistaccamentiResult = _dbContext.SediCollection.Find(filtroSede & filtroCodice & filterAttive).ToList(); } return(MapSediMongoSuDistaccamenti.Map(DistaccamentiResult)); }
/// <summary> /// metodo della classe /// </summary> /// <param name="command">il command con i parametri di ingresso</param> public void Handle(AddUtenteCommand command) { var personale = _personaleByCF.Get(command.CodFiscale).Result; var listaPin = new List <PinNodo>(); var sediAlberate = _getAlberaturaUnitaOperative.ListaSediAlberata(); var distaccamento = _getDistaccamentoByCodiceSede.Get(personale.CodSede).Result; foreach (var ruolo in command.Ruoli) { listaPin.Add(new PinNodo(ruolo.CodSede, ruolo.Ricorsivo)); foreach (var figli in sediAlberate.GetSottoAlbero(listaPin)) { if (figli.Codice.Equals(ruolo.CodSede)) { ruolo.DescSede = figli.Nome; } } } var utenteVVF = new Utente(command.CodFiscale, personale.Nominativo.Split(".")[0], personale.Nominativo.Split(".")[1]) { Ruoli = command.Ruoli, Username = personale.Nominativo.ToLower(), Password = "******", Sede = new Sede($"{distaccamento.CodSede}", distaccamento.DescDistaccamento, distaccamento.Indirizzo, distaccamento.Coordinate, "", "", "", "", "") }; _addUtente.Add(utenteVVF); }
/// <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 }); }
/// <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 }); }
public List <PinNodo> GetGerarchiaFull(string[] CodiciSedi) { var listaSediAlberate = _getAlberaturaUnitaOperative.ListaSediAlberata(); var pinNodi = new List <PinNodo>(); var pinNodiNoDistaccamenti = new List <PinNodo>(); foreach (var sede in CodiciSedi) { 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)); } return(pinNodi.Distinct().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(); 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);
/// <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(), RuoliUtLoggato = _getRuoliById.Get(query.IdUtente) }; Log.Debug("Fine elaborazione Informazioni Navbar Handler"); return(new NavbarResult() { Navbar = navbars }); }
public List <string> Get(string codSedeDiPartenza, string[] CodSediAllertate = null) { var listaSediAlberata = getAlberaturaUnitaOperative.ListaSediAlberata(); var pin = new PinNodo(codSedeDiPartenza); var pinNodi = new List <PinNodo>(); pinNodi.Add(pin); var UnitaOperativaAnagrafica = listaSediAlberata.GetSottoAlbero(pinNodi); List <string> ListaCodiciSediInteressate = new List <string>(); UnitaOperativa unitaperativa = new UnitaOperativa(codSedeDiPartenza, UnitaOperativaAnagrafica.ToList()[0].Nome) { Figli = UnitaOperativaAnagrafica.ToList()[0].Figli }; foreach (var direzioneRegionale in listaSediAlberata.Figli) { if (direzioneRegionale.Figli.ToList().Contains(unitaperativa)) { ListaCodiciSediInteressate.Add(direzioneRegionale.Codice); ListaCodiciSediInteressate.Add(unitaperativa.Codice); } else { foreach (var comune in direzioneRegionale.Figli) { if (comune.Figli.ToList().Contains(unitaperativa)) { ListaCodiciSediInteressate.Add(direzioneRegionale.Codice); ListaCodiciSediInteressate.Add(comune.Codice); ListaCodiciSediInteressate.Add(unitaperativa.Codice); } } } } if (CodSediAllertate != null) { foreach (var sede in CodSediAllertate) { ListaCodiciSediInteressate.Add(sede); } } return(ListaCodiciSediInteressate.Distinct().ToList()); }
private List <PinNodo> GetGerarchia(string[] CodSede) { var listaPin = new List <PinNodo>(); var sediAlberate = _getAlberaturaUnitaOperative.ListaSediAlberata(); foreach (var sede in CodSede) { listaPin.Add(new PinNodo(sede, true)); foreach (var figlio in sediAlberate.GetSottoAlbero(listaPin)) { PinNodo fgl = new PinNodo(figlio.Codice, true); listaPin.Add(fgl); } } return(listaPin); }
/// <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 } }); }
/// <summary> /// metodo handler /// </summary> /// <param name="command">il command con i parametri di input</param> public void Handle(AddRuoliUtenteCommand command) { var listaPin = new List <PinNodo>(); var sediAlberate = _getAlberaturaUnitaOperative.ListaSediAlberata(); foreach (var ruolo in command.Ruoli) { listaPin.Add(new PinNodo(ruolo.CodSede, ruolo.Ricorsivo)); foreach (var figli in sediAlberate.GetSottoAlbero(listaPin)) { if (figli.Codice.Equals(ruolo.CodSede)) { ruolo.DescSede = figli.Nome; } } } _addRuoli.Add(command.CodFiscale, command.Ruoli); }
/// <summary> /// metodo della classe che recupera i ruoli appartenenti ad un utente /// </summary> /// <param name="id">Id dell'utente su mongo</param> /// <returns>L'utente</returns> public bool GetAutorizzazioniUtente(List <Role> ruoli, string codSedeDaVerificare, string ruoloNecessario) { var listaSediAlberate = _getListaUO.ListaSediAlberata(); var listaPin = new List <PinNodo>(); foreach (var ruolo in ruoli.FindAll(x => x.Descrizione.Equals(ruoloNecessario))) { listaPin.Add(new PinNodo(ruolo.CodSede, ruolo.Ricorsivo)); } foreach (var unita in listaSediAlberate.GetSottoAlbero(listaPin)) { if (unita.Codice.Equals(codSedeDaVerificare)) { return(true); } } return(false); }
/// <summary> /// metodo della classe /// </summary> /// <param name="command">il command con i parametri di ingresso</param> public void Handle(AddUtenteCommand command) { var utenteSO = _getUtenteByCF.Get(command.CodFiscale); var personale = _personaleByCF.Get(command.CodFiscale).Result; var listaPin = new List <PinNodo>(); var sediAlberate = _getAlberaturaUnitaOperative.ListaSediAlberata(); var distaccamento = _getDistaccamentoByCodiceSede.Get(personale.CodSede).Result; foreach (var ruolo in command.Ruoli) { listaPin.Add(new PinNodo(ruolo.CodSede, ruolo.Ricorsivo)); foreach (var figli in sediAlberate.GetSottoAlbero(listaPin)) { if (figli.Codice.Equals(ruolo.CodSede)) { ruolo.DescSede = figli.Nome; } } } if (_checkOmonimia.FindUserByUs(personale.Nominativo.Replace(" ", "").ToLower()) != null) { personale.Nominativo = personale.Nominativo.Replace(" ", "").ToLower() + "1"; } //Test di refresh chain var utenteVVF = new Utente(command.CodFiscale, personale.Nominativo.Split(".")[0], personale.Nominativo.Split(".")[1]) { Ruoli = command.Ruoli, Username = personale.Nominativo.Replace(" ", "").ToLower(), Password = "******", Sede = new Sede($"{distaccamento.CodSede}", distaccamento.DescDistaccamento, distaccamento.Indirizzo, distaccamento.Coordinate, "", "", "", "", "") }; if (utenteSO != null) { _addRuoli.Add(command.CodFiscale, command.Ruoli); } else { _addUtente.Add(utenteVVF); } }
public bool Check(List <Role> ruoliDaAggiungere, string codiceFiscaleUtenteDaControllare) { var utente = _getUtenteByCF.Get(codiceFiscaleUtenteDaControllare); if (utente != null) { var listaSediAlberate = _getListaUO.ListaSediAlberata(); List <Role> listaRuoliEsplosaPerRicorsivita = new List <Role>(); foreach (var ruolo in utente.Ruoli) { var listaPin = new List <PinNodo>(); PinNodo pin = new PinNodo(ruolo.CodSede, ruolo.Ricorsivo); listaPin.Add(pin); foreach (var unita in listaSediAlberate.GetSottoAlbero(listaPin)) { Role ruoloEsploso = new Role(ruolo.Descrizione, unita.Codice); listaRuoliEsplosaPerRicorsivita.Add(ruoloEsploso); } } var risultato = listaRuoliEsplosaPerRicorsivita.Where(o => ruoliDaAggiungere.Any(s => o.CodSede.Equals(s.CodSede) && o.Descrizione.Equals(s.Descrizione))).ToList(); if (risultato.Count > 0) { return(false); } else { return(true); } } else { return(true); } }
public List <SintesiRichiestaMarker> GetListaRichiesteMarker(SintesiRichiesteAssistenzaMarkerQuery query) { var listaSintesiRichieste = new List <RichiestaAssistenza>(); var pinNodi = new List <PinNodo>(); foreach (var sede in query.CodiciSedi) { pinNodi.Add(new PinNodo(sede, true)); } query.Filtro = new API.Models.Servizi.Infrastruttura.GestioneSoccorso.RicercaRichiesteAssistenza.FiltroRicercaRichiesteAssistenza { UnitaOperative = pinNodi.ToHashSet() }; var listaSediAlberate = _getAlberaturaUnitaOperative.ListaSediAlberata(); foreach (var figlio in listaSediAlberate.GetSottoAlbero(query.Filtro.UnitaOperative)) { listaSintesiRichieste.AddRange(_dbContext.RichiestaAssistenzaCollection.Find(Builders <RichiestaAssistenza> .Filter.Eq(x => x.CodSOCompetente, figlio.Codice)).ToList()); } var listaSintesiRichiesteMarker = new List <SintesiRichiestaMarker>(); foreach (RichiestaAssistenza richiesta in listaSintesiRichieste) { SintesiRichiestaMarker sintesi = new SintesiRichiestaMarker() { Aperta = richiesta.Aperta, Chiusa = richiesta.Chiusa, Codice = richiesta.Codice, CodiceRichiesta = richiesta.CodRichiesta, Descrizione = richiesta.Descrizione, Id = richiesta.Id, InAttesa = richiesta.InAttesa, IstantePrimaAssegnazione = richiesta.IstantePrimaAssegnazione, Localita = richiesta.Localita, Presidiata = richiesta.Presidiata, PrioritaRichiesta = richiesta.PrioritaRichiesta, RilevanteGrave = richiesta.RilevanteGrave, RilevanteStArCu = richiesta.RilevanteStArCu, Sospesa = richiesta.Sospesa, Tipologie = _getTipologie.Get(richiesta.Tipologie) }; listaSintesiRichiesteMarker.Add(sintesi); } List <SintesiRichiestaMarker> listaSintesiRichiestaMarkers; if (listaSintesiRichiesteMarker == null) { return(null); } switch (query.FiltroCentroMappa) { case null: return(listaSintesiRichiesteMarker); default: listaSintesiRichiestaMarkers = listaSintesiRichiesteMarker.Where(richiesta => (richiesta.Localita.Coordinate.Latitudine >= query.FiltroCentroMappa.BottomLeft.Latitudine) && (richiesta.Localita.Coordinate.Latitudine <= query.FiltroCentroMappa.TopRight.Latitudine) && (richiesta.Localita.Coordinate.Longitudine >= query.FiltroCentroMappa.BottomLeft.Longitudine) && (richiesta.Localita.Coordinate.Longitudine <= query.FiltroCentroMappa.TopRight.Longitudine)) .ToList(); break; } if (query.FiltroCentroMappa.FiltroRichieste == null) { return(listaSintesiRichiestaMarkers); } var listaRichiesteFiltrate = new List <SintesiRichiestaMarker>(); if (!query.FiltroCentroMappa.FiltroRichieste.Stato.Any()) { return(query.FiltroCentroMappa.FiltroRichieste.Priorita == null ? listaSintesiRichiestaMarkers : listaSintesiRichiestaMarkers.FindAll(x => x.PrioritaRichiesta >= query.FiltroCentroMappa.FiltroRichieste.Priorita)); } ; foreach (var statoRichiesta in query.FiltroCentroMappa.FiltroRichieste.Stato) { if (statoRichiesta == Costanti.RichiestaAssegnata) { listaRichiesteFiltrate.AddRange( listaSintesiRichiesteMarker.FindAll(x => x.Stato == Costanti.RichiestaAssegnata)); } if (statoRichiesta == Costanti.RichiestaPresidiata) { listaRichiesteFiltrate.AddRange( listaSintesiRichiesteMarker.FindAll(x => x.Stato == Costanti.RichiestaPresidiata)); } if (statoRichiesta == Costanti.Chiamata) { listaRichiesteFiltrate.AddRange( listaSintesiRichiesteMarker.FindAll(x => x.Stato == Costanti.Chiamata)); } if (statoRichiesta == Costanti.RichiestaSospesa) { listaRichiesteFiltrate.AddRange( listaSintesiRichiesteMarker.FindAll(x => x.Stato == Costanti.RichiestaSospesa)); } } return(query.FiltroCentroMappa.FiltroRichieste.Priorita == null ? listaRichiesteFiltrate : listaRichiesteFiltrate.FindAll(x => x.PrioritaRichiesta >= query.FiltroCentroMappa.FiltroRichieste.Priorita)); }
/// <summary> /// Query che estrae tutti i parametri iniziali della Home Page /// </summary> /// <param name="query">Filtri utilizzati per l'estrazione</param> /// <returns>Tutti i parametri iniziali della Home Page</returns> public WelcomeResult Handle(WelcomeQuery query) { Log.Debug("Inizio elaborazione Welcome Handler"); var listaSediAlberate = _getAlberaturaUnitaOperative.ListaSediAlberata(); var pinNodi = new List <PinNodo>(); var pinNodiNoDistaccamenti = new List <PinNodo>(); foreach (var sede in query.CodiceSede) { pinNodi.Add(new PinNodo(sede, true)); pinNodiNoDistaccamenti.Add(new PinNodo(sede, true)); } foreach (var figlio in listaSediAlberate.GetSottoAlbero(pinNodi)) { pinNodi.Add(new PinNodo(figlio.Codice, true)); } FiltroRicercaRichiesteAssistenza filtro = new FiltroRicercaRichiesteAssistenza { SearchKey = "0", idOperatore = query.idOperatore, UnitaOperative = pinNodi.ToHashSet() }; var sintesiRichiesteAssistenzaQuery = new SintesiRichiesteAssistenzaQuery() { CodiciSede = query.CodiceSede, Filtro = filtro }; var filtri = _filtriHandler.Get(); filtri.Distaccamenti = _getDistaccamenti.GetListaDistaccamenti(pinNodiNoDistaccamenti); try { var boxListaInterventi = _boxRichiesteHandler.Get(pinNodi.ToHashSet()); var boxListaMezzi = _boxMezziHandler.Get(query.CodiceSede); var boxListaPersonale = _boxPersonaleHandler.Get(query.CodiceSede); var listaChiamateInCorso = _listaChiamateInCorsoMarkerHandler.Get(pinNodi); var listaSintesi = _sintesiRichiesteAssistenzaHandler.Handle(sintesiRichiesteAssistenzaQuery); var centroMappaMarker = _centroMappaMarkerHandler.GetCentroMappaMarker(query.CodiceSede[0]); var listaFiltri = filtri; var infoNue = _getConteggioSchedeHandler.GetConteggio(query.CodiceSede); var tipologie = _tipologieQueryHandler.Get(); var welcome = new SO115App.Models.Classi.Condivise.Welcome() { BoxListaInterventi = boxListaInterventi, BoxListaMezzi = boxListaMezzi, BoxListaPersonale = boxListaPersonale, ListaChiamateInCorso = listaChiamateInCorso, ListaSintesi = listaSintesi, CentroMappaMarker = centroMappaMarker, ListaFiltri = listaFiltri, InfoNue = infoNue, Tipologie = tipologie }; Log.Debug("Fine elaborazione Welcome Handler"); return(new WelcomeResult() { WelcomeRes = welcome }); } catch (System.Exception ex) { throw; } }
public async Task <List <Squadra> > Get(List <string> sedi) { var pinNodi = sedi.Select(s => new PinNodo(s, true)); var ListaCodiciSedi = new List <string>(); var listaSediAlberate = _getAlberaturaUnitaOperative.ListaSediAlberata(); foreach (var figlio in listaSediAlberate.GetSottoAlbero(pinNodi)) { var codice = figlio.Codice; string codiceE = ""; codiceE = ListaCodiciSedi.Find(x => x.Equals(codice)); if (string.IsNullOrEmpty(codiceE)) { ListaCodiciSedi.Add(codice); } } #region LEGGO DA JSON FAKE var filepath = Costanti.ListaSquadre; string json; using (var r = new StreamReader(filepath)) { json = r.ReadToEnd(); } #endregion LEGGO DA JSON FAKE //PAGINARE QUI LE SQUADRE var listaSquadreJson = JsonConvert.DeserializeObject <List <SquadraFake> >(json); var lstcodicifiscali = listaSquadreJson .SelectMany(c => c.ComponentiSquadra).Select(c => c.CodiceFiscale).Distinct().ToArray(); var lstVVF = _getPersonaleByCF.Get(lstcodicifiscali, sedi.ToArray()).Result; var result = new List <Squadra>(); Parallel.ForEach(ListaCodiciSedi, CodSede => { var listaSquadraBySede = new List <Squadra>(); if (!_memoryCache.TryGetValue("listaSquadre-" + CodSede, out listaSquadraBySede)) { #region LEGGO DA API ESTERNA //_client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("test"); //var response = await _client.GetAsync($"{_configuration.GetSection("DataFakeImplementation").GetSection("UrlAPISquadre").Value}/GetListaSquadreByCodComando?CodComando={CodSede}").ConfigureAwait(false); //response.EnsureSuccessStatusCode(); //using HttpContent content = response.Content; //string data = await content.ReadAsStringAsync().ConfigureAwait(false); //List<SquadraFake> ListaSquadreSede = JsonConvert.DeserializeObject<List<SquadraFake>>(data); #endregion LEGGO DA API ESTERNA var ListaSquadreSede = listaSquadreJson.FindAll(x => x.Sede.Equals(CodSede)); var listaSquadraBySedeAppo = new List <Squadra>(); foreach (var squadraFake in ListaSquadreSede) { Squadra squadra; lock (squadraFake) squadra = MapSqaudra(squadraFake, lstVVF); listaSquadraBySedeAppo.Add(squadra); lock (result) result.Add(squadra); } var cacheEntryOptions = new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromHours(4)); _memoryCache.Set("listaSquadre-" + CodSede, listaSquadraBySedeAppo, cacheEntryOptions); } else { lock (result) { result.AddRange(listaSquadraBySede); } } }); return(result); }
public async Task <List <Squadra> > Get(List <string> sedi) { List <Squadra> listaSquadre = new List <Squadra>(); List <string> ListaCodiciSedi = new List <string>(); var listaSediAlberate = _getAlberaturaUnitaOperative.ListaSediAlberata(); var pinNodi = new List <PinNodo>(); foreach (var sede in sedi) { pinNodi.Add(new PinNodo(sede, true)); } foreach (var figlio in listaSediAlberate.GetSottoAlbero(pinNodi)) { var codice = figlio.Codice; string codiceE = ""; codiceE = ListaCodiciSedi.Find(x => x.Equals(codice)); if (string.IsNullOrEmpty(codiceE)) { ListaCodiciSedi.Add(codice); } } var ListaMezzi = new List <Mezzo>(); foreach (string CodSede in ListaCodiciSedi) { List <Squadra> listaSquadraBySede = new List <Squadra>(); if (!_memoryCache.TryGetValue("listaSquadre-" + CodSede, out listaSquadraBySede)) { #region LEGGO DA API ESTERNA //_client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("test"); //var response = await _client.GetAsync($"{_configuration.GetSection("DataFakeImplementation").GetSection("UrlAPISquadre").Value}/GetListaSquadreByCodComando?CodComando={CodSede}").ConfigureAwait(false); //response.EnsureSuccessStatusCode(); //using HttpContent content = response.Content; //string data = await content.ReadAsStringAsync().ConfigureAwait(false); //List<SquadraFake> ListaSquadreSede = JsonConvert.DeserializeObject<List<SquadraFake>>(data); #endregion LEGGO DA API ESTERNA #region LEGGO DA JSON FAKE var filepath = Costanti.ListaSquadre; string json; using (var r = new StreamReader(filepath)) { json = r.ReadToEnd(); } var listaSquadreJson = JsonConvert.DeserializeObject <List <SquadraFake> >(json); List <SquadraFake> ListaSquadreSede = listaSquadreJson.FindAll(x => x.Sede.Equals(CodSede)); #endregion LEGGO DA JSON FAKE List <Squadra> listaSquadraBySedeAppo = new List <Squadra>(); foreach (SquadraFake squadraFake in ListaSquadreSede) { var squadra = MapSqaudra(squadraFake, CodSede); listaSquadraBySedeAppo.Add(squadra); listaSquadre.Add(squadra); } var cacheEntryOptions = new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromHours(4)); _memoryCache.Set("listaSquadre-" + CodSede, listaSquadraBySedeAppo, cacheEntryOptions); } else { listaSquadre.AddRange(listaSquadraBySede); } } return(listaSquadre); }
public async Task <List <Mezzo> > Get(List <string> sedi, string genereMezzo = null, string codiceMezzo = null) { var ListaCodiciSedi = new List <string>(); var ListaCodiciComandi = new List <string>(); var listaSediAlberate = _getAlberaturaUnitaOperative.ListaSediAlberata(); var pinNodi = sedi.Select(sede => new PinNodo(sede, true)).ToList(); foreach (var figlio in listaSediAlberate.GetSottoAlbero(pinNodi)) { var codice = figlio.Codice; string codiceE = ""; codiceE = ListaCodiciSedi.Find(x => x.Equals(codice)); if (string.IsNullOrEmpty(codiceE)) { if (!ListaCodiciComandi.Contains(codice.Split('.')[0])) { ListaCodiciComandi.Add(codice.Split('.')[0]); } ListaCodiciSedi.Add(codice); } } var ListaAnagraficaMezzo = new List <AnagraficaMezzo>(); var ListaPosizioneFlotta = _getPosizioneFlotta.Get(0).Result; #region LEGGO DA API ESTERNA GetToken getToken = new GetToken(_client, _configuration, _memoryCache, _writeLog, _httpContext); var token = getToken.GeneraToken(); var lstMezziDto = new List <MezzoDTO>(); Parallel.ForEach(sedi, sede => { var httpManager = new HttpRequestManager <List <MezzoDTO> >(_client, _memoryCache, _writeLog, _httpContext, _configuration); httpManager.Configure("Mezzi_" + sede); var lstSediQueryString = string.Join("&codiciSedi=", ListaCodiciSedi.Where(s => sede.Contains(s.Split(".")[0])).ToArray()); var url = new Uri($"{_configuration.GetSection("UrlExternalApi").GetSection("GacApi").Value}{Costanti.GacGetMezziUtilizzabili}?codiciSedi={lstSediQueryString}"); lock (lstMezziDto) lstMezziDto.AddRange(httpManager.GetAsync(url, token).Result); }); #endregion LEGGO DA API ESTERNA var ListaStatiOperativiMezzi = _getStatoMezzi.Get(sedi.ToArray()); var ListaMezzi = lstMezziDto.Select(m => { //if (!mezzoFake.Equals("CMOB")) //{ var mezzo = MapMezzo(m); if (mezzo != null) { //listaMezziBySedeAppo.Add(mezzo); return(mezzo); } //} if (ListaStatiOperativiMezzi.Count > 0) { mezzo.Stato = ListaStatiOperativiMezzi.Find(x => x.CodiceMezzo.Equals(mezzo.Codice)).StatoOperativo; } else { mezzo.Stato = Costanti.MezzoInSede; } return(mezzo); }).ToList(); return(ListaMezzi); }
public async Task <List <Mezzo> > Get(List <string> sedi, string genereMezzo = null, string codiceMezzo = null, List <MessaggioPosizione> posizioneFlotta = null) { var pinNodi = sedi.Select(s => new PinNodo(s, true)); var ListaCodiciComandi = new List <string>(); var ListaCodiciSedi = new List <string>(); var listaSediAlberate = _getAlberaturaUnitaOperative.ListaSediAlberata(); foreach (var figlio in listaSediAlberate.GetSottoAlbero(pinNodi)) { var codice = figlio.Codice; string codiceE = ""; codiceE = ListaCodiciSedi.Find(x => x.Equals(codice)); if (string.IsNullOrEmpty(codiceE)) { if (!ListaCodiciComandi.Contains(codice.Split('.')[0])) { ListaCodiciComandi.Add(codice.Split('.')[0]); } ListaCodiciSedi.Add(codice); } } var ListaPosizioneFlotta = new List <MessaggioPosizione>(); if (posizioneFlotta == null) { ListaPosizioneFlotta = _getPosizioneFlotta.Get(0).Result; } else { ListaPosizioneFlotta = posizioneFlotta; } var ListaAnagraficaMezzo = GetAnagraficaMezziByCodComando(ListaCodiciComandi).Result; var ListaMezzi = new List <Mezzo>(); #region LEGGO DA API ESTERNA GetToken getToken = new GetToken(_client, _configuration, _memoryCache, _writeLog, _httpContext); var token = getToken.GeneraToken(); var lstMezziDto = new List <MezzoDTO>(); try { Parallel.ForEach(sedi, sede => { var httpManager = new HttpRequestManager <List <MezzoDTO> >(_client, _memoryCache, _writeLog, _httpContext, _configuration); httpManager.Configure("Mezzi_" + sede); var lstSediQueryString = string.Join("&codiciSedi=", ListaCodiciSedi.Where(s => sede.Contains(s.Split(".")[0])).ToArray()); var url = new Uri($"{_configuration.GetSection("UrlExternalApi").GetSection("GacApi").Value}{Classi.Costanti.GacGetMezziUtilizzabili}?codiciSedi={lstSediQueryString}"); lock (lstMezziDto) lstMezziDto.AddRange(httpManager.GetAsync(url, token).Result); }); } catch (Exception e) { throw new Exception("Elenco dei mezzi non disponibile"); } #endregion LEGGO DA API ESTERNA //MAPPING ListaMezzi = lstMezziDto.Select(m => { //if (!mezzoFake.Equals("CMOB")) //{ var anagraficaMezzo = ListaAnagraficaMezzo.Find(x => x.Targa.Equals(m.Descrizione)); var mezzo = MapMezzo(anagraficaMezzo, m); if (mezzo != null) { //listaMezziBySedeAppo.Add(mezzo); ListaMezzi.Add(mezzo); } //} return(mezzo); }).ToList(); ListaMezzi = ListaMezzi.Select(mezzo => { var CoordinateMezzoGeoFleet = ListaPosizioneFlotta.Find(x => x.CodiceMezzo.Equals(mezzo.Codice)); if (CoordinateMezzoGeoFleet == null) { mezzo.Coordinate = mezzo.Distaccamento.Coordinate; mezzo.CoordinateFake = true; } else { mezzo.Coordinate = new Coordinate(CoordinateMezzoGeoFleet.Localizzazione.Lat, CoordinateMezzoGeoFleet.Localizzazione.Lon); mezzo.CoordinateFake = false; } return(mezzo); }).ToList(); return(GetListaMezziConStatoAggiornat(ListaMezzi)); }
/// <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() }); }
/// <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 listaSediUtenteAbilitate = query.Operatore.Ruoli.Where(x => x.Descrizione.Equals(Costanti.GestoreRichieste)).ToHashSet(); var listaSediAlberate = _getAlberaturaUnitaOperative.ListaSediAlberata(); /// <summary> ///Faccio gestire esclusivamente i Mezzi in Servizio delle Sedi nel quale l'operatore ha il ruolo di Gestore Richieste /// </summary> var pinNodi = listaSediUtenteAbilitate.Select(sede => new PinNodo(sede.CodSede, true)).ToList(); /// <summary> /// Aggiungo alla Sede principale gli eventuali sotto Nodi /// </summary> pinNodi.AddRange(listaSediAlberate.GetSottoAlbero(pinNodi).Select(figlio => new PinNodo(figlio.Codice, true))); var listaMezzi = _getListaMezzi.Get(query.CodiciSede) //FILTRI .Where(c => { if (query.Filters != null && query.Filters.StatiMezzo != null && query.Filters.StatiMezzo.Count() > 0) { return(query.Filters.StatiMezzo.Contains(c.Mezzo.Mezzo.Stato)); } else { return(true); } }).Where(c => { if (query.Filters != null && !string.IsNullOrEmpty(query.Filters.Search)) { return(c.Mezzo.Mezzo.Descrizione.Contains(query.Filters.Search) || (c.Mezzo.Mezzo.IdRichiesta != null && c.Mezzo.Mezzo.IdRichiesta.Contains(query.Filters.Search))); } else { return(true); } }).ToList(); //GESTISCO PAGINAZIONE if (query.Pagination != null) { return new ListaMezziInServizioResult() { DataArray = listaMezzi .Skip(query.Pagination.PageSize * (query.Pagination.Page - 1)) .Take(query.Pagination.PageSize).ToList(), Pagination = new SO115App.Models.Classi.Condivise.Paginazione() { Page = query.Pagination.Page, PageSize = query.Pagination.PageSize, TotalItems = listaMezzi.Count, } } } ; else { return new ListaMezziInServizioResult() { DataArray = listaMezzi } }; } }
public async Task <List <Mezzo> > Get(List <string> sedi, string genereMezzo = null, string codiceMezzo = null) { var ListaCodiciSedi = new List <string>(); var listaSediAlberate = _getAlberaturaUnitaOperative.ListaSediAlberata(); var pinNodi = new List <PinNodo>(); foreach (var sede in sedi) { pinNodi.Add(new PinNodo(sede, true)); } foreach (var figlio in listaSediAlberate.GetSottoAlbero(pinNodi)) { var codice = figlio.Codice; string codiceE = ""; codiceE = ListaCodiciSedi.Find(x => x.Equals(codice)); if (string.IsNullOrEmpty(codiceE)) { ListaCodiciSedi.Add(codice); } } var ListAnagraficaMezzo = new List <AnagraficaMezzo>(); var ListaMezzi = new List <Mezzo>(); foreach (string CodSede in ListaCodiciSedi) { List <Mezzo> listaMezziBySede = new List <Mezzo>(); string nomeCache = "M_" + CodSede.Replace(".", ""); if (!_memoryCache.TryGetValue(nomeCache, out listaMezziBySede)) { #region LEGGO DA API ESTERNA //_client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("test"); //var response = await _client.GetAsync($"{_configuration.GetSection("DataFakeImplementation").GetSection("UrlAPIMezzi").Value}/GetListaMezziByCodComando?CodComando={CodSede}").ConfigureAwait(false); //response.EnsureSuccessStatusCode(); //using HttpContent content = response.Content; //var data = await content.ReadAsStringAsync().ConfigureAwait(false); //var ListaMezziSede = JsonConvert.DeserializeObject<List<MezzoFake>>(data); #endregion LEGGO DA API ESTERNA #region LEGGO DA JSON FAKE var filepath = Costanti.ListaMezzi; string json; using (var r = new StreamReader(filepath)) { json = r.ReadToEnd(); } var listaMezzi = JsonConvert.DeserializeObject <List <MezzoFake> >(json); listaMezzi.FindAll(x => x.Sede.Equals(CodSede)).ToList(); var ListaMezziSede = listaMezzi.FindAll(x => x.Sede.Equals(CodSede)).ToList(); #endregion LEGGO DA JSON FAKE List <Mezzo> listaMezziBySedeAppo = new List <Mezzo>(); foreach (MezzoFake mezzoFake in ListaMezziSede) { if (!mezzoFake.CodDestinazione.Equals("CMOB")) { var anagraficaMezzo = GetAnagraficaMezzoByTarga(mezzoFake.Targa).Result; var mezzo = MapMezzo(anagraficaMezzo, mezzoFake); listaMezziBySedeAppo.Add(mezzo); ListaMezzi.Add(mezzo); } } var cacheEntryOptions = new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromHours(8)); _memoryCache.Set(nomeCache, listaMezziBySedeAppo, cacheEntryOptions); } else { ListaMezzi.AddRange(listaMezziBySede); } } return(GetListaMezziConStatoAggiornat(ListaMezzi)); }