public void Handle(PresaInCaricoCommand command) { var richiesta = _getRichiestaById.GetById(command.IdRichiesta); var utente = _getUtenteById.GetUtenteByCodice(command.IdUtente); var nominativoPresaInCarico = utente.Nome + "." + utente.Cognome; if (richiesta.UtPresaInCarico != null) { new InizioPresaInCarico(richiesta, DateTime.UtcNow, richiesta.CodOperatore); if (!richiesta.UtPresaInCarico.Contains(nominativoPresaInCarico)) { richiesta.UtPresaInCarico.Add(nominativoPresaInCarico); } } else { richiesta.UtPresaInCarico = new List <string> { nominativoPresaInCarico }; } _updateRichiestaAssistenza.UpDate(richiesta); }
/// <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 }); }
/// <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 DettaglioUtenteResult Handle(DettaglioUtenteQuery query) { return(new DettaglioUtenteResult { DetUtente = _getUtenteById.GetUtenteByCodice(query.IdUtente) }); }
public IEnumerable <AuthorizationResult> Authorize(MergeSchedeNueCommand command) { var user = _getUtenteById.GetUtenteByCodice(command.IdUtente); if (_currentUser.Identity.IsAuthenticated) { if (user == null) { yield return(new AuthorizationResult(Costanti.UtenteNonAutorizzato)); } else { foreach (var ruolo in user.Ruoli) { if (!_getAutorizzazioni.GetAutorizzazioniUtente(user.Ruoli, command.SchedaNue.CodiceSede, Costanti.GestoreChiamate)) { yield return(new AuthorizationResult(Costanti.UtenteNonAutorizzato)); } } } } else { yield return(new AuthorizationResult(Costanti.UtenteNonAutorizzato)); } }
/// <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 di esecuzione della query /// </summary> /// <param name="query">Il DTO di ingresso della query</param> /// <returns>Il DTO di uscita della query</returns> public ListaEventiResult Handle(ListaEventiQuery query) { Log.Debug("Inizio elaborazione Lista Eventi Handler"); var eventi = _iEventi.Get(query); var eventiMapper = new List <MapperEventoSuEventoGui>(); foreach (var evento in eventi) { var operatore = _getUtenteById.GetUtenteByCodice(evento.CodiceFonte); var eventoMapper = new MapperEventoSuEventoGui { NomeClasseEvento = MapEvento(evento), IstanteEvento = evento.Istante, Targa = MapTarghe(evento), Note = MapNote(evento), Operatore = operatore.Nome + " " + operatore.Cognome }; eventiMapper.Add(eventoMapper); } Log.Debug("Fine elaborazione Lista Eventi Handler"); return(new ListaEventiResult() { Eventi = eventiMapper.OrderByDescending(x => x.IstanteEvento).ToList() }); }
public void Delete(string idUtente) { var utente = _getUtente.GetUtenteByCodice(idUtente); var nominativo = utente.Nome + " " + utente.Cognome; _dbContext.ChiamateInCorsoCollection.DeleteMany(Builders <ChiamateInCorso> .Filter.Eq(x => x.DescrizioneOperatore, nominativo)); }
public void Handle(RimozioneInLavorazioneCommand command) { var richiesta = _getRichiestaById.GetById(command.IdRichiesta); var utente = _getUtenteById.GetUtenteByCodice(command.IdUtente); var attivita = new AttivitaUtente(); var nominativo = utente.Nome + "." + utente.Cognome; richiesta.UtInLavorazione.RemoveAll(x => x == nominativo); _updateRichiestaAssistenza.UpDate(richiesta); }
public SintesiRichiesta Map(RichiestaAssistenza richiesta) { try { var mapConfing = new MapperConfiguration( cfg => cfg.CreateMap <RichiestaAssistenza, SintesiRichiesta>() .ForMember(x => x.CodiceSchedaNue, y => y.MapFrom(z => z.CodNue)) .ForMember(x => x.CodiceRichiesta, y => y.MapFrom(z => z.CodRichiesta)) .ForMember(x => x.ZoneEmergenza, y => y.MapFrom(z => z.CodZoneEmergenza)) //.ForMember(x => x.ListaEntiIntervenuti, y => y.MapFrom(z => z.CodEntiIntervenuti)) .ForMember(x => x.Tipologie, y => y.MapFrom(_ => _getTipologieByCodice.Get(richiesta.Tipologie))) .ForMember(x => x.Operatore, y => y.MapFrom(_ => _getUtenteById.GetUtenteByCodice(richiesta.CodOperatore))) //.ForMember(x => x.TurnoInserimentoChiamata, y => y.Ignore()) .ForMember(x => x.ListaUtentiInLavorazione, y => y.MapFrom(_ => MapUtenteAttivita(richiesta, "L").ToHashSet())) .ForMember(x => x.ListaUtentiPresaInCarico, y => y.MapFrom(_ => MapUtenteAttivita(richiesta, "P").ToHashSet())) ); _mapper = mapConfing.CreateMapper(); return(_mapper.Map <SintesiRichiesta>(richiesta)); } catch (Exception ex) { return(null); } }
/// <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> /// 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(), Utente = _getUtenteById.GetUtenteByCodice(query.IdUtente) }; Log.Debug("Fine elaborazione Informazioni Navbar Handler"); return(new NavbarResult() { Navbar = navbars }); }
public GetSchedeFiltrateResult Handle(GetSchedeFiltrateQuery query) { string codiceFiscale = null; if (query.Filtro.CercaPerOperatore == true) { var utente = _getUtenteBy.GetUtenteByCodice(query.Filtro.IdUtente); codiceFiscale = utente.CodiceFiscale; } var listaSchedeContatto = _getSchedeFiltrate.Get(query.Filtro.TestoLibero, query.Filtro.Gestita, codiceFiscale, query.Filtro.RangeVisualizzazione, query.CodiceSede).OrderByDescending(x => !x.Gestita).ThenByDescending(x => x.Priorita).ThenBy(x => x.DataInserimento).ToList(); return(new GetSchedeFiltrateResult() { SchedeContatto = listaSchedeContatto }); }
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); }
public void Handle(MessaInLavorazioneCommand command) { var richiesta = _getRichiestaById.GetByCodice(command.IdRichiesta); var utente = _getUtenteById.GetUtenteByCodice(command.IdUtente); var nominativoInLavorazione = utente.Nome + "." + utente.Cognome; if (richiesta.UtInLavorazione != null) { if (!richiesta.UtInLavorazione.Contains(nominativoInLavorazione)) { richiesta.UtInLavorazione.Add(nominativoInLavorazione); } } else { richiesta.UtInLavorazione = new List <string>(); richiesta.UtInLavorazione.Add(nominativoInLavorazione); } this._upDateRichiestaAssistenza.UpDate(richiesta); }
/// <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() }); }
public void Handle(AddInterventoCommand command) { var Competenze = _getCompetenze.GetCompetenzeByCoordinateIntervento(command.Chiamata.Localita.Coordinate).ToHashSet(); var lstCompetenze = new List <Distaccamento>(); Competenze.ToList().ForEach(c => lstCompetenze.Add(_getDistaccamento.Get(c).Result)); if (Competenze.ToList()[0] == null) { throw new Exception(Costanti.CoordinateErrate); } var sedeRichiesta = command.CodiceSede; var prioritaRichiesta = (RichiestaAssistenza.Priorita)command.Chiamata.PrioritaRichiesta; var codiceChiamata = _generaCodiceRichiesta.GeneraCodiceChiamata(sedeRichiesta, DateTime.UtcNow.Year); command.Chiamata.Codice = codiceChiamata; var listaCodiciTipologie = new List <string>(); var utentiInLavorazione = new List <string>(); var utentiPresaInCarico = new List <string>(); foreach (var tipologia in command.Chiamata.Tipologie) { listaCodiciTipologie.Add(tipologia.Codice); } if (command.Chiamata.ListaUtentiInLavorazione != null) { foreach (var utente in command.Chiamata.ListaUtentiInLavorazione) { utentiInLavorazione.Add(utente.Nominativo); } } if (command.Chiamata.ListaUtentiPresaInCarico != null) { foreach (var utente in command.Chiamata.ListaUtentiPresaInCarico) { utentiPresaInCarico.Add(utente.Nominativo); } } var richiesta = new RichiestaAssistenza() { Tipologie = listaCodiciTipologie, CodZoneEmergenza = command.Chiamata.ZoneEmergenza, Richiedente = command.Chiamata.Richiedente, Localita = command.Chiamata.Localita, Descrizione = command.Chiamata.Descrizione, Codice = codiceChiamata, TrnInsChiamata = $"Turno {_getTurno.Get().Codice.Substring(0, 1)}", TipoTerreno = command.Chiamata.TipoTerreno, ObiettivoSensibile = command.Chiamata.ObiettivoSensibile, UtInLavorazione = utentiInLavorazione, UtPresaInCarico = utentiPresaInCarico, NotePubbliche = command.Chiamata.NotePubbliche, NotePrivate = command.Chiamata.NotePrivate, CodUOCompetenza = Competenze.ToArray(), Competenze = lstCompetenze.Select(d => new Sede(d.CodSede.ToString(), d.DescDistaccamento, d.Indirizzo, d.Coordinate, null, null, null, null, null)).ToList(), CodOperatore = command.CodUtente, CodSOCompetente = command.CodiceSede, CodEntiIntervenuti = command.Chiamata.listaEnti != null?command.Chiamata.listaEnti.Select(c => c.ToString()).ToList() : null }; if (command.Chiamata.Stato == Costanti.RichiestaChiusa) { new ChiusuraRichiesta("", richiesta, DateTime.UtcNow, command.CodUtente); } if (command.Chiamata.Tags != null) { foreach (var t in command.Chiamata.Tags) { richiesta.Tags.Add(t); } } new Telefonata(richiesta, command.Chiamata.Richiedente.Telefono, DateTime.UtcNow, command.CodUtente) { NominativoChiamante = command.Chiamata.Richiedente.Nominativo, Motivazione = command.Chiamata.Motivazione, NotePrivate = command.Chiamata.NotePrivate, NotePubbliche = command.Chiamata.NotePubbliche, NumeroTelefono = command.Chiamata.Richiedente.Telefono, Esito = command.Chiamata.Azione.ToString(), CodiceSchedaContatto = command.Chiamata.CodiceSchedaNue }; new AssegnazionePriorita(richiesta, prioritaRichiesta, DateTime.UtcNow.AddMilliseconds(1.0), command.CodUtente); if (command.Chiamata.RilevanteGrave || command.Chiamata.RilevanteStArCu) { new MarcaRilevante(richiesta, DateTime.UtcNow.AddMilliseconds(1.5), command.CodUtente, "", command.Chiamata.RilevanteGrave, command.Chiamata.RilevanteStArCu); } if (command.Chiamata.Azione.Equals(Azione.FalsoAllarme) || command.Chiamata.Azione.Equals(Azione.ChiusuraForzata) || command.Chiamata.Azione.Equals(Azione.InterventoDuplicato) || command.Chiamata.Azione.Equals(Azione.InterventoNonPiuNecessario)) { command.Chiamata.Stato = Costanti.RichiestaChiusa; new ChiusuraRichiesta("", richiesta, DateTime.UtcNow.AddMilliseconds(1.0), command.CodUtente); } if (command.Chiamata.CodiceSchedaNue != null) { var codiceFiscaleOperatore = _getUtenteById.GetUtenteByCodice(command.CodUtente).CodiceFiscale; _setStatoGestioneSchedaContatto.Gestita(command.Chiamata.CodiceSchedaNue, command.CodiceSede, codiceFiscaleOperatore, true); } _saveRichiestaAssistenza.Save(richiesta); }
public void Handle(SetSchedaGestitaCommand command) { var codiceFiscaleOperatore = _getUtenteById.GetUtenteByCodice(command.IdUtente).CodiceFiscale; _setGestita.Gestita(command.CodiceScheda, command.CodiceSede, codiceFiscaleOperatore, command.Gestita); }
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 } }); } }
/// <summary> /// Query che estrae i valori dei Box presenti in Home Page /// </summary> /// <param name="command">Filtri utilizzati per l'estrazione</param> /// <returns>Elenco dei mezzi disponibili</returns> public void Handle(ConfermaPartenzeCommand command) { /// preparazione del DTO var richiesta = _getRichiestaById.GetByCodice(command.ConfermaPartenze.IdRichiesta); var richiestaDaSganciare = new RichiestaAssistenza(); var utente = _getUtenteById.GetUtenteByCodice(command.ConfermaPartenze.IdOperatore); var attivita = new AttivitaUtente(); var idComposizioneDaSganciare = 0; ///Gestione Sganciamento if (command.ConfermaPartenze.IdRichiestaDaSganciare != null) { richiestaDaSganciare = _getRichiestaById.GetByCodice(command.ConfermaPartenze.IdRichiestaDaSganciare); foreach (var composizione in richiestaDaSganciare.Eventi.Where(x => x is ComposizionePartenze).ToList()) { if (((ComposizionePartenze)composizione).Partenza.Mezzo.Codice.Equals(command.ConfermaPartenze.IdMezzoDaSganciare)) { ((ComposizionePartenze)composizione).Partenza.Sganciata = true; } idComposizioneDaSganciare++; } foreach (var composizione in richiestaDaSganciare.Partenze) { if (composizione.Partenza.Mezzo.Codice.Equals(command.ConfermaPartenze.IdMezzoDaSganciare)) { composizione.Partenza.Sganciata = true; } } if (idComposizioneDaSganciare == 1) { richiestaDaSganciare.SincronizzaStatoRichiesta(Costanti.RichiestaSospesa, richiestaDaSganciare.StatoRichiesta, richiestaDaSganciare.CodOperatore, ""); } //new RevocaPerRiassegnazione(richiesta, richiestaDaSganciare, command.ConfermaPartenze.IdMezzoDaSganciare, DateTime.UtcNow, richiesta.CodOperatore); _updateRichiestaAssistenza.UpDate(richiestaDaSganciare); } if (richiesta.Eventi.Where(x => x is InizioPresaInCarico).ToList().Count == 0) { new InizioPresaInCarico(richiesta, DateTime.UtcNow, utente.Id); } foreach (var partenza in command.ConfermaPartenze.Partenze) { new ComposizionePartenze(richiesta, DateTime.UtcNow, utente.Id, false) { Partenza = partenza }; } richiesta.SincronizzaStatoRichiesta(Costanti.RichiestaAssegnata, richiesta.StatoRichiesta, utente.Id, ""); //richiesta.Id = command.ConfermaPartenze.IdRichiesta; command.ConfermaPartenze.richiesta = richiesta; var sedeRichiesta = command.ConfermaPartenze.CodiceSede; richiesta.CodRichiesta = _generaCodiceRichiesta.Genera(sedeRichiesta, DateTime.UtcNow.Year); foreach (var partenza in command.ConfermaPartenze.Partenze) { partenza.Mezzo.IdRichiesta = richiesta.CodRichiesta; } var nominativo = utente.Nome + "." + utente.Cognome; if (richiesta.UtPresaInCarico != null) { richiesta.UtPresaInCarico.Add(nominativo); } else { richiesta.UtPresaInCarico = new List <String> { nominativo }; } foreach (var partenze in command.ConfermaPartenze.Partenze) { foreach (var squadra in partenze.Squadre) { squadra.Stato = MappaStatoSquadraDaStatoMezzo.MappaStato(partenze.Mezzo.Stato); } } var confermaPartenze = _updateConfermaPartenze.Update(command); command.ConfermaPartenze.CodiceSede = confermaPartenze.CodiceSede; }