Пример #1
0
        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));
            }
        }
Пример #2
0
        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);
        }
        /// <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)
        {
            var mapperSuIntervento = new MapperSintesiSuIntervento(_mapper);

            var listaSintesi = _iGetListaSintesi.GetListaSintesiRichieste(query.Filtro);

            return(new SintesiRichiesteAssistenzaResult()
            {
                SintesiRichiesta = listaSintesi
            });
        }
Пример #4
0
        public GetCountInterventiVicinanzeResult Handle(GetCountInterventiVicinanzeQuery query)
        {
            var competenze = _getCompetenze.GetCompetenzeByCoordinateIntervento(query.Coordinate);

            var lstPinNodo = competenze.Select(c => new PinNodo(c, true)).ToHashSet();

            var result = _getListaSintesi.GetListaSintesiRichieste(new FiltroRicercaRichiesteAssistenza()
            {
                UnitaOperative = lstPinNodo
            });

            return(new GetCountInterventiVicinanzeResult()
            {
                Count = result.Count
            });
        }
Пример #5
0
        /// <summary>
        ///   Metodo di esecuzione della query
        /// </summary>
        /// <param name="query">Il DTO di ingresso della query</param>
        /// <returns>Il DTO di uscita della query</returns>
        public 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
                }
            });
        }
Пример #6
0
        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);
        }