public async Task <IActionResult> DeleteInLavorazione([FromBody] SintesiRichiesta intervento) { var IdUtente = Request.Headers["IdUtente"]; var codiceSede = Request.Headers["codicesede"]; var command = new RimozioneInLavorazioneCommand() { IdRichiesta = intervento.Id, IdUtente = IdUtente, Chiamata = intervento, CodSede = codiceSede }; try { this._deleteInLavorazionehandler.Handle(command); return(Ok()); } catch (Exception ex) { if (ex.Message.Contains(Costanti.UtenteNonAutorizzato)) { return(StatusCode(403, Costanti.UtenteNonAutorizzato)); } return(BadRequest()); } }
public async Task <IActionResult> AddPresaInCarico([FromBody] SintesiRichiesta intervento) { var headerValues = Request.Headers["IdUtente"]; var codiceSede = Request.Headers["codicesede"]; string IdUtente = headerValues.FirstOrDefault(); var command = new PresaInCaricoCommand() { IdRichiesta = intervento.Id, IdUtente = IdUtente, Chiamata = intervento, CodSede = codiceSede }; try { this._presaInCaricohandler.Handle(command); return(Ok()); } catch (Exception ex) { if (ex.Message.Contains(Costanti.UtenteNonAutorizzato)) { return(StatusCode(403, Costanti.UtenteNonAutorizzato)); } return(BadRequest()); } }
public async Task <IActionResult> InserimentoIntervento([FromBody] SintesiRichiesta sintesi) { if (ModelState.IsValid) { var command = new AddInterventoCommand() { sintesiRichiesta = sintesi }; try { this._handler.Handle(command); await _NotificationHub.Clients.Groups(sintesi.Operatore.Sede.Codice).SendAsync("SaveAndNotifySuccessChiamata", command); return(Ok()); } catch { return(BadRequest()); } } else { return(BadRequest()); } }
public async Task <IActionResult> UpdateIntervento([FromBody] SintesiRichiesta chiamata) { var codiceSede = Request.Headers["codicesede"]; var idUtente = Request.Headers["IdUtente"]; var command = new UpDateInterventoCommand() { Chiamata = chiamata, CodiceSede = codiceSede, CodUtente = idUtente }; try { this._Updatehandler.Handle(command); return(Ok()); } catch (Exception ex) { if (ex.Message.Contains(Costanti.UtenteNonAutorizzato)) { return(StatusCode(403, Costanti.UtenteNonAutorizzato)); } return(BadRequest()); } }
public List <SintesiRichiesta> MapRichiesteSuSintesi(List <RichiestaAssistenza> ListaRichieste) { List <SintesiRichiesta> ListaSintesi = new List <SintesiRichiesta>(); List <SintesiRichiesta> AppoListaSintesiChiamate = new List <SintesiRichiesta>(); List <SintesiRichiesta> AppoListaSintesiAltroStato = new List <SintesiRichiesta>(); foreach (RichiestaAssistenza elemento in ListaRichieste) { SintesiRichiesta sintesi = new SintesiRichiesta(); string statoRichiesta = DecodifcaStatoRichiesta(elemento.StatoRichiesta); sintesi.Codice = elemento.Codice; sintesi.CodiceSchedaNue = elemento.CodiceSchedaNue; sintesi.Competenze = elemento.Competenze; //sintesi.complessita = elemento.Richiesta.Complessita; sintesi.Descrizione = elemento.Descrizione; sintesi.Etichette = elemento.Tags.ToArray(); sintesi.Eventi = elemento.Eventi.ToList(); //sintesi.fonogramma = elemento.Richiesta.StatoInvioFonogramma; sintesi.Id = elemento.Id; sintesi.IstantePresaInCarico = elemento.IstantePresaInCarico; sintesi.IstantePrimaAssegnazione = elemento.IstantePrimaAssegnazione; sintesi.IstanteRicezioneRichiesta = sintesi.Eventi.Count > 0 ? elemento.IstanteRicezioneRichiesta : DateTime.MinValue; sintesi.Localita = elemento.Localita; sintesi.Operatore = elemento.Operatore; sintesi.Partenze = elemento.ListaPartenze; //sintesi.Priorita = elemento.PrioritaRichiesta; sintesi.Richiedente = elemento.Richiedente; sintesi.Rilevanza = DateTime.Now; sintesi.Stato = Convert.ToInt16(statoRichiesta); sintesi.Tipologie = elemento.Tipologie; sintesi.ZoneEmergenza = elemento.ZoneEmergenza; if (statoRichiesta.Equals("Chiamata")) { AppoListaSintesiChiamate.Add(sintesi); } else { AppoListaSintesiAltroStato.Add(sintesi); } } //INIZIO - TUTTA QUESTA PARTE VA CANCELLATA DOPO IL FAKE foreach (SintesiRichiesta richiesta in AppoListaSintesiChiamate) { if (richiesta.Partenze.Count > 0) { richiesta.Partenze.Clear(); } } ListaSintesi.AddRange(AppoListaSintesiChiamate); ListaSintesi.AddRange(AppoListaSintesiAltroStato); //FINE return(ListaSintesi); }
public SintesiRichiesta GetSintesi(string codiceRichiesta) { var richiesta = GetByCodice(codiceRichiesta); var sintesi = new SintesiRichiesta(); if (richiesta.CodUOCompetenza != null) { sintesi = _mapperSintesi.Map(richiesta); sintesi.Competenze = MapCompetenze(richiesta.CodUOCompetenza); } return(sintesi); }
public async Task <IActionResult> UpdateIntervento([FromBody] SintesiRichiesta chiamata) { var command = new UpDateInterventoCommand() { Chiamata = chiamata }; try { this._Updatehandler.Handle(command); return(Ok()); } catch { return(BadRequest()); } }
public SintesiRichiesta GetSintesi(string codiceRichiesta) { var richiesta = GetByCodice(codiceRichiesta); var sintesi = new SintesiRichiesta(); var rubrica = new List <EnteDTO>(); if (richiesta.CodEntiIntervenuti != null) { rubrica = _getRubrica.GetBylstCodici(richiesta.CodEntiIntervenuti.Select(c => int.Parse(c)).ToArray()); } if (richiesta.CodUOCompetenza != null) { sintesi = _mapperSintesi.Map(richiesta); sintesi.ListaEntiIntervenuti = rubrica.Count > 0 ? rubrica?.FindAll(c => richiesta.CodEntiIntervenuti?.Contains(c.Codice.ToString()) ?? false) : null; sintesi.Competenze = MapCompetenze(richiesta.CodUOCompetenza); sintesi.SediAllertate = richiesta.CodSOAllertate != null?MapCompetenze(richiesta.CodSOAllertate.ToArray()) : null; } return(sintesi); }
public async Task <IActionResult> AddPresaInCarico([FromBody] SintesiRichiesta intervento) { var headerValues = Request.Headers["IdUtente"]; string IdUtente = headerValues.FirstOrDefault(); var command = new PresaInCaricoCommand() { IdRichiesta = intervento.Id, IdUtente = IdUtente, Chiamata = intervento }; try { this._presaInCaricohandler.Handle(command); return(Ok()); } catch { return(BadRequest()); } }
public async Task <IActionResult> DeleteInLavorazione([FromBody] SintesiRichiesta intervento) { var headerValues = Request.Headers["IdUtente"]; string IdUtente = headerValues.FirstOrDefault(); var command = new RimozioneInLavorazioneCommand() { IdRichiesta = intervento.Id, IdUtente = IdUtente, Chiamata = intervento }; try { this._deleteInLavorazionehandler.Handle(command); return(Ok()); } catch { return(BadRequest()); } }
public List <SintesiRichiesta> GetListaSintesiRichieste(FiltroRicercaRichiesteAssistenza filtro) { var filtroSediCompetenti = Builders <RichiestaAssistenza> .Filter .In(richiesta => richiesta.CodSOCompetente, filtro.UnitaOperative.Select(uo => uo.Codice)); List <string> listaCodSedi = new List <string>(); foreach (var sede in filtro.UnitaOperative) { listaCodSedi.Add(sede.Codice); } var filtriSediAllertate = Builders <RichiestaAssistenza> .Filter.AnyIn(x => x.CodSOAllertate, listaCodSedi); List <RichiestaAssistenza> result = new List <RichiestaAssistenza>(); result = _dbContext.RichiestaAssistenzaCollection.Find(filtroSediCompetenti).ToList(); //FILTRO TIPOLOGIA RICHIESTA (CHIAMATE/INTERVENTI) if (filtro.TipologiaRichiesta != null) { result = result.Where(r => { if (filtro.TipologiaRichiesta.Equals("Chiamate")) { return(r.TestoStatoRichiesta == "C"); } if (filtro.TipologiaRichiesta.Equals("Interventi")) { return(r.TestoStatoRichiesta != "C"); } return(true); }).ToList(); } //FILTRO STATI RICHIESTA if (filtro.StatiRichiesta != null && filtro.StatiRichiesta.Count() != 0) { if (filtro.StatiRichiesta.Contains("Assegnata")) { filtro.StatiRichiesta.Add("InAttesa"); } result = result.Where(r => filtro.StatiRichiesta.Contains(r.StatoRichiesta.GetType().Name)).ToList(); } else //CHIUSE NASCOSTE DI DEFAULT { result = result.Where(r => !r.StatoRichiesta.GetType().Name.Contains("Chiusa")).ToList(); } //FILTRO ZONE EMERGENZA if (filtro.ZoneEmergenza != null) { result = result.Where(r => r.CodZoneEmergenza.Any(z => filtro.ZoneEmergenza.Contains(z))).ToList(); } //FILTRO PERIODO CHIAMATE CHIUSE if (filtro.PeriodoChiuse != null) { result = result.Where(r => { if (filtro.PeriodoChiuse.Data != null) { return(r.Aperta == true || (r.Chiusa == true && r.IstanteChiusura.Value.Year == filtro.PeriodoChiuse.Data.Value.Year && r.IstanteChiusura.Value.Month == filtro.PeriodoChiuse.Data.Value.Month && r.IstanteChiusura.Value.Day == filtro.PeriodoChiuse.Data.Value.Day)); } else if (filtro.PeriodoChiuse.Turno != null) { var turno = _getTurno.Get(r.IstanteChiusura); return(r.Aperta == true || (r.Chiusa == true && turno.Codice.Contains(filtro.PeriodoChiuse.Turno))); } else if (filtro.PeriodoChiuse.Da != null && filtro.PeriodoChiuse.A != null) { return(r.Aperta == true || (r.IstanteChiusura >= filtro.PeriodoChiuse.Da && r.IstanteChiusura <= filtro.PeriodoChiuse.A)); } return(true); }).ToList(); } if (filtro.FiltriTipologie != null) { result = result.Where(o => filtro.FiltriTipologie.Any(s => o.Tipologie.Contains(s))).ToList(); } if (filtro.IndirizzoIntervento != null) { result = result.FindAll(o => o.Localita.Coordinate.Latitudine.Equals(filtro.IndirizzoIntervento.Coordinate.Latitudine) && o.Localita.Coordinate.Longitudine.Equals(filtro.IndirizzoIntervento.Coordinate.Longitudine)); } if (filtro.StatiRichiesta != null && filtro.StatiRichiesta.Count() > 0) { result = result.Where(r => filtro.StatiRichiesta.Contains(r.StatoRichiesta.GetType().Name)).ToList(); } var listaSistesiRichieste = new List <SintesiRichiesta>(); foreach (RichiestaAssistenza richiesta in result) { List <EnteDTO> rubrica = new List <EnteDTO>(); if (richiesta.CodEntiIntervenuti != null) { var lstCodiciEnti = richiesta.CodEntiIntervenuti.Select(c => int.Parse(c)).ToArray(); rubrica = _getRubrica.GetBylstCodici(lstCodiciEnti); } SintesiRichiesta sintesi = new SintesiRichiesta(); if (richiesta.CodUOCompetenza != null) { sintesi = _mapperSintesi.Map(richiesta); sintesi.Competenze = MapCompetenze(richiesta.CodUOCompetenza); sintesi.SediAllertate = richiesta.CodSOAllertate != null?MapCompetenze(richiesta.CodSOAllertate.ToArray()) : null; sintesi.ListaEntiIntervenuti = rubrica.Count == 0 ? null : rubrica; listaSistesiRichieste.Add(sintesi); } } //ORDINAMENTO RICHIESTE return(listaSistesiRichieste .OrderByDescending(c => c.Stato.Equals(Costanti.Chiamata) && c.Partenze.Count == 0) .ThenByDescending(c => c.Stato.Equals(Costanti.Chiamata) && c.Partenze.Count > 0) .ThenByDescending(c => c.Stato.Equals(Costanti.RichiestaAssegnata)) .ThenByDescending(c => c.Stato.Equals(Costanti.RichiestaPresidiata)) .ThenByDescending(c => c.Stato.Equals(Costanti.RichiestaChiusa)) .ThenByDescending(x => x.PrioritaRichiesta) .ThenBy(x => x.IstanteRicezioneRichiesta) .ToList()); }
public Intervento Map(SintesiRichiesta richiesta) { return(_mapper.Map <Intervento>(richiesta)); }
public List <SintesiRichiesta> GetListaSintesiRichieste(FiltroRicercaRichiesteAssistenza filtro) { var filtroSediCompetenti = Builders <RichiestaAssistenza> .Filter .In(richiesta => richiesta.CodSOCompetente, filtro.UnitaOperative.Select(uo => uo.Codice)); var filtriSediAllertate = filtro.UnitaOperative.Select(uo => Builders <RichiestaAssistenza> .Filter .ElemMatch(richiesta => richiesta.CodSOAllertate, x => x == uo.Codice) ); FilterDefinition <RichiestaAssistenza> orFiltroSediAllertate = Builders <RichiestaAssistenza> .Filter.Empty; foreach (var f in filtriSediAllertate) { orFiltroSediAllertate |= f; } List <RichiestaAssistenza> result = new List <RichiestaAssistenza>(); //Iniziamo col restituire le richieste aperte. if (filtro.IncludiRichiesteAperte) { var filtroRichiesteAperte = Builders <RichiestaAssistenza> .Filter.Ne(r => r.TestoStatoRichiesta, "X"); var filtroComplessivo = filtroSediCompetenti & filtroRichiesteAperte; var richiesteAperte = _dbContext.RichiestaAssistenzaCollection.Find(filtroComplessivo) .ToList(); // qui l'ordinamento var richiestePerStato = richiesteAperte.GroupBy(r => r.TestoStatoRichiesta == InAttesa.SelettoreDB) .ToDictionary(g => g.Key, g => g); /* * true -> c1, c2, c3 * false -> r5, r8, r19, r34 */ if (richiestePerStato.ContainsKey(false)) { result.AddRange( richiestePerStato[false] .OrderBy(r => r.PrioritaRichiesta) .ThenBy(r => r.IstanteRicezioneRichiesta)); } if (richiestePerStato.ContainsKey(true)) { result.AddRange( richiestePerStato[true] .OrderBy(r => r.PrioritaRichiesta) .ThenBy(r => r.IstanteRicezioneRichiesta)); } // qui la paginazione var resultPaginato = result.Skip().Take(); // se abbiamo già raggiunto il numero di richieste desiderate, restituiamo e finisce // qua return resultPaginato; result.ToList(); } if (filtro.IncludiRichiesteChiuse) { var filtroRichiesteChiuse = Builders <RichiestaAssistenza> .Filter.Eq(r => r.TestoStatoRichiesta, "X"); var filtroComplessivo = filtroSediCompetenti & filtroRichiesteChiuse; var numeroRichiesteDaRecuperare = filtro.PageSize - (result.Count - filtro.PageSize); if (numeroRichiesteDaRecuperare > 0) { var closedToSkip = (filtro.Page - 1) * filtro.PageSize - result.Count; if (closedToSkip < 0) { closedToSkip = 0; } var richiesteChiuse = _dbContext.RichiestaAssistenzaCollection.Find(filtroComplessivo) .Skip(closedToSkip) .Limit(numeroRichiesteDaRecuperare) .ToList(); result.AddRange(richiesteChiuse); } } var listaSistesiRichieste = new List <SintesiRichiesta>(); foreach (RichiestaAssistenza richiesta in result) { SintesiRichiesta sintesi = new SintesiRichiesta(); if (richiesta.CodUOCompetenza != null) { sintesi = _mapperSintesi.Map(richiesta); sintesi.Competenze = MapCompetenze(richiesta.CodUOCompetenza); listaSistesiRichieste.Add(sintesi); } } return(listaSistesiRichieste .OrderByDescending(x => x.Stato == Costanti.Chiamata) .ThenByDescending(x => x.Chiusa == false) .ThenByDescending(x => x.PrioritaRichiesta) .ThenBy(x => x.IstanteRicezioneRichiesta) .ToList()); }