public async Task <IHttpActionResult> EliminaFirmaEmendamento(ComandiAzioneModel firmaModel) { try { var session = await GetSession(); var persona = await _logicPersone.GetPersona(session); var pinInDb = await _logicPersone.GetPin(persona); if (pinInDb == null) { return(BadRequest("Pin non impostato")); } if (pinInDb.RichiediModificaPIN) { return(BadRequest("E' richiesto il reset del pin")); } if (firmaModel.Pin != pinInDb.PIN_Decrypt) { return(BadRequest("Pin inserito non valido")); } return(Ok(await _logicEm.EliminaFirmaEmendamento(firmaModel, persona))); } catch (Exception e) { Log.Error("EliminaFirmaEmendamento", e); return(ErrorHandler(e)); } }
public async Task <IHttpActionResult> DepositaEmendamento(ComandiAzioneModel depositoModel) { try { if (_logicEm.BloccaDepositi) { return(BadRequest( "E' in corso un'altra operazione di deposito. Riprova tra qualche secondo.")); } if (depositoModel.ListaEmendamenti.Count > Convert.ToInt16(AppSettingsConfiguration.LimiteDepositoMassivo)) { return(BadRequest( $"Non è possibile depositare contemporaneamente più di {AppSettingsConfiguration.LimiteDepositoMassivo} emendamenti")); } var session = await GetSession(); var persona = await _logicPersone.GetPersona(session); var depositoUfficio = persona.CurrentRole == RuoliIntEnum.Amministratore_PEM || persona.CurrentRole == RuoliIntEnum.Segreteria_Assemblea; if (depositoUfficio) { if (depositoModel.Pin != AppSettingsConfiguration.MasterPIN) { return(BadRequest("Pin inserito non valido")); } return(Ok(await _logicEm.DepositaEmendamento(depositoModel, persona))); } var pinInDb = await _logicPersone.GetPin(persona); if (pinInDb == null) { return(BadRequest("Pin non impostato")); } if (pinInDb.RichiediModificaPIN) { return(BadRequest("E' richiesto il reset del pin")); } if (depositoModel.Pin != pinInDb.PIN_Decrypt) { return(BadRequest("Pin inserito non valido")); } return(Ok(await _logicEm.DepositaEmendamento(depositoModel, persona))); } catch (Exception e) { Log.Error("DepositaEmendamento", e); return(ErrorHandler(e)); } finally { _logicEm.BloccaDepositi = false; } }
public async Task <Dictionary <Guid, string> > EliminaFirma(Guid emendamentoUId, string pin) { var model = new ComandiAzioneModel { ListaEmendamenti = new List <Guid> { emendamentoUId }, Pin = pin }; return(await EliminaFirma(model)); }
public async Task <IHttpActionResult> FirmaEmendamento(ComandiAzioneModel firmaModel) { try { if (firmaModel.ListaEmendamenti.Count > Convert.ToInt16(AppSettingsConfiguration.LimiteFirmaMassivo)) { return(BadRequest( $"Non è possibile firmare contemporaneamente più di {AppSettingsConfiguration.LimiteFirmaMassivo} emendamenti")); } var session = await GetSession(); var persona = await _logicPersone.GetPersona(session); var firmaUfficio = persona.CurrentRole == RuoliIntEnum.Amministratore_PEM || persona.CurrentRole == RuoliIntEnum.Segreteria_Assemblea; if (firmaUfficio) { if (firmaModel.Pin != AppSettingsConfiguration.MasterPIN) { return(BadRequest("Pin inserito non valido")); } return(Ok(await _logicEm.FirmaEmendamento(firmaModel, persona, null, true))); } var pinInDb = await _logicPersone.GetPin(persona); if (pinInDb == null) { return(BadRequest("Pin non impostato")); } if (pinInDb.RichiediModificaPIN) { return(BadRequest("E' richiesto il reset del pin")); } if (firmaModel.Pin != pinInDb.PIN_Decrypt) { return(BadRequest("Pin inserito non valido")); } return(Ok(await _logicEm.FirmaEmendamento(firmaModel, persona, pinInDb))); } catch (Exception e) { Log.Error("FirmaEmendamento", e); return(ErrorHandler(e)); } }
public async Task <IHttpActionResult> EliminaFirmaEmendamento(ComandiAzioneModel firmaModel) { try { var session = await GetSession(); var persona = await _logicPersone.GetPersona(session); var firmaUfficio = persona.CurrentRole == RuoliIntEnum.Amministratore_PEM || persona.CurrentRole == RuoliIntEnum.Segreteria_Assemblea; if (firmaUfficio) { if (firmaModel.Pin != AppSettingsConfiguration.MasterPIN) { return(BadRequest("Pin inserito non valido")); } return(Ok(await _logicEm.EliminaFirmaEmendamento(firmaModel, persona))); } var pinInDb = await _logicPersone.GetPin(persona); if (pinInDb == null) { return(BadRequest("Pin non impostato")); } if (pinInDb.RichiediModificaPIN) { return(BadRequest("E' richiesto il reset del pin")); } if (firmaModel.Pin != pinInDb.PIN_Decrypt) { return(BadRequest("Pin inserito non valido")); } return(Ok(await _logicEm.EliminaFirmaEmendamento(firmaModel, persona))); } catch (Exception e) { Log.Error("EliminaFirmaEmendamento", e); return(ErrorHandler(e)); } }
public async Task <IHttpActionResult> InvitaAFirmareEmendamento(ComandiAzioneModel model) { try { var session = await GetSession(); var persona = await _logicPersone.GetPersona(session); var invitoDaSegreteria = persona.CurrentRole == RuoliIntEnum.Responsabile_Segreteria_Politica || persona.CurrentRole == RuoliIntEnum.Segreteria_Politica || persona.CurrentRole == RuoliIntEnum.Responsabile_Segreteria_Giunta || persona.CurrentRole == RuoliIntEnum.Segreteria_Giunta_Regionale || persona.CurrentRole == RuoliIntEnum.Amministratore_PEM; if (invitoDaSegreteria) { return(Ok(await _logic.InvitaAFirmareEmendamento(model, persona))); } var pinInDb = await _logicPersone.GetPin(persona); if (pinInDb == null) { return(BadRequest("Pin non impostato")); } if (pinInDb.RichiediModificaPIN) { return(BadRequest("E' richiesto il reset del pin")); } if (model.Pin != pinInDb.PIN_Decrypt) { return(BadRequest("Pin inserito non valido")); } return(Ok(await _logic.InvitaAFirmareEmendamento(model, persona))); } catch (Exception e) { Log.Error("InvitaAFirmareEmendamento", e); return(ErrorHandler(e)); } }
public static async Task <Dictionary <Guid, string> > NotificaEM(ComandiAzioneModel model) { try { var requestUrl = $"{apiUrl}/notifiche/invita"; var body = JsonConvert.SerializeObject(model); var result = JsonConvert.DeserializeObject <Dictionary <Guid, string> >(await Post(requestUrl, body)); return(result); } catch (UnauthorizedAccessException ex) { Log.Error("NotificaEM", ex); throw ex; } catch (Exception ex) { Log.Error("NotificaEM", ex); throw ex; } }
public async Task <Dictionary <Guid, string> > EliminaFirma(ComandiAzioneModel model) { try { var requestUrl = $"{apiUrl}/emendamenti/elimina-firma"; var body = JsonConvert.SerializeObject(model); var result = JsonConvert.DeserializeObject <Dictionary <Guid, string> >(await Post(requestUrl, body, _token)); return(result); } catch (UnauthorizedAccessException ex) { Log.Error("EliminaFirma", ex); throw ex; } catch (Exception ex) { Log.Error("EliminaFirma", ex); throw ex; } }
public async Task <Dictionary <Guid, string> > InvitaAFirmareEmendamento(ComandiAzioneModel model, PersonaDto currentUser) { try { var results = new Dictionary <Guid, string>(); var listaDestinatari = new List <PersonaDto>(); var sonoPersone = Guid.TryParse(model.ListaDestinatari.First(), out var _); if (sonoPersone) { foreach (var destinatario in model.ListaDestinatari) { listaDestinatari.Add(await _logicPersone.GetPersona(new Guid(destinatario), false)); } } else { var sonoGruppi = int.TryParse(model.ListaDestinatari.First(), out var _); if (sonoGruppi) { foreach (var gruppoId in model.ListaDestinatari.Select(g => Convert.ToInt32(g))) { listaDestinatari.AddRange(await _logicPersone.GetConsiglieriGruppo(gruppoId)); } } } if (!listaDestinatari.Any()) { results.Add(Guid.Empty, "Nessun invitato a firmare"); return(results); } var bodyMail = string.Empty; var firstEM = await _unitOfWork.Emendamenti.Get(model.ListaEmendamenti.First()); var atto = await _unitOfWork.Atti.Get(firstEM.UIDAtto); var personeInDb = await _unitOfWork.Persone.GetAll(); var personeInDbLight = personeInDb.Select(Mapper.Map <View_UTENTI, PersonaLightDto>).ToList(); foreach (var idGuid in model.ListaEmendamenti) { var em = await _logicEm.GetEM_DTO(idGuid, atto, currentUser, personeInDbLight); if (em == null) { results.Add(idGuid, "ERROR: NON TROVATO"); continue; } var n_em = em.N_EM; if (em.IDStato >= (int)StatiEnum.Depositato) { results.Add(idGuid, $"ERROR: Non è possibile creare notifiche per {n_em} essendo già stato depositato"); continue; } var check = _unitOfWork.Notifiche.CheckIfNotificabile(em, currentUser); if (check == false) { results.Add(idGuid, $"ERROR: Non è possibile creare notifiche per {n_em}"); continue; } var newNotifica = new NOTIFICHE { UIDEM = em.UIDEM, UIDAtto = em.UIDAtto, Mittente = currentUser.UID_persona, RuoloMittente = (int)currentUser.CurrentRole, IDTipo = 1, Messaggio = string.Empty, DataScadenza = em.ATTI.SEDUTE.Scadenza_presentazione, DataCreazione = DateTime.Now, IdGruppo = em.id_gruppo, SyncGUID = Guid.NewGuid() }; var destinatariNotifica = new List <NOTIFICHE_DESTINATARI>(); foreach (var destinatario in listaDestinatari) { var existDestinatario = await _unitOfWork.Notifiche_Destinatari.ExistDestinatarioNotifica(em.UIDEM, destinatario.UID_persona); if (!existDestinatario) { destinatariNotifica.Add(new NOTIFICHE_DESTINATARI { NOTIFICHE = newNotifica, UIDPersona = destinatario.UID_persona, IdGruppo = em.id_gruppo, UID = Guid.NewGuid() }); } } if (destinatariNotifica.Any()) { _unitOfWork.Notifiche_Destinatari.AddRange(destinatariNotifica); } await _unitOfWork.CompleteAsync(); var firme = await _logicFirme.GetFirme(em, FirmeTipoEnum.TUTTE); bodyMail += await _logicEm.GetBodyEM(em, firme, currentUser, TemplateTypeEnum.HTML); bodyMail += $"<br/> <a href='{$"{AppSettingsConfiguration.urlPEM_ViewEM}{em.UID_QRCode}"}'>Vedi online</a>"; results.Add(idGuid, $"{n_em} - OK"); } if (!string.IsNullOrEmpty(bodyMail)) { await _logicUtil.InvioMail(new MailModel { OGGETTO = "Invito a firmare i seguenti emendamenti", DA = currentUser.email, A = listaDestinatari.Select(p => p.email).Aggregate((m1, m2) => $"{m1};{m2}"), MESSAGGIO = bodyMail }); } return(results); } catch (Exception e) { Log.Error("Logic - InvitaAFirmareEmendamento", e); throw e; } }
public async Task <ActionResult> EseguiAzioneMassive(ComandiAzioneModel model) { try { var apiGateway = new ApiGateway(_Token); if (model.ListaEmendamenti == null || !model.ListaEmendamenti.Any()) { var listaEM = new EmendamentiViewModel(); var limit = Convert.ToInt32(ConfigurationManager.AppSettings["LimiteDocumentiDaProcessare"]); if (model.Richiesta_Firma) { listaEM = await apiGateway.Emendamento.Get_RichiestaPropriaFirma(model.AttoUId, (ClientModeEnum)model.ClientMode, OrdinamentoEnum.Default, 1, limit); } else { listaEM = await apiGateway.Emendamento.Get(model.AttoUId, (ClientModeEnum)model.ClientMode, OrdinamentoEnum.Default, 1, limit); } model.ListaEmendamenti = listaEM.Data.Results.Select(em => em.UIDEM).ToList(); } switch (model.Azione) { case ActionEnum.FIRMA: var resultFirma = await apiGateway.Emendamento.Firma(model); var listaErroriFirma = new List <string>(); foreach (var itemFirma in resultFirma) { listaErroriFirma.Add($"{itemFirma.Value}"); } if (listaErroriFirma.Count > 0) { return(Json( new { message = $"{listaErroriFirma.Aggregate((i, j) => i + ", " + j)}" }, JsonRequestBehavior.AllowGet)); } return(Json( new { message = $"Nessuna firma effettuata" }, JsonRequestBehavior.AllowGet)); case ActionEnum.DEPOSITA: var resultDeposita = await apiGateway.Emendamento.Deposita(model); var listaErroriDeposito = new List <string>(); foreach (var itemDeposito in resultDeposita) { listaErroriDeposito.Add( $"{itemDeposito.Value}"); } if (listaErroriDeposito.Count > 0) { return(Json( new { message = $"{listaErroriDeposito.Aggregate((i, j) => i + ", " + j)}" }, JsonRequestBehavior.AllowGet)); } return(Json( new { message = $"Nessuna deposito effettuato" }, JsonRequestBehavior.AllowGet)); case ActionEnum.INVITA: var resultInvita = await apiGateway.Notifiche.NotificaEM(model); var listaErroriInvita = new List <string>(); foreach (var itemInvito in resultInvita) { listaErroriInvita.Add( $"{itemInvito.Value}"); } if (listaErroriInvita.Count > 0) { return(Json( new { message = $"{listaErroriInvita.Aggregate((i, j) => i + ", " + j)}" }, JsonRequestBehavior.AllowGet)); } return(Json( new { message = $"Nessuna invito effettuato" }, JsonRequestBehavior.AllowGet)); default: throw new ArgumentOutOfRangeException(nameof(model.Azione), model.Azione, null); } } catch (Exception e) { Console.WriteLine(e); return(Json(JsonConvert.DeserializeObject <ErrorResponse>(e.Message), JsonRequestBehavior.AllowGet)); } }
public async Task <ActionResult> EseguiAzioneMassive(ComandiAzioneModel model) { try { if (model.ListaEmendamenti == null || !model.ListaEmendamenti.Any()) { var listaEM = await ApiGateway.GetEmendamenti(model.AttoUId, (ClientModeEnum)model.ClientMode, OrdinamentoEnum.Default, 1, 50); model.ListaEmendamenti = listaEM.Data.Results.Select(em => em.UIDEM).ToList(); } switch (model.Azione) { case ActionEnum.FIRMA: var resultFirma = await ApiGateway.FirmaEM(model); var listaErroriFirma = new List <string>(); foreach (var itemFirma in resultFirma.Where(itemFirma => itemFirma.Value.Contains("ERROR"))) { listaErroriFirma.Add($"{listaErroriFirma.Count + 1} - {itemFirma.Value.Substring(7)}"); } if (listaErroriFirma.Count > 0) { return(Json( new { message = $"Errori nella procedura di firma: {listaErroriFirma.Aggregate((i, j) => i + ", " + j)}" }, JsonRequestBehavior.AllowGet)); } break; case ActionEnum.DEPOSITA: var resultDeposita = await ApiGateway.DepositaEM(model); var listaErroriDeposito = new List <string>(); foreach (var itemDeposito in resultDeposita.Where(itemDeposito => itemDeposito.Value.Contains("ERROR"))) { listaErroriDeposito.Add( $"{listaErroriDeposito.Count + 1} - {itemDeposito.Value.Substring(7)}"); } if (listaErroriDeposito.Count > 0) { return(Json( new { message = $"Errori nella procedura di deposito: {listaErroriDeposito.Aggregate((i, j) => i + ", " + j)}" }, JsonRequestBehavior.AllowGet)); } break; case ActionEnum.INVITA: var resultInvita = await ApiGateway.NotificaEM(model); var listaErroriInvita = new List <string>(); foreach (var itemInvito in resultInvita.Where(itemInvita => itemInvita.Value.Contains("ERROR"))) { listaErroriInvita.Add( $"{listaErroriInvita.Count + 1} - {itemInvito.Value.Substring(7)}"); } if (listaErroriInvita.Count > 0) { return(Json( new { message = $"Errori nella procedura di invito: {listaErroriInvita.Aggregate((i, j) => i + ", " + j)}" }, JsonRequestBehavior.AllowGet)); } break; default: throw new ArgumentOutOfRangeException(nameof(model.Azione), model.Azione, null); } return(Json(Request.UrlReferrer.ToString(), JsonRequestBehavior.AllowGet)); } catch (Exception e) { Console.WriteLine(e); return(Json(JsonConvert.DeserializeObject <ErrorResponse>(e.Message), JsonRequestBehavior.AllowGet)); } }
public async Task <Dictionary <Guid, string> > InvitaAFirmareEmendamento(ComandiAzioneModel model, PersonaDto currentUser) { try { var results = new Dictionary <Guid, string>(); var listaEM_TITLE = string.Empty; var listaDestinatari = new List <PersonaDto>(); var sonoPersone = Guid.TryParse(model.ListaDestinatari.First(), out var _); if (sonoPersone) { foreach (var destinatario in model.ListaDestinatari) { listaDestinatari.Add(await _logicPersone.GetPersona(new Guid(destinatario), false)); } } else { var sonoGruppi = int.TryParse(model.ListaDestinatari.First(), out var _); if (sonoGruppi) { foreach (var gruppoId in model.ListaDestinatari.Select(g => Convert.ToInt32(g))) { listaDestinatari.AddRange(await _logicPersone.GetConsiglieriGruppo(gruppoId)); } } } if (!listaDestinatari.Any()) { results.Add(Guid.Empty, "Nessun invitato a firmare"); return(results); } foreach (var idGuid in model.ListaEmendamenti) { var em = await _logicEm.GetEM_DTO(idGuid, currentUser); if (em == null) { results.Add(idGuid, "ERROR: NON TROVATO"); continue; } var n_em = em.DisplayTitle; if (em.STATI_EM.IDStato >= (int)StatiEnum.Depositato) { results.Add(idGuid, $"ERROR: Non è possibile creare notifiche per {n_em} essendo già stato depositato"); } var check = _unitOfWork.Notifiche.CheckIfNotificabile(em, currentUser); if (check == false) { results.Add(idGuid, $"ERROR: Non è possibile creare notifiche per {n_em}"); } var newNotifica = new NOTIFICHE { UIDEM = em.UIDEM, UIDAtto = em.UIDAtto, Mittente = currentUser.UID_persona, RuoloMittente = (int)currentUser.CurrentRole, IDTipo = 1, Messaggio = string.Empty, DataScadenza = em.ATTI.SEDUTE.Scadenza_presentazione, DataCreazione = DateTime.Now, IdGruppo = em.id_gruppo, SyncGUID = Guid.NewGuid() }; var destinatariNotifica = new List <NOTIFICHE_DESTINATARI>(); foreach (var destinatario in listaDestinatari) { var existDestinatario = await _unitOfWork.Notifiche_Destinatari.ExistDestinatarioNotifica(em.UIDEM, destinatario.UID_persona); if (!existDestinatario) { destinatariNotifica.Add(new NOTIFICHE_DESTINATARI { NOTIFICHE = newNotifica, UIDPersona = destinatario.UID_persona, IdGruppo = em.id_gruppo, UID = Guid.NewGuid() }); } } if (destinatariNotifica.Any()) { _unitOfWork.Notifiche_Destinatari.AddRange(destinatariNotifica); } await _unitOfWork.CompleteAsync(); results.Add(idGuid, "OK"); listaEM_TITLE += $"{n_em}, "; } if (!string.IsNullOrEmpty(listaEM_TITLE)) { await _logicUtil.InvioMail(new MailModel { OGGETTO = "Invito a firmare i seguenti emendamenti", DA = currentUser.email, A = listaDestinatari.Select(p => p.email).Aggregate((m1, m2) => $"{m1};{m2}"), MESSAGGIO = listaEM_TITLE.Remove(listaEM_TITLE.Length - 3) }); } return(results); } catch (Exception e) { Log.Error("Logic - InvitaAFirmareEmendamento", e); throw e; } }