示例#1
0
        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;
            }
        }
示例#2
0
        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;
            }
        }
示例#3
0
        public bool InsertNotifiche(NotificheModel NM, ModelDBISE db, out bool tutti)
        {
            tutti = false;
            List <DESTINATARI> listDest         = new List <DESTINATARI>();
            decimal            idMittenteLogato = Utility.UtenteAutorizzato().idDipendente;

            using (dtNotifiche dtn = new dtNotifiche())
            {
                //  dtn.RestituisciAutorizzato(idMittenteLogato);
                string[] ld = NM.lDestinatari;
                //DestinatarioModel dm = new DestinatarioModel();
                //List<DestinatarioModel> destMod = new List<DestinatarioModel>();

                if (ld.Length == 1 && ld[0].ToUpper() == "TUTTI")
                {
                    tutti = true;
                    UtentiAutorizzatiModel uta = dtn.RestituisciAutorizzato(idMittenteLogato);
                    var tmp = new List <SelectListItem>();
                    if (uta.idRouloUtente == (decimal)EnumRuoloAccesso.Amministratore)
                    {
                        tmp = GetListaTUTTI((decimal)EnumRuoloAccesso.Utente);
                    }
                    if (uta.idRouloUtente == (decimal)EnumRuoloAccesso.Utente)
                    {
                        tmp = GetListaTUTTI((decimal)EnumRuoloAccesso.Amministratore);
                    }
                    //tmp = GetListaTUTTI(uta.idRouloUtente);// TuttiDestinatari();
                    foreach (var x in tmp)
                    {
                        DESTINATARI d = new DESTINATARI();
                        d.IDNOTIFICA   = NM.idNotifica;
                        d.IDDIPENDENTE = Convert.ToDecimal(x.Value);// RestituisciIDdestinatarioDaEmail(x.Value);
                        listDest.Add(d);
                    }
                }
                else
                {
                    foreach (string email in ld)
                    {
                        DESTINATARI d = new DESTINATARI();
                        d.IDNOTIFICA   = NM.idNotifica;
                        d.IDDIPENDENTE = Convert.ToDecimal(email);// RestituisciIDdestinatarioDaEmail(email);
                        listDest.Add(d);
                    }
                }
                //if (NM.toCc != null)
                //{
                List <DESTINATARI> listToCc = new List <DESTINATARI>();
                string[]           lToCc    = NM.toCc;
                foreach (string email in lToCc)
                {
                    if (email != "null")
                    {
                        DESTINATARI dcc = new DESTINATARI();
                        dcc.IDNOTIFICA   = NM.idNotifica;
                        dcc.IDDIPENDENTE = Convert.ToDecimal(email);// RestituisciIDdestinatarioDaEmail(email);
                        dcc.TOCC         = true;
                        listDest.Add(dcc);
                    }
                }
            }

            if (listDest.Count != 0)
            {
                //try
                //{
                NOTIFICHE nuovo = new NOTIFICHE();
                nuovo.IDMITTENTE     = NM.idMittente;
                nuovo.CORPOMESSAGGIO = NM.corpoMessaggio;
                nuovo.DATANOTIFICA   = DateTime.Now;
                nuovo.OGGETTO        = NM.Oggetto;
                nuovo.DESTINATARI    = listDest;
                nuovo.ALLEGATO       = NM.Allegato;
                nuovo.NOMEDOCUMENTO  = NM.NomeFile;
                nuovo.ESTENSIONEDOC  = NM.Estensione;
                //db.Database.BeginTransaction();
                db.NOTIFICHE.Add(nuovo);
                if (db.SaveChanges() <= 0)
                {
                    throw new Exception("Errore in fase di inserimento notifica");
                }

                //db.Database.CurrentTransaction.Commit();
                NM.idNotifica = nuovo.IDNOTIFICA;
                //}
                //catch (Exception ex)
                //{
                //    //db.Database.CurrentTransaction.Rollback();
                //    throw ex;
                //    //return false;
                //}
            }

            if (listDest.Count != 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }