コード例 #1
0
        public TrasferimentiChiamateResult Handle(TrasferimentiChiamateQuery query)
        {
            //GESTIONE RICORSIVITA'
            var lstPin = new List <string>();

            foreach (var sede in query.CodiciSede)
            {
                lstPin.AddRange(_getGerarchia.GetGerarchiaSede(sede).ToList());
            }

            //MAPPING
            var lstTrasferimenti = _getTrasferimenti.GetAll(lstPin.ToArray(), query.Filters.Search)
                                   .Select(c => new TrasferimentoChiamataFull()
            {
                Id          = c.Id,
                CodChiamata = c.CodChiamata,
                SedeA       = _getDistaccamentoByCodiceSede.Get(c.CodSedeA).Descrizione,
                SedeDa      = _getDistaccamentoByCodiceSede.Get(c.CodSedeDa).Descrizione,
                Data        = c.Data,
                Operatore   = _getUtenteById.GetUtenteByCodice(c.IdOperatore)
            }).ToList();

            //PAGINAZIONE
            List <TrasferimentoChiamataFull> trasferimentiPaginati = null;

            if (query.Pagination != default)
            {
                lstTrasferimenti.Reverse();
                trasferimentiPaginati       = lstTrasferimenti.Skip((query.Pagination.Page - 1) * query.Pagination.PageSize).Take(query.Pagination.PageSize).ToList();
                query.Pagination.TotalItems = lstTrasferimenti.Count;
            }
            else
            {
                trasferimentiPaginati = lstTrasferimenti;
            }

            //ORDINAMENTO
            return(new TrasferimentiChiamateResult()
            {
                DataArray = trasferimentiPaginati.OrderByDescending(c => c.Data).ToList(),
                Pagination = query.Pagination
            });
        }
コード例 #2
0
        public void Handle(AddTrasferimentoCommand command)
        {
            //GESTIONE RICHIESTA E TRASFERIMENTO
            var richiesta = _getRichiestaById.GetByCodice(command.TrasferimentoChiamata.CodChiamata);

            command.TrasferimentoChiamata.CodSedeDa = richiesta.CodSOCompetente;
            richiesta.CodSOCompetente = command.TrasferimentoChiamata.CodSedeA;
            command.TrasferimentoChiamata.IdOperatore = command.IdOperatore;
            command.TrasferimentoChiamata.Data        = DateTime.Now;

            var sedeDa = _getSede.Get(command.TrasferimentoChiamata.CodSedeDa).Descrizione;
            var sedeA  = _getSede.Get(command.TrasferimentoChiamata.CodSedeA).Descrizione;

            var codSedeUtente = _getUtenteById.GetUtenteByCodice(command.TrasferimentoChiamata.IdOperatore).Sede.Descrizione;

            new TrasferimentoChiamata(richiesta, command.TrasferimentoChiamata.Data, command.IdOperatore, sedeDa, sedeA, codSedeUtente);

            //DB SYNC
            _addTrasferimento.Add(command.TrasferimentoChiamata, richiesta);
        }
コード例 #3
0
        /// <summary>
        ///   Il metodo della classe che mappa MezzoDTO integrando le coordinate da GeoFleet.
        /// </summary>
        /// <param name="listaMezzoDTO">Il DTO che arriva da GAC</param>
        /// <returns>Una lista di Mezzo</returns>
        public List <Mezzo> MappaMezzoDTOsuMezzo(List <MezzoDTO> listaMezzoDTO)
        {
            var listaMezzi = new List <Mezzo>();

            foreach (var mezzoDTO in listaMezzoDTO)
            {
                if (mezzoDTO.Movimentazione.StatoOperativo.Equals(Costanti.MezzoDisponibile))
                {
                    mezzoDTO.Movimentazione.StatoOperativo = Costanti.MezzoInSede;
                }
                var coordinateMezzo = _getPosizioneByCodiceMezzo.Get(mezzoDTO.CodiceMezzo).Result;
                var sede            = _getDistaccamentoByCodiceSede.Get(mezzoDTO.CodiceDistaccamento);
                if (coordinateMezzo != null)
                {
                    var coordinate = new Coordinate(coordinateMezzo.Localizzazione.Lat, coordinateMezzo.Localizzazione.Lon);
                    var mezzo      = new Mezzo(mezzoDTO.CodiceMezzo, mezzoDTO.Descrizione, mezzoDTO.Genere, mezzoDTO.Movimentazione.StatoOperativo, mezzoDTO.Appartenenza, sede, coordinate)
                    {
                        StatoEfficenza      = mezzoDTO.StatoEfficenza,
                        IstanteAcquisizione = coordinateMezzo.IstanteAcquisizione
                    };
                    if (!string.IsNullOrEmpty(mezzoDTO.Movimentazione.IdRichiesta))
                    {
                        mezzo.IdRichiesta = mezzoDTO.Movimentazione.IdRichiesta;
                    }
                    listaMezzi.Add(mezzo);
                }
                else
                {
                    var coordinate = new Coordinate(sede.Coordinate.Latitudine, sede.Coordinate.Longitudine);
                    var mezzo      = new Mezzo(mezzoDTO.CodiceMezzo, mezzoDTO.Descrizione, mezzoDTO.Genere, mezzoDTO.Movimentazione.StatoOperativo, mezzoDTO.Appartenenza, sede, coordinate)
                    {
                        StatoEfficenza      = mezzoDTO.StatoEfficenza,
                        IstanteAcquisizione = null
                    };
                    if (!string.IsNullOrEmpty(mezzoDTO.Movimentazione.IdRichiesta))
                    {
                        mezzo.IdRichiesta = mezzoDTO.Movimentazione.IdRichiesta;
                    }
                    listaMezzi.Add(mezzo);
                }
            }
            return(listaMezzi);
        }
コード例 #4
0
        public async Task SendNotification(AddTrasferimentoCommand command)
        {
            var mioComandoDes = _getSede.Get(command.CodiciSede[0]).Descrizione;
            var mioOperatore  = _getUtenteById.GetUtenteByCodice(command.TrasferimentoChiamata.IdOperatore);
            var totalItemsA   = _getTrasferimenti.Count(command.TrasferimentoChiamata.CodSedeA);
            var totalItemsDa  = _getTrasferimenti.Count(command.TrasferimentoChiamata.CodSedeDa);
            var richiesta     = _getRichiesta.Handle(new GetSintesiRichiestaAssistenzaQuery()
            {
                CodiceRichiesta = command.TrasferimentoChiamata.CodChiamata,
                CodiceSede      = command.TrasferimentoChiamata.CodSedeA
            }).SintesiRichiesta;

            //GESTIONE SEDI A
            var SediDaNotificareAdd = _getGerarchiaToSend.Get(command.TrasferimentoChiamata.CodSedeA);

            foreach (var sede in SediDaNotificareAdd)
            {
                var boxInterventi = _boxRichiesteHandler.Handle(new BoxRichiesteQuery()
                {
                    CodiciSede = new string[] { sede }
                }).BoxRichieste;

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

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

                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyAddTrasferimento", new
                {
                    Data = new TrasferimentoChiamataFull()
                    {
                        Id          = command.TrasferimentoChiamata.Id,
                        CodChiamata = command.TrasferimentoChiamata.CodChiamata,
                        Data        = command.TrasferimentoChiamata.Data,
                        SedeA       = _getSede.Get(command.TrasferimentoChiamata.CodSedeA).Descrizione,
                        SedeDa      = mioComandoDes,
                        Operatore   = mioOperatore
                    },
                    Pagination = new Paginazione()
                    {
                        TotalItems = totalItemsA
                    }
                });

                //NOTIFICA NAVBAR
                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyNavBar", new Notifica()
                {
                    Titolo      = "Hai una nuova chiamata",
                    Descrizione = $"La chiamata {richiesta.Codice} è stata trasferita dal {mioComandoDes} alla tua sede",
                    Tipo        = TipoNotifica.TrasferimentoChiamata,
                    Data        = command.TrasferimentoChiamata.Data
                });
            }

            //GESTIONE SEDI DA
            var SediDaNotificareDelete = _getGerarchiaToSend.Get(command.TrasferimentoChiamata.CodSedeDa);

            foreach (var sede in SediDaNotificareDelete)
            {
                var boxInterventi = _boxRichiesteHandler.Handle(new BoxRichiesteQuery()
                {
                    CodiciSede = new string[] { sede }
                }).BoxRichieste;

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

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

                await _notificationHubContext.Clients.Group(sede).SendAsync("NotifyAddTrasferimento", new
                {
                    Data = new TrasferimentoChiamataFull()
                    {
                        Id          = command.TrasferimentoChiamata.Id,
                        CodChiamata = command.TrasferimentoChiamata.CodChiamata,
                        Data        = command.TrasferimentoChiamata.Data,
                        SedeA       = _getSede.Get(command.TrasferimentoChiamata.CodSedeA).Descrizione,
                        SedeDa      = mioComandoDes,
                        Operatore   = mioOperatore
                    },
                    Pagination = new Paginazione()
                    {
                        TotalItems = totalItemsDa
                    }
                });
            }
        }