コード例 #1
0
        public async Task SendNotification(UpDateInterventoCommand intervento)
        {
            var SintesiRichiesta = _getSintesiById.GetSintesi(intervento.Chiamata.Codice);

            intervento.Chiamata = SintesiRichiesta;

            var SediDaNotificare = _getGerarchiaToSend.Get(intervento.Chiamata.CodSOCompetente, SintesiRichiesta.CodSOAllertate.ToArray());

            foreach (var sede in SediDaNotificare)
            {
                var boxRichiesteQuery = new BoxRichiesteQuery()
                {
                    CodiciSede = new string[] { sede }
                };

                var boxInterventi = _boxRichiesteHandler.Handle(boxRichiesteQuery).BoxRichieste;

                var sintesiRichiesteAssistenzaMarkerQuery = new SintesiRichiesteAssistenzaMarkerQuery()
                {
                    CodiciSedi = new string[] { sede }
                };

                var listaSintesiMarker = (List <SintesiRichiestaMarker>) this._sintesiRichiesteAssistenzaMarkerHandler.Handle(sintesiRichiesteAssistenzaMarkerQuery).SintesiRichiestaMarker;
                await _notificationHubContext.Clients.Group(sede).SendAsync("ModifyAndNotifySuccess", intervento);

                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxInterventi", boxInterventi);

                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetRichiestaUpDateMarker", listaSintesiMarker.LastOrDefault(marker => marker.Codice == intervento.Chiamata.Codice)).ConfigureAwait(false);
            }
        }
コード例 #2
0
        public async Task SendNotification(AddInterventoCommand intervento)
        {
            var sintesi = _getSintesiRichiestaByCodice.GetSintesi(intervento.Chiamata.Codice);

            var SediDaNotificare = _getGerarchiaToSend.Get(sintesi.CodSOCompetente);

            Parallel.ForEach(SediDaNotificare, sede =>
            {
                var boxRichiesteQuery = new BoxRichiesteQuery
                {
                    CodiciSede = new string[] { sede }
                };
                var boxInterventi = _boxRichiesteHandler.Handle(boxRichiesteQuery).BoxRichieste;

                var sintesiRichiesteAssistenzaMarkerQuery = new SintesiRichiesteAssistenzaMarkerQuery()
                {
                    CodiciSedi = new string[] { sede }
                };
                var listaSintesiMarker = (List <SintesiRichiestaMarker>)_sintesiRichiesteAssistenzaMarkerHandler.Handle(sintesiRichiesteAssistenzaMarkerQuery).SintesiRichiestaMarker;

                _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxInterventi", boxInterventi);
                _notificationHubContext.Clients.Group(sede).SendAsync("SaveAndNotifySuccessChiamata", sintesi);
                _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetRichiestaMarker", listaSintesiMarker.LastOrDefault(marker => marker.Codice == intervento.Chiamata.Codice));
            });
        }
コード例 #3
0
        public async Task SendNotification(RimozioneInLavorazioneCommand intervento)
        {
            var SediDaNotificare = new List <string>();

            if (intervento.Chiamata.CodSOAllertate != null)
            {
                SediDaNotificare = _getGerarchiaToSend.Get(intervento.Chiamata.CodSOCompetente, intervento.Chiamata.CodSOAllertate.ToArray());
            }
            else
            {
                SediDaNotificare = _getGerarchiaToSend.Get(intervento.Chiamata.CodSOCompetente);
            }

            foreach (var sede in SediDaNotificare)
            {
                var sintesiRichiesteAssistenzaQuery = new SintesiRichiesteAssistenzaQuery
                {
                    Filtro = new FiltroRicercaRichiesteAssistenza
                    {
                        idOperatore = intervento.IdUtente
                    },
                    CodiciSede = new string[] { sede }
                };

                var sintesiRichiesteAssistenzaMarkerQuery = new SintesiRichiesteAssistenzaMarkerQuery()
                {
                    CodiciSedi = new string[] { sede }
                };

                var listaSintesiMarker = _iGetListaRichieste.GetListaRichiesteMarker(sintesiRichiesteAssistenzaMarkerQuery);
                await _notificationHubContext.Clients.Group(sede).SendAsync("ModifyAndNotifySuccess", intervento);

                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetRichiestaUpDateMarker", listaSintesiMarker.LastOrDefault(marker => marker.Codice == intervento.Chiamata.Codice));
            }
        }
コード例 #4
0
        public async Task SendNotification(UpDateStatoRichiestaCommand richiesta)
        {
            const bool notificaChangeState             = true;
            var        sintesiRichiesteAssistenzaQuery = new SintesiRichiesteAssistenzaQuery();
            var        listaSintesi = (List <SintesiRichiesta>) this._sintesiRichiesteAssistenzaHandler.Handle(sintesiRichiesteAssistenzaQuery).SintesiRichiesta;

            var boxRichiesteQuery = new BoxRichiesteQuery();
            var boxInterventi     = _boxRichiesteHandler.Handle(boxRichiesteQuery).BoxRichieste;

            var boxMezziQuery = new BoxMezziQuery();
            var boxMezzi      = _boxMezziHandler.Handle(boxMezziQuery).BoxMezzi;

            var boxPersonaleQuery = new BoxPersonaleQuery();
            var boxPersonale      = _boxPersonaleHandler.Handle(boxPersonaleQuery).BoxPersonale;

            var sintesiRichiesteAssistenzaMarkerQuery = new SintesiRichiesteAssistenzaMarkerQuery();
            var listaSintesiMarker = (List <SintesiRichiestaMarker>)_sintesiRichiesteAssistenzaMarkerHandler.Handle(sintesiRichiesteAssistenzaMarkerQuery).SintesiRichiestaMarker;

            richiesta.Chiamata = listaSintesi.LastOrDefault(sintesi => sintesi.Id == richiesta.IdRichiesta);

            await _notificationHubContext.Clients.Group(richiesta.Chiamata.Operatore.Sede.Codice).SendAsync("ModifyAndNotifySuccess", richiesta);

            await _notificationHubContext.Clients.Group(richiesta.Chiamata.Operatore.Sede.Codice).SendAsync("ChangeStateSuccess", notificaChangeState);

            await _notificationHubContext.Clients.Group(richiesta.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetBoxInterventi", boxInterventi);

            await _notificationHubContext.Clients.Group(richiesta.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetBoxMezzi", boxMezzi);

            await _notificationHubContext.Clients.Group(richiesta.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetBoxPersonale", boxPersonale);

            await _notificationHubContext.Clients.Group(richiesta.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetRichiestaUpDateMarker", listaSintesiMarker.LastOrDefault(marker => marker.Codice == richiesta.Chiamata.Codice));
        }
コード例 #5
0
        public async Task SendNotification(PresaInCaricoCommand intervento)
        {
            var sintesiRichiesteAssistenzaQuery = new SintesiRichiesteAssistenzaQuery
            {
                Filtro = new FiltroRicercaRichiesteAssistenza
                {
                    idOperatore = intervento.IdUtente
                },
                CodiciSede = new string[] { intervento.CodSede }
            };
            var listaSintesi = (List <SintesiRichiesta>) this._sintesiRichiesteAssistenzaHandler.Handle(sintesiRichiesteAssistenzaQuery).SintesiRichiesta;

            var boxRichiesteQuery = new BoxRichiesteQuery()
            {
                CodiciSede = new string[] { intervento.CodSede }
            };
            var boxInterventi = this._boxRichiesteHandler.Handle(boxRichiesteQuery).BoxRichieste;

            var sintesiRichiesteAssistenzaMarkerQuery = new SintesiRichiesteAssistenzaMarkerQuery()
            {
                CodiciSedi = new string[] { intervento.CodSede }
            };

            var listaSintesiMarker = (List <SintesiRichiestaMarker>) this._sintesiRichiesteAssistenzaMarkerHandler.Handle(sintesiRichiesteAssistenzaMarkerQuery).SintesiRichiestaMarker;

            intervento.Chiamata = listaSintesi.LastOrDefault(richiesta => richiesta.Id == intervento.Chiamata.Id);

            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("ModifyAndNotifySuccess", intervento);

            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetBoxInterventi", boxInterventi);

            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetRichiestaUpDateMarker", listaSintesiMarker.LastOrDefault(marker => marker.Codice == intervento.Chiamata.Codice));
        }
コード例 #6
0
        public async Task SendNotification(UpDateStatoRichiestaCommand richiesta)
        {
            const bool notificaChangeState             = true;
            var        sintesiRichiesteAssistenzaQuery = new SintesiRichiesteAssistenzaQuery
            {
                Filtro = new FiltroRicercaRichiesteAssistenza
                {
                    idOperatore = richiesta.IdOperatore
                },
                CodiciSede = new string[] { richiesta.CodiceSede }
            };
            var boxRichiesteQuery = new BoxRichiesteQuery()
            {
                CodiciSede = new string[] { richiesta.CodiceSede }
            };
            var boxInterventi = _boxRichiesteHandler.Handle(boxRichiesteQuery).BoxRichieste;

            var boxMezziQuery = new BoxMezziQuery()
            {
                CodiciSede = new string[] { richiesta.CodiceSede }
            };
            var boxMezzi = _boxMezziHandler.Handle(boxMezziQuery).BoxMezzi;

            var boxPersonaleQuery = new BoxPersonaleQuery()
            {
                CodiciSede = new string[] { richiesta.CodiceSede }
            };
            var boxPersonale = _boxPersonaleHandler.Handle(boxPersonaleQuery).BoxPersonale;

            var sintesiRichiesteAssistenzaMarkerQuery = new SintesiRichiesteAssistenzaMarkerQuery()
            {
                CodiciSedi = new string[] { richiesta.CodiceSede }
            };

            var listaSintesiMarker = (List <SintesiRichiestaMarker>)_sintesiRichiesteAssistenzaMarkerHandler.Handle(sintesiRichiesteAssistenzaMarkerQuery).SintesiRichiestaMarker;
            var ChamataUpd         = listaSintesiMarker.LastOrDefault(sintesi => sintesi.Id == richiesta.IdRichiesta);

            var SintesiRichiesta = _getSintesiById.GetSintesi(ChamataUpd.Codice);

            richiesta.Chiamata = SintesiRichiesta;

            await _notificationHubContext.Clients.Group(richiesta.CodiceSede).SendAsync("ModifyAndNotifySuccess", richiesta);

            await _notificationHubContext.Clients.Group(richiesta.CodiceSede).SendAsync("ChangeStateSuccess", notificaChangeState);

            await _notificationHubContext.Clients.Group(richiesta.CodiceSede).SendAsync("NotifyGetBoxInterventi", boxInterventi);

            await _notificationHubContext.Clients.Group(richiesta.CodiceSede).SendAsync("NotifyGetBoxMezzi", boxMezzi);

            await _notificationHubContext.Clients.Group(richiesta.CodiceSede).SendAsync("NotifyGetBoxPersonale", boxPersonale);

            await _notificationHubContext.Clients.Group(richiesta.CodiceSede).SendAsync("NotifyGetRichiestaUpDateMarker", ChamataUpd);
        }
コード例 #7
0
        public async Task <IActionResult> Get()
        {
            var    headerValues = Request.Headers["HubConnectionId"];
            string ConId        = headerValues.FirstOrDefault();

            try
            {
                var      BoxMezziquery = new BoxMezziQuery();
                BoxMezzi boxMezzi      = new BoxMezzi();
                boxMezzi = (BoxMezzi)this._BoxMezzihandler.Handle(BoxMezziquery).BoxMezzi;
                await _NotificationHubContext.Clients.Client(ConId).SendAsync("NotifyGetBoxMezzi", boxMezzi);

                var          BoxPersonalequery = new BoxPersonaleQuery();
                BoxPersonale boxPersonale      = new BoxPersonale();
                boxPersonale = (BoxPersonale)this._BoxPersonalehandler.Handle(BoxPersonalequery).BoxPersonale;
                await _NotificationHubContext.Clients.Client(ConId).SendAsync("NotifyGetBoxPersonale", boxPersonale);

                var           BoxRichiestequery = new BoxRichiesteQuery();
                BoxInterventi boxInterventi     = new BoxInterventi();
                boxInterventi = (BoxInterventi)this._BoxRichiestehandler.Handle(BoxRichiestequery).BoxRichieste;
                await _NotificationHubContext.Clients.Client(ConId).SendAsync("NotifyGetBoxInterventi", boxInterventi);

                var SintesiMezziMarkerquery          = new SintesiMezziMarkerQuery();
                List <SintesiMezzoMarker> listaMezzi = new List <SintesiMezzoMarker>();
                listaMezzi = (List <SintesiMezzoMarker>) this._SintesiMezziMarkerhandler.Handle(SintesiMezziMarkerquery).SintesiMezziMarker;
                await _NotificationHubContext.Clients.Client(ConId).SendAsync("NotifyGetListaMezziMarker", listaMezzi);

                var SintesiRichiesteAssistenzaquery  = new SintesiRichiesteAssistenzaQuery();
                List <SintesiRichiesta> listaSintesi = new List <SintesiRichiesta>();
                listaSintesi = (List <SintesiRichiesta>) this._SintesiRichiesteAssistenzahandler.Handle(SintesiRichiesteAssistenzaquery).SintesiRichiesta;
                await _NotificationHubContext.Clients.Client(ConId).SendAsync("NotifyGetListaRichieste", listaSintesi);

                var query = new SintesiRichiesteAssistenzaMarkerQuery();
                List <SintesiRichiestaMarker> listaSintesiMarker = new List <SintesiRichiestaMarker>();
                listaSintesiMarker = (List <SintesiRichiestaMarker>) this._SintesiRichiesteAssistenzaMarkerhandler.Handle(query).SintesiRichiestaMarker;
                await _NotificationHubContext.Clients.Client(ConId).SendAsync("NotifyGetListaRichiesteMarker", listaSintesiMarker);

                var SintesiSediMarkerquery = new SintesiSediMarkerQuery();
                List <SintesiSedeMarker> listaSintesiSediMarker = new List <SintesiSedeMarker>();
                listaSintesiSediMarker = (List <SintesiSedeMarker>) this._SintesiSediMarkerhandler.Handle(SintesiSediMarkerquery).SintesiSediMarker;
                await _NotificationHubContext.Clients.Client(ConId).SendAsync("NotifyGetListaSediMarker", listaSintesiSediMarker);

                return(Ok());
            }
            catch
            {
                return(BadRequest());
            }
        }
コード例 #8
0
        public async Task <IActionResult> GetRichieste([FromBody] AreaMappa filtroCentroMappa)
        {
            try
            {
                var query = new SintesiRichiesteAssistenzaMarkerQuery()
                {
                    FiltroCentroMappa = filtroCentroMappa
                };

                return(Ok(this._sintesiRichiesteAssistenzaMarkerHandler.Handle(query).SintesiRichiestaMarker));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
コード例 #9
0
        public async Task SendNotification(RimozionePresaInCaricoCommand intervento)
        {
            var SediDaNotificare = new List <string>();

            if (intervento.Chiamata.CodSOAllertate != null)
            {
                SediDaNotificare = _getGerarchiaToSend.Get(intervento.Chiamata.CodSOCompetente, intervento.Chiamata.CodSOAllertate.ToArray());
            }
            else
            {
                SediDaNotificare = _getGerarchiaToSend.Get(intervento.Chiamata.CodSOCompetente);
            }

            foreach (var sede in SediDaNotificare)
            {
                var sintesiRichiesteAssistenzaQuery = new SintesiRichiesteAssistenzaQuery
                {
                    Filtro = new FiltroRicercaRichiesteAssistenza
                    {
                        idOperatore = intervento.IdUtente
                    },
                    CodiciSede = new string[] { sede }
                };
                var listaSintesi = (List <SintesiRichiesta>) this._sintesiRichiesteAssistenzaHandler.Handle(sintesiRichiesteAssistenzaQuery).SintesiRichiesta;
                intervento.Chiamata = listaSintesi.LastOrDefault(richiesta => richiesta.Id == intervento.Chiamata.Id);

                //var boxRichiestequery = new BoxRichiesteQuery()
                //{
                //    CodiciSede = new string[] { sede }
                //};
                //var boxInterventi = (BoxInterventi)this._boxRichiesteHandler.Handle(boxRichiestequery).BoxRichieste;
                //await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxInterventi", boxInterventi);

                var sintesiRichiesteAssistenzaMarkerQuery = new SintesiRichiesteAssistenzaMarkerQuery()
                {
                    CodiciSedi = new string[] { sede }
                };

                var listaSintesiMarker = (List <SintesiRichiestaMarker>) this._sintesiRichiesteAssistenzaMarkerHandler.Handle(sintesiRichiesteAssistenzaMarkerQuery).SintesiRichiestaMarker;

                await _notificationHubContext.Clients.Group(sede).SendAsync("ModifyAndNotifySuccess", intervento);

                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetRichiestaUpDateMarker", listaSintesiMarker.LastOrDefault(marker => marker.Codice == intervento.Chiamata.Codice));
            }
        }
コード例 #10
0
        public async Task SendNotification(UpDateInterventoCommand intervento)
        {
            var sintesiRichiesteAssistenzaQuery = new SintesiRichiesteAssistenzaQuery();
            var listaSintesi = (List <SintesiRichiesta>) this._sintesiRichiesteAssistenzaHandler.Handle(sintesiRichiesteAssistenzaQuery).SintesiRichiesta;

            var boxRichiesteQuery = new BoxRichiesteQuery();
            var boxInterventi     = _boxRichiesteHandler.Handle(boxRichiesteQuery).BoxRichieste;

            var sintesiRichiesteAssistenzaMarkerQuery = new SintesiRichiesteAssistenzaMarkerQuery();
            var listaSintesiMarker = (List <SintesiRichiestaMarker>) this._sintesiRichiesteAssistenzaMarkerHandler.Handle(sintesiRichiesteAssistenzaMarkerQuery).SintesiRichiestaMarker;

            intervento.Chiamata = listaSintesi.LastOrDefault(richiesta => richiesta.Codice == intervento.Chiamata.Codice);
            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("ModifyAndNotifySuccess", intervento);

            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetBoxInterventi", boxInterventi);

            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetRichiestaUpDateMarker", listaSintesiMarker.LastOrDefault(marker => marker.Codice == intervento.Chiamata.Codice)).ConfigureAwait(false);
        }
コード例 #11
0
        public async Task SendNotification(AggiornaStatoMezzoCommand intervento)
        {
            const bool notificaChangeState             = true;
            var        sintesiRichiesteAssistenzaQuery = new SintesiRichiesteAssistenzaQuery();
            var        listaSintesi = _sintesiRichiesteAssistenzahandler.Handle(sintesiRichiesteAssistenzaQuery).SintesiRichiesta;

            var boxRichiesteQuery = new BoxRichiesteQuery();
            var boxInterventi     = _boxRichiesteHandler.Handle(boxRichiesteQuery).BoxRichieste;

            var boxMezziQuery = new BoxMezziQuery();
            var boxMezzi      = _boxMezziHandler.Handle(boxMezziQuery).BoxMezzi;

            var boxPersonaleQuery = new BoxPersonaleQuery();
            var boxPersonale      = _boxPersonaleHandler.Handle(boxPersonaleQuery).BoxPersonale;

            var listaMezziInServizioQuery = new ListaMezziInServizioQuery
            {
                IdSede = intervento.CodiceSede
            };
            var listaMezziInServizio = _listaMezziInServizioHandler.Handle(listaMezziInServizioQuery).ListaMezzi;

            var sintesiRichiesteAssistenzaMarkerQuery = new SintesiRichiesteAssistenzaMarkerQuery();
            var listaSintesiMarker = _sintesiRichiesteAssistenzaMarkerhandler.Handle(sintesiRichiesteAssistenzaMarkerQuery).SintesiRichiestaMarker;

            intervento.Chiamata = listaSintesi.LastOrDefault(richiesta => richiesta.Id == intervento.Chiamata.Id);

            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("ModifyAndNotifySuccess", intervento);

            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("ChangeStateSuccess", notificaChangeState);

            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetBoxInterventi", boxInterventi);

            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetBoxMezzi", boxMezzi);

            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetBoxPersonale", boxPersonale);

            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetListaMezziInServizio", listaMezziInServizio);

            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetRichiestaUpDateMarker", listaSintesiMarker.LastOrDefault(marker => marker.Codice == intervento.Chiamata.Codice));

            var queryListaMezzi  = new MezziMarkerQuery();
            var listaMezziMarker = _listaMezziMarkerHandler.Handle(queryListaMezzi).ListaMezziMarker;
            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetMezzoUpDateMarker", listaMezziMarker.LastOrDefault(marker => marker.Mezzo.IdRichiesta == intervento.Chiamata.Codice));
        }
コード例 #12
0
        public async Task SendNotification(ConfermaPartenzeCommand conferma)
        {
            var        mapper = new MapperRichiestaAssistenzaSuSintesi(_mapper);
            const bool notificaChangeState = true;

            var richiesta = conferma.ConfermaPartenze.richiesta;
            var sintesi   = mapper.Map(richiesta);

            sintesi.Motivazione = sintesi.Descrizione;

            var boxRichiesteQuery     = new BoxRichiesteQuery();
            var boxMezziQuery         = new BoxMezziQuery();
            var boxPersonaleQuery     = new BoxPersonaleQuery();
            var sintesiRichiesteQuery = new SintesiRichiesteAssistenzaQuery();
            var sintesiRichiesteAssistenzaMarkerQuery = new SintesiRichiesteAssistenzaMarkerQuery();
            var boxInterventi      = _boxRichiestehandler.Handle(boxRichiesteQuery).BoxRichieste;
            var boxMezzi           = _boxMezzihandler.Handle(boxMezziQuery).BoxMezzi;
            var boxPersonale       = _boxPersonalehandler.Handle(boxPersonaleQuery).BoxPersonale;
            var sintesiRichieste   = _sintesiRichiesteHandler.Handle(sintesiRichiesteQuery).SintesiRichiesta;
            var listaSintesiMarker = _sintesiRichiesteAssistenzaMarkerhandler.Handle(sintesiRichiesteAssistenzaMarkerQuery).SintesiRichiestaMarker;

            conferma.ConfermaPartenze.Chiamata = sintesi;

            await _notificationHubContext.Clients.Group(conferma.ConfermaPartenze.CodiceSede).SendAsync("ModifyAndNotifySuccess", conferma.ConfermaPartenze);

            if (conferma.ConfermaPartenze.IdRichiestaDaSganciare != null)
            {
                conferma.ConfermaPartenze.Chiamata = sintesiRichieste.LastOrDefault(x => x.Codice == conferma.ConfermaPartenze.IdRichiesta);
                await _notificationHubContext.Clients.Group(conferma.ConfermaPartenze.CodiceSede).SendAsync("ModifyAndNotifySuccess", conferma.ConfermaPartenze);

                conferma.ConfermaPartenze.Chiamata = sintesiRichieste.LastOrDefault(x => x.Codice == conferma.ConfermaPartenze.IdRichiestaDaSganciare);
                await _notificationHubContext.Clients.Group(conferma.ConfermaPartenze.CodiceSede).SendAsync("ModifyAndNotifySuccess", conferma.ConfermaPartenze);
            }

            await _notificationHubContext.Clients.Group(conferma.ConfermaPartenze.CodiceSede).SendAsync("ChangeStateSuccess", notificaChangeState);

            await _notificationHubContext.Clients.Group(conferma.ConfermaPartenze.CodiceSede).SendAsync("NotifyGetBoxInterventi", boxInterventi);

            await _notificationHubContext.Clients.Group(conferma.ConfermaPartenze.CodiceSede).SendAsync("NotifyGetBoxMezzi", boxMezzi);

            await _notificationHubContext.Clients.Group(conferma.ConfermaPartenze.CodiceSede).SendAsync("NotifyGetBoxPersonale", boxPersonale);

            await _notificationHubContext.Clients.Group(conferma.ConfermaPartenze.CodiceSede).SendAsync("NotifyGetRichiestaMarker", listaSintesiMarker.LastOrDefault(marker => marker.CodiceRichiesta == sintesi.CodiceRichiesta));
        }
コード例 #13
0
        public async Task SendNotification(AddInterventoCommand intervento)
        {
            var sintesiRichiesteAssistenzaQuery = new SintesiRichiesteAssistenzaQuery();
            var listaSintesi = (List <SintesiRichiesta>) this._sintesiRichiesteAssistenzaHandler.Handle(sintesiRichiesteAssistenzaQuery).SintesiRichiesta;

            var boxRichiesteQuery = new BoxRichiesteQuery();
            var boxInterventi     = (BoxInterventi)this._boxRichiesteHandler.Handle(boxRichiesteQuery).BoxRichieste;

            var sintesiRichiesteAssistenzaMarkerQuery = new SintesiRichiesteAssistenzaMarkerQuery();
            var listaSintesiMarker = (List <SintesiRichiestaMarker>) this._sintesiRichiesteAssistenzaMarkerHandler.Handle(sintesiRichiesteAssistenzaMarkerQuery).SintesiRichiestaMarker;

            var sintesi = listaSintesi.LastOrDefault(richiesta => richiesta.Codice == intervento.Chiamata.Codice);

            sintesi.Motivazione = sintesi.Descrizione;

            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("SaveAndNotifySuccessChiamata", sintesi);

            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetBoxInterventi", boxInterventi);

            await _notificationHubContext.Clients.Group(intervento.Chiamata.Operatore.Sede.Codice).SendAsync("NotifyGetRichiestaMarker", listaSintesiMarker.LastOrDefault(marker => marker.Codice == intervento.Chiamata.Codice));
        }
コード例 #14
0
        public async Task SendNotification(AddInterventoCommand intervento)
        {
            var boxRichiesteQuery = new BoxRichiesteQuery
            {
                CodiciSede = new string[] { intervento.CodiceSede }
            };
            var boxInterventi = (BoxInterventi)this._boxRichiesteHandler.Handle(boxRichiesteQuery).BoxRichieste;

            var sintesiRichiesteAssistenzaMarkerQuery = new SintesiRichiesteAssistenzaMarkerQuery()
            {
                CodiciSedi = new string[] { intervento.CodiceSede }
            };
            var listaSintesiMarker = (List <SintesiRichiestaMarker>) this._sintesiRichiesteAssistenzaMarkerHandler.Handle(sintesiRichiesteAssistenzaMarkerQuery).SintesiRichiestaMarker;

            var sintesi = _getSintesiRichiestaByCodice.GetSintesi(intervento.Chiamata.Codice);

            await _notificationHubContext.Clients.Group(intervento.CodiceSede).SendAsync("SaveAndNotifySuccessChiamata", sintesi);

            await _notificationHubContext.Clients.Group(intervento.CodiceSede).SendAsync("NotifyGetBoxInterventi", boxInterventi);

            await _notificationHubContext.Clients.Group(intervento.CodiceSede).SendAsync("NotifyGetRichiestaMarker", listaSintesiMarker.LastOrDefault(marker => marker.Codice == intervento.Chiamata.Codice));
        }
コード例 #15
0
ファイル: MarkerController.cs プロジェクト: somaliz/sovvf
        public async Task <IActionResult> GetRichieste([FromBody] AreaMappa filtroCentroMappa)
        {
            var codiciSedi = Request.Headers["codiceSede"].ToString().Split(',');

            try
            {
                var query = new SintesiRichiesteAssistenzaMarkerQuery()
                {
                    FiltroCentroMappa = filtroCentroMappa,
                    CodiciSedi        = codiciSedi
                };

                return(Ok(this._sintesiRichiesteAssistenzaMarkerHandler.Handle(query).SintesiRichiestaMarker));
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains(Costanti.UtenteNonAutorizzato))
                {
                    return(StatusCode(403, Costanti.UtenteNonAutorizzato));
                }
                return(BadRequest());
            }
        }
コード例 #16
0
ファイル: GetRichiesteMarker.cs プロジェクト: somaliz/sovvf
        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));
        }
コード例 #17
0
        public List <SintesiRichiestaMarker> GetListaRichiesteMarker(SintesiRichiesteAssistenzaMarkerQuery query)
        {
            var    filepath = CostantiJson.ListaRichiesteAssistenza;
            string json;

            using (StreamReader r = new StreamReader(filepath))
            {
                json = r.ReadToEnd();
            }

            var listaSintesiRichiesteMarker = JsonConvert.DeserializeObject <List <SintesiRichiestaMarker> >(json);
            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));
        }
コード例 #18
0
        public async Task SendNotification(ConfermaPartenzeCommand conferma)
        {
            //Sedi gerarchicamente superiori alla richiesta che dovanno ricevere la notifica
            var SediDaNotificare = new List <string>();

            if (conferma.Richiesta.CodSOAllertate != null)
            {
                SediDaNotificare = _getGerarchiaToSend.Get(conferma.Richiesta.CodSOCompetente, conferma.Richiesta.CodSOAllertate.ToArray());
            }
            else
            {
                SediDaNotificare = _getGerarchiaToSend.Get(conferma.Richiesta.CodSOCompetente);
            }

            //Sedi dei mezzi in partenza che dovranno ricevere la notifica
            SediDaNotificare.AddRange(conferma.ConfermaPartenze.Partenze.Select(c => c.Mezzo.Distaccamento.Codice));
            SediDaNotificare = SediDaNotificare.Distinct().ToList();

            var listaMezziInServizio = Task.Factory.StartNew(() => _getListaMezzi.Get(SediDaNotificare.ToArray()));
            var sintesi = Task.Factory.StartNew(() => _mapperSintesi.Map(conferma.Richiesta)).ContinueWith(sintesi =>
            {
                sintesi.Result.Competenze          = MapCompetenze(conferma.Richiesta.CodUOCompetenza);
                conferma.ConfermaPartenze.Chiamata = sintesi.Result;
                sintesi.Result.Motivazione         = sintesi.Result.Descrizione;

                return(sintesi.Result);
            });

            Parallel.ForEach(SediDaNotificare, sede =>
            {
                var CodSede = new string[] { sede };

                _notificationHubContext.Clients.Group(sede).SendAsync("ChangeStateSuccess", true);

                Task.Factory.StartNew(() =>
                {
                    var boxRichiesteQuery = new BoxRichiesteQuery()
                    {
                        CodiciSede = new string[] { sede }
                    };
                    var boxInterventi = _boxRichiestehandler.Handle(boxRichiesteQuery).BoxRichieste;
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxInterventi", boxInterventi);
                });

                Task.Factory.StartNew(() =>
                {
                    var boxMezziQuery = new BoxMezziQuery()
                    {
                        CodiciSede = new string[] { sede }
                    };
                    var boxMezzi = _boxMezzihandler.Handle(boxMezziQuery).BoxMezzi;
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxMezzi", boxMezzi);
                });

                Task.Factory.StartNew(() =>
                {
                    var boxPersonaleQuery = new BoxPersonaleQuery()
                    {
                        CodiciSede = new string[] { sede }
                    };
                    var boxPersonale = _boxPersonalehandler.Handle(boxPersonaleQuery).BoxPersonale;
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxPersonale", boxPersonale);
                });

                Task.Factory.StartNew(() =>
                {
                    var sintesiRichiesteAssistenzaMarkerQuery = new SintesiRichiesteAssistenzaMarkerQuery()
                    {
                        CodiciSedi = new string[] { sede }
                    };
                    var listaSintesiMarker = _sintesiRichiesteAssistenzaMarkerhandler.Handle(sintesiRichiesteAssistenzaMarkerQuery).SintesiRichiestaMarker;
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetRichiestaMarker", listaSintesiMarker.LastOrDefault(marker => marker.CodiceRichiesta == sintesi.Result.CodiceRichiesta));
                });

                Task.Factory.StartNew(() =>
                {
                    foreach (var partenze in conferma.ConfermaPartenze.Partenze)
                    {
                        _notificationHubContext.Clients.Group(sede).SendAsync("NotifyUpdateMezzoInServizio", listaMezziInServizio.Result.Find(x => x.Mezzo.Mezzo.Codice.Equals(partenze.Mezzo.Codice)));
                    }
                });

                conferma.ConfermaPartenze.Chiamata = sintesi.Result;
                _notificationHubContext.Clients.Group(sede).SendAsync("ModifyAndNotifySuccess", conferma.ConfermaPartenze);

                if (conferma.ConfermaPartenze.IdRichiestaDaSganciare != null)
                {
                    Task.Factory.StartNew(() =>
                    {
                        var sintesiSganciata               = _mapperSintesi.Map(conferma.RichiestaDaSganciare);
                        sintesiSganciata.Competenze        = MapCompetenze(conferma.Richiesta.CodUOCompetenza);
                        conferma.ConfermaPartenze.Chiamata = sintesiSganciata;
                        _notificationHubContext.Clients.Group(sede).SendAsync("ModifyAndNotifySuccess", conferma.ConfermaPartenze);
                    });
                }
            });
        }
コード例 #19
0
        public async Task SendNotification(UpDateStatoRichiestaCommand richiesta)
        {
            var Richiesta = _getRichiestaAssistenzaById.GetById(richiesta.IdRichiesta);

            var SediDaNotificare = new List <string>();

            if (Richiesta.CodSOAllertate != null)
            {
                SediDaNotificare = _getGerarchiaToSend.Get(Richiesta.CodSOCompetente, Richiesta.CodSOAllertate.ToArray());
            }
            else
            {
                SediDaNotificare = _getGerarchiaToSend.Get(Richiesta.CodSOCompetente);
            }

            const bool notificaChangeState = true;

            foreach (var sede in SediDaNotificare)
            {
                var sintesiRichiesteAssistenzaQuery = new SintesiRichiesteAssistenzaQuery
                {
                    Filtro = new FiltroRicercaRichiesteAssistenza
                    {
                        idOperatore = richiesta.IdOperatore
                    },
                    CodiciSede = new string[] { sede }
                };
                var boxRichiesteQuery = new BoxRichiesteQuery()
                {
                    CodiciSede = new string[] { sede }
                };
                var boxInterventi = _boxRichiesteHandler.Handle(boxRichiesteQuery).BoxRichieste;

                var boxMezziQuery = new BoxMezziQuery()
                {
                    CodiciSede = new string[] { sede }
                };
                var boxMezzi = _boxMezziHandler.Handle(boxMezziQuery).BoxMezzi;

                var boxPersonaleQuery = new BoxPersonaleQuery()
                {
                    CodiciSede = new string[] { sede }
                };
                var boxPersonale = _boxPersonaleHandler.Handle(boxPersonaleQuery).BoxPersonale;

                var sintesiRichiesteAssistenzaMarkerQuery = new SintesiRichiesteAssistenzaMarkerQuery()
                {
                    CodiciSedi = new string[] { sede }
                };

                var listaSintesiMarker = (List <SintesiRichiestaMarker>)_sintesiRichiesteAssistenzaMarkerHandler.Handle(sintesiRichiesteAssistenzaMarkerQuery).SintesiRichiestaMarker;
                var ChamataUpd         = listaSintesiMarker.LastOrDefault(sintesi => sintesi.Id == richiesta.IdRichiesta);

                var SintesiRichiesta = _getSintesiById.GetSintesi(ChamataUpd.Codice);
                richiesta.Chiamata = SintesiRichiesta;

                await _notificationHubContext.Clients.Group(sede).SendAsync("ModifyAndNotifySuccess", richiesta);

                await _notificationHubContext.Clients.Group(sede).SendAsync("ChangeStateSuccess", notificaChangeState);

                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxInterventi", boxInterventi);

                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxMezzi", boxMezzi);

                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxPersonale", boxPersonale);

                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetRichiestaUpDateMarker", ChamataUpd);
            }
        }
コード例 #20
0
        public async Task SendNotification(AnnullaPartenzaCommand command)
        {
            var SediDaNotificare = new List <string>();

            if (command.Richiesta.CodSOAllertate != null)
            {
                SediDaNotificare = _getGerarchiaToSend.Get(command.Richiesta.CodSOCompetente, command.Richiesta.CodSOAllertate.ToArray());
            }
            else
            {
                SediDaNotificare = _getGerarchiaToSend.Get(command.Richiesta.CodSOCompetente);
            }

            Parallel.ForEach(SediDaNotificare, sede =>
            {
                Task.Factory.StartNew(() =>
                {
                    var sintesiRichiesteAssistenzaQuery = new SintesiRichiesteAssistenzaQuery
                    {
                        Filtro = new FiltroRicercaRichiesteAssistenza
                        {
                            idOperatore = command.IdOperatore,
                            PageSize    = 99
                        },
                        CodiciSede = new string[] { sede }
                    };
                    var listaSintesi = _sintesiRichiesteAssistenzahandler.Handle(sintesiRichiesteAssistenzaQuery).SintesiRichiesta;
                    command.Chiamata = listaSintesi.LastOrDefault(richiesta => richiesta.Id == command.IdRichiesta);
                    var sintesiRichiesteAssistenzaMarkerQuery = new SintesiRichiesteAssistenzaMarkerQuery()
                    {
                        CodiciSedi = new string[] { sede }
                    };
                    var listaSintesiMarker = _sintesiRichiesteAssistenzaMarkerhandler.Handle(sintesiRichiesteAssistenzaMarkerQuery).SintesiRichiestaMarker;
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetRichiestaUpDateMarker", listaSintesiMarker.LastOrDefault(marker => marker.Codice == command.Chiamata.Codice));
                    return(command.Chiamata);
                }).ContinueWith(chiamata => _notificationHubContext.Clients.Group(sede).SendAsync("ModifyAndNotifySuccess", command));

                Task.Factory.StartNew(() =>
                {
                    var boxRichiesteQuery = new BoxRichiesteQuery()
                    {
                        CodiciSede = new string[] { sede }
                    };
                    var boxInterventi = _boxRichiesteHandler.Handle(boxRichiesteQuery).BoxRichieste;
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxInterventi", boxInterventi);
                });

                Task.Factory.StartNew(() =>
                {
                    var boxMezziQuery = new BoxMezziQuery()
                    {
                        CodiciSede = new string[] { sede }
                    };
                    var boxMezzi = _boxMezziHandler.Handle(boxMezziQuery).BoxMezzi;
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxMezzi", boxMezzi);
                });

                Task.Factory.StartNew(() =>
                {
                    var boxPersonaleQuery = new BoxPersonaleQuery()
                    {
                        CodiciSede = new string[] { sede }
                    };
                    var boxPersonale = _boxPersonaleHandler.Handle(boxPersonaleQuery).BoxPersonale;
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxPersonale", boxPersonale);
                });

                Task.Factory.StartNew(() =>
                {
                    var listaMezziInServizioQuery = new ListaMezziInServizioQuery
                    {
                        CodiciSede  = new string[] { sede },
                        IdOperatore = command.IdOperatore
                    };
                    var listaMezziInServizio = _listaMezziInServizioHandler.Handle(listaMezziInServizioQuery).DataArray;
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetListaMezziInServizio", listaMezziInServizio);
                });

                Task.Factory.StartNew(() =>
                {
                    var areaMappa = new AreaMappa()
                    {
                        CodiceSede = new List <string>()
                        {
                            sede
                        },
                        FiltroMezzi = new Models.Classi.Filtri.FiltroMezzi()
                        {
                            FiltraPerAreaMappa = false
                        }
                    };
                    var queryListaMezzi = new MezziMarkerQuery()
                    {
                        Filtro = areaMappa,
                    };
                    var listaMezziMarker = _listaMezziMarkerHandler.Handle(queryListaMezzi).ListaMezziMarker;
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetMezzoUpDateMarker", listaMezziMarker.LastOrDefault(marker => marker.Mezzo.IdRichiesta == command.Chiamata.Codice));
                });


                _notificationHubContext.Clients.Group(sede).SendAsync("ChangeStateSuccess", true);
            });
        }
コード例 #21
0
        public async Task SendNotification(AggiornaStatoMezzoCommand intervento)
        {
            var SediDaNotificare = intervento.CodiciSede.ToList();

            if (intervento.Richiesta.CodSOAllertate != null)
            {
                SediDaNotificare.AddRange(_getGerarchiaToSend.Get(intervento.Richiesta.CodSOCompetente, intervento.Richiesta.CodSOAllertate.ToArray()));
            }
            else
            {
                SediDaNotificare.AddRange(_getGerarchiaToSend.Get(intervento.Richiesta.CodSOCompetente));
            }

            var sintesiRichiesteAssistenzaQuery = new SintesiRichiesteAssistenzaQuery
            {
                Filtro = new FiltroRicercaRichiesteAssistenza
                {
                    idOperatore            = intervento.IdUtente,
                    PageSize               = 99,
                    IncludiRichiesteChiuse = true
                },
                CodiciSede = SediDaNotificare.ToArray()
            };
            var listaSintesi = _sintesiRichiesteAssistenzahandler.Handle(sintesiRichiesteAssistenzaQuery).SintesiRichiesta;

            intervento.Chiamata = listaSintesi.LastOrDefault(richiesta => richiesta.Codice == intervento.CodRichiesta);

            Task.Factory.StartNew(() =>
            {
                var listaMezziInServizioQuery = new ListaMezziInServizioQuery
                {
                    CodiciSede  = intervento.CodiciSede,
                    IdOperatore = intervento.IdUtente
                };
                var listaMezziInServizio = _listaMezziInServizioHandler.Handle(listaMezziInServizioQuery).DataArray;
                var mezzo = listaMezziInServizio.Find(x => x.Mezzo.Mezzo.Codice.Equals(intervento.IdMezzo));

                foreach (var sede in listaMezziInServizioQuery.CodiciSede)
                {
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyUpdateMezzoInServizio", mezzo);
                }
            });

            Parallel.ForEach(SediDaNotificare.Distinct(), sede =>
            {
                _notificationHubContext.Clients.Group(sede).SendAsync("ModifyAndNotifySuccess", intervento);
                _notificationHubContext.Clients.Group(sede).SendAsync("ChangeStateSuccess", true);

                Task.Factory.StartNew(() =>
                {
                    var boxMezziQuery = new BoxMezziQuery()
                    {
                        CodiciSede = new string[] { sede }
                    };
                    var boxMezzi = _boxMezziHandler.Handle(boxMezziQuery).BoxMezzi;
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxMezzi", boxMezzi);
                });

                Task.Factory.StartNew(() =>
                {
                    var boxRichiesteQuery = new BoxRichiesteQuery()
                    {
                        CodiciSede = new string[] { sede }
                    };
                    var boxInterventi = _boxRichiesteHandler.Handle(boxRichiesteQuery).BoxRichieste;
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxInterventi", boxInterventi);
                });

                Task.Factory.StartNew(() =>
                {
                    var boxPersonaleQuery = new BoxPersonaleQuery()
                    {
                        CodiciSede = new string[] { sede }
                    };
                    var boxPersonale = _boxPersonaleHandler.Handle(boxPersonaleQuery).BoxPersonale;
                    _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetBoxPersonale", boxPersonale);
                });

                if (intervento.Chiamata != null)
                {
                    Task.Factory.StartNew(() =>
                    {
                        var sintesiRichiesteAssistenzaMarkerQuery = new SintesiRichiesteAssistenzaMarkerQuery()
                        {
                            CodiciSedi = new string[] { sede }
                        };
                        var listaSintesiMarker = _sintesiRichiesteAssistenzaMarkerhandler.Handle(sintesiRichiesteAssistenzaMarkerQuery).SintesiRichiestaMarker;
                        _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetRichiestaUpDateMarker", listaSintesiMarker.LastOrDefault(marker => marker.Codice == intervento.Chiamata.Codice));
                    });

                    Task.Factory.StartNew(() =>
                    {
                        var queryListaMezzi = new MezziMarkerQuery()
                        {
                            Filtro = new AreaMappa()
                            {
                                CodiceSede = new List <string>()
                                {
                                    sede
                                },
                                FiltroMezzi = new Models.Classi.Filtri.FiltroMezzi()
                                {
                                    FiltraPerAreaMappa = false
                                }
                            }
                        };
                        var listaMezziMarker = _listaMezziMarkerHandler.Handle(queryListaMezzi).ListaMezziMarker;
                        _notificationHubContext.Clients.Group(sede).SendAsync("NotifyGetMezzoUpDateMarker", listaMezziMarker.LastOrDefault(marker => marker.Mezzo.IdRichiesta == intervento.Chiamata.Codice));
                    });
                }
            });
        }