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 }); }
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); }
/// <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); }
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 } }); } }