Example #1
0
        } // PersonaMapper Constructor
        #endregion

        #region FUNCTIONS

          /// <summary>
          /// Función pública que mapea las entidades para devolver el
          /// correspondiente Dto.
          /// </summary>
          /// <remarks>
          /// Se encarga de mapear objetos <see cref="Persona"/> 
          /// devolviendo un objeto <see cref="PersonaDto"/>.
          /// </remarks>
          /// <param name="entityPersona">
          /// Objeto de la entidad <see cref="Persona"/>.
          /// </param>
          /// <exception cref="System.ArgumentNullException">
          /// Lanzada cuando el valor de <c>entityPersona</c> es null.
          /// </exception>
          /// <returns>
          /// Devuelve un objeto de tipo <see cref="PersonaDto"/> 
          /// con los datos mapeados.
          /// </returns>
          public PersonaDto EntityMapping(IPersona entityPersona)
          {
            // Comprobamos el valor del argumento de entrada.
            if (entityPersona == null)
            {
                // Error, lanzamos la excepción.
                throw new System.ArgumentNullException("entityPersona");
            }
            else
            {
                // Objeto de respuesta.
                PersonaDto dtoPersona = new PersonaDto();
                // Mapeamos cada propiedad.
                dtoPersona.Id = entityPersona.Id;
                dtoPersona.Nombre = entityPersona.Nombre;
                dtoPersona.BooleanField = entityPersona.BooleanField;
                dtoPersona.DatetimeField = entityPersona.DatetimeField;
                dtoPersona.ByteField = entityPersona.ByteField;
                dtoPersona.GuidField = entityPersona.GuidField;
                dtoPersona.DecimalField = entityPersona.DecimalField;
                dtoPersona.DobleField = entityPersona.DobleField;
                dtoPersona.FloatField = entityPersona.FloatField;
                dtoPersona.IntField = entityPersona.IntField;
                dtoPersona.LongField = entityPersona.LongField;
                dtoPersona.DateTimeOffsetField = entityPersona.DateTimeOffsetField;
                dtoPersona.ShortField = entityPersona.ShortField;
                dtoPersona.TimeSpanField = entityPersona.TimeSpanField;
                dtoPersona.Int16Field = entityPersona.Int16Field;
                dtoPersona.Int32Field = entityPersona.Int32Field;
                dtoPersona.Int64Field = entityPersona.Int64Field;
                // Devolvemos el resultado.
                return dtoPersona;
            }
          } // EntityMapping
 private static void CrearParticular(string cuit,string dni,string apellido,string nombre,int empresa,string tipoDoc)
 {
     var nuevaPersona = new PersonaDto
     {
         Apellido = apellido,
         Nombre = nombre,
         Key = new KeyPersona(empresa, CuitToDni(dni), tipoDoc),
        CodPostal = GetCp(),
         ActividadPersona = GetActividad()
     };
     nuevaPersona.Save();
     nuevaPersona.Cuenta = HelperCuenta.GetCuenta(cuit, dni, empresa).ToString();
     nuevaPersona.Save();
 }
 private static void CrearCorporativo(string cuit,string razon,int empresa)
 {
     var nuevoCorporativo = new PersonaDto
     {
         Apellido = razon,
         Nombre = cuit,
         Key = new KeyPersona(empresa, CuitToDni(cuit), TipoDocumento.Cuit),
         CodPostal = GetCp(),
         ActividadPersona = GetActividad()
     };
     nuevoCorporativo.Save();
     nuevoCorporativo.Cuenta = HelperCuenta.GetCuenta(cuit, CuitToDni(cuit), empresa).ToString();
     nuevoCorporativo.Save();
 }
Example #4
0
 public virtual void Modificar(PersonaDto entidad)
 {
 }
Example #5
0
        public async Task PubblicaFascicolo(ATTI attoInDb, PubblicaFascicoloModel model, PersonaDto currentUser)
        {
            try
            {
                switch (model.Ordinamento)
                {
                case OrdinamentoEnum.Default:
                case OrdinamentoEnum.Presentazione:
                    attoInDb.OrdinePresentazione        = model.Abilita;
                    attoInDb.LinkFascicoloPresentazione = string.Empty;
                    break;

                case OrdinamentoEnum.Votazione:
                    attoInDb.OrdineVotazione        = model.Abilita;
                    attoInDb.LinkFascicoloVotazione = string.Empty;
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(model.Ordinamento), model.Ordinamento, null);
                }

                attoInDb.UIDPersonaModifica = currentUser.UID_persona;
                attoInDb.DataModifica       = DateTime.Now;

                await _unitOfWork.CompleteAsync();
            }
            catch (Exception e)
            {
                Log.Error("Pubblica Fascicolo", e);
                throw;
            }
        }
Example #6
0
            public async Task <GetPlanAnualGeneralVM> Handle(GetPlanAnualGeneralQuery request, CancellationToken cancellationToken)
            {
                var vm          = new GetPlanAnualGeneralVM();
                var filtros     = request.filtros;
                var JerPosicion = await _context.TJerarquia.FindAsync(filtros.Gerencia);

                IList <string> JerarquiaPersonas = null;

                if (JerPosicion != null)
                {
                    JerarquiaPersonas = _context.TJerarquia.Join(_context.TJerarquiaPersona, jer => jer.CodPosicion, jper => jper.CodPosicion, (jer, jper) => new { jer = jer, jper = jper })
                                        .Where(tuple => (tuple.jer.PathJerarquia.Substring(0, JerPosicion.PathJerarquia.Length) == JerPosicion.PathJerarquia && tuple.jper.CodTipoPersona == 1))
                                        .Select(t => t.jper.CodPersona)
                                        .ToList();
                }
                vm.Pagina = request.filtros.Pagina;
                vm.Count  = JerarquiaPersonas.Count();

                if (filtros.CodReferencia == null || filtros.CodReferencia.Count == 0)
                {
                    vm.Codigos = _context.TPlanAnualGeneral.Where(t =>
                                                                  (String.IsNullOrEmpty(filtros.Anio) || t.Anio.Equals(filtros.Anio)) &&
                                                                  (String.IsNullOrEmpty(filtros.Mes) || t.CodMes.Equals(filtros.Mes)) &&
                                                                  (JerarquiaPersonas.Contains(t.CodPersona))
                                                                  )
                                 .GroupBy(t => t.CodReferencia)
                                 .Select(t => t.Key).ToHashSet();
                    filtros.CodReferencia = vm.Codigos;
                }
                else
                {
                    vm.Codigos = filtros.CodReferencia;
                }

                if ((filtros.Pagina) > (vm.Count / filtros.PaginaTamanio) + 1)
                {
                    filtros.Pagina = 1;
                }

                var ListQuery = JerarquiaPersonas
                                .Skip(filtros.Pagina * filtros.PaginaTamanio - filtros.PaginaTamanio)
                                .Take(filtros.PaginaTamanio)
                                .ToHashSet();

                var Listperson       = _context.TPersona.Where(p => ListQuery.Contains(p.CodPersona)).Select(t => new { t.CodPersona, Nombres = t.ApellidoPaterno + " " + t.ApellidoMaterno + "," + t.Nombres }).ToList();
                var PlanAnualPersons = _context.TPlanAnualGeneral
                                       .Where(t =>
                                              (filtros.CodReferencia.Contains(t.CodReferencia)) &&
                                              (String.IsNullOrEmpty(filtros.Anio) || t.Anio.Equals(filtros.Anio)) &&
                                              (String.IsNullOrEmpty(filtros.Mes) || t.CodMes.Equals(filtros.Mes)) &&
                                              (ListQuery.Contains(t.CodPersona))
                                              ).ToList().GroupBy(x => x.CodPersona)
                                       .Select(g => new PersonaDto {
                    Nombres     = Listperson.First(p => p.CodPersona == g.Key).Nombres,
                    CodPersona  = g.Key,
                    ListCodigos = g.Select(lc => new PlanReferenciaDto {
                        CodReferencia = lc.CodReferencia, Valor = lc.Valor
                    }).ToList(),
                }).ToList();        //.OrderBy(r => r.Nombres);

                // agregar valores nulos a todos los elementos
                var PlanAnualPersonsMoreCeros = new List <PersonaDto>();
                var modulosDefault            = new List <PlanReferenciaDto>();

                foreach (var item in filtros.CodReferencia)
                {
                    var nuevo = new PlanReferenciaDto(item, "0");
                    modulosDefault.Add(nuevo);
                }

                foreach (var item in Listperson)
                {
                    var person = PlanAnualPersons.Find(t => t.CodPersona.Equals(item.CodPersona));
                    if (person != null)
                    {
                        PlanAnualPersonsMoreCeros.Add(person);
                    }
                    else
                    {
                        var nuevo = new PersonaDto {
                            Nombres     = item.Nombres,
                            CodPersona  = item.CodPersona,
                            ListCodigos = modulosDefault
                        };
                        PlanAnualPersonsMoreCeros.Add(nuevo);
                    }
                }

                vm.list = PlanAnualPersonsMoreCeros;
                return(vm);
                //List<Continent> List = MyRepository.GetList<GetAllCountriesAndCities>("EXEC sp_GetAllCountriesAndCities")
                //.GroupBy(x => x.ContinentName)
                //.Select(g => new Continent
                //{
                //    ContinentName = g.Key,
                //    Countries = g.GroupBy(x => x.CountryName)
                //                 .Select(cg => new Country
                //                 {
                //                     CountryName = cg.Key,
                //                     Cities = cg.GroupBy(x => x.CityName)
                //                                .Select(cityG => new City { CityName = cityG.Key })
                //                                .ToList()
                //                 })
                //                 .ToList()
                //})
                //.ToList();

                //foreach (var persona in Listperson)
                //{
                //    var codigos = PlanAnualPersons.Where(t =>t.CodPersona.Equals(persona.CodPersona)).Select(t => new PlanReferenciaDto(t.CodReferencia,t.Valor)).ToHashSet();
                //    var nuevo = new PersonaDto(persona.CodPersona,codigos);
                //    nuevo.Nombres = persona.Nombres;
                //    vm.list.Add(nuevo);
                //}
            }
        public async Task <ATTI> SalvaAtto(ATTI attoInDb, AttiFormUpdateModel attoModel, PersonaDto currentUser)
        {
            try
            {
                attoInDb.UIDPersonaModifica = currentUser.UID_persona;
                attoInDb.DataModifica       = DateTime.Now;
                Mapper.Map(attoModel, attoInDb);
                if (!attoModel.Data_chiusura.HasValue)
                {
                    attoInDb.Data_chiusura = null;
                }

                await _unitOfWork.CompleteAsync();

                if (attoModel.DocAtto_Stream != null)
                {
                    var path = ByteArrayToFile(attoModel.DocAtto_Stream);
                    attoInDb.Path_Testo_Atto = Path.Combine(AppSettingsConfiguration.PrefissoCompatibilitaDocumenti, path);
                    await _unitOfWork.CompleteAsync();
                }

                return(attoInDb);
            }
            catch (Exception e)
            {
                Log.Error("Salva Atto", e);
                throw e;
            }
        }
Example #8
0
        public async Task <Dictionary <string, string> > GetListaDestinatari(Guid atto, TipoDestinatarioNotificaEnum tipo,
                                                                             PersonaDto persona)
        {
            try
            {
                var result = new Dictionary <string, string>();

                if (persona.CurrentRole == RuoliIntEnum.Amministratore_PEM)
                {
                    tipo = TipoDestinatarioNotificaEnum.TUTTI;
                }

                switch (tipo)
                {
                case TipoDestinatarioNotificaEnum.TUTTI:
                    result = (await _logicPersone.GetProponenti())
                             .ToDictionary(p => p.UID_persona.ToString(), s => s.DisplayName);
                    break;

                case TipoDestinatarioNotificaEnum.CONSIGLIERI:
                    if (persona.CurrentRole == RuoliIntEnum.Responsabile_Segreteria_Giunta ||
                        persona.CurrentRole == RuoliIntEnum.Segreteria_Giunta_Regionale)
                    {
                        result = (await _logicPersone.GetAssessoriRiferimento())
                                 .ToDictionary(p => p.UID_persona.ToString(), s => s.DisplayName);
                    }
                    else if (persona.CurrentRole == RuoliIntEnum.Responsabile_Segreteria_Politica ||
                             persona.CurrentRole == RuoliIntEnum.Segreteria_Politica)
                    {
                        result = (await _logicPersone.GetConsiglieriGruppo(persona.Gruppo.id_gruppo))
                                 .ToDictionary(p => p.UID_persona.ToString(), s => s.DisplayName);
                    }
                    else
                    {
                        var consiglieri_In_Db = (await _logicPersone.GetConsiglieri())
                                                .ToDictionary(p => p.UID_persona.ToString(), s => s.DisplayName_GruppoCode);
                        foreach (var consigliere in consiglieri_In_Db)
                        {
                            result.Add(consigliere.Key, consigliere.Value);
                        }
                    }

                    break;

                case TipoDestinatarioNotificaEnum.ASSESSORI:
                    if (persona.CurrentRole == RuoliIntEnum.Responsabile_Segreteria_Giunta ||
                        persona.CurrentRole == RuoliIntEnum.Segreteria_Giunta_Regionale)
                    {
                        result = (await _logicPersone.GetAssessoriRiferimento())
                                 .ToDictionary(p => p.UID_persona.ToString(), s => s.DisplayName);
                    }
                    else if (persona.CurrentRole == RuoliIntEnum.Responsabile_Segreteria_Politica ||
                             persona.CurrentRole == RuoliIntEnum.Segreteria_Politica)
                    {
                        result = (await _logicPersone.GetConsiglieriGruppo(persona.Gruppo.id_gruppo))
                                 .ToDictionary(p => p.UID_persona.ToString(), s => s.DisplayName);
                    }
                    else
                    {
                        var assessori_In_Db = (await _logicPersone.GetAssessoriRiferimento())
                                              .ToDictionary(p => p.UID_persona.ToString(), s => s.DisplayName);
                        foreach (var assessori in assessori_In_Db)
                        {
                            result.Add(assessori.Key, assessori.Value);
                        }
                    }

                    break;

                case TipoDestinatarioNotificaEnum.GRUPPI:
                    result = (await _logicPersone.GetGruppiAttivi())
                             .ToDictionary(k => k.id.ToString(), z => z.descr);
                    break;

                case TipoDestinatarioNotificaEnum.RELATORI:
                    result = (await _logicPersone.GetRelatori(atto))
                             .ToDictionary(k => k.UID_persona.ToString(), z => z.DisplayName);
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(tipo), tipo, null);
                }

                return(result);
            }
            catch (Exception e)
            {
                Log.Error("Logic - GetListaDestinatari", e);
                throw;
            }
        }
        public void Modificar(PersonaDto entidad)
        {
            var persona = InstanciarPersona(entidad);

            persona.Modificar(entidad);
        }
Example #10
0
 public async Task <GruppiDto> GetGruppoAttualePersona(PersonaDto persona, bool isGiunta)
 {
     return(Mapper.Map <View_gruppi_politici_con_giunta, GruppiDto>(
                await _unitOfWork.Gruppi.GetGruppoAttuale(persona, isGiunta)));
 }
        public async Task <HttpResponseMessage> EsportaGrigliaExcel(Guid id, OrdinamentoEnum ordine, ClientModeEnum mode, PersonaDto persona)
        {
            try
            {
                var FilePathComplete = GetLocalPath("xlsx");

                var atto = await _unitOfWork.Atti.Get(id);


                IWorkbook workbook   = new XSSFWorkbook();
                var       excelSheet = workbook.CreateSheet($"{atto.TIPI_ATTO.Tipo_Atto} {atto.NAtto}");

                var row = excelSheet.CreateRow(0);
                SetColumnValue(ref row, "Ordine");
                if (persona.CurrentRole == RuoliIntEnum.Amministratore_PEM)
                {
                    SetColumnValue(ref row, "IDEM");
                    SetColumnValue(ref row, "Atto");
                }

                SetColumnValue(ref row, "Numero EM");
                SetColumnValue(ref row, "Data Deposito");
                SetColumnValue(ref row, "Stato");
                SetColumnValue(ref row, "Tipo");
                SetColumnValue(ref row, "Parte");
                SetColumnValue(ref row, "Articolo");
                SetColumnValue(ref row, "Comma");
                SetColumnValue(ref row, "Lettera");
                SetColumnValue(ref row, "Titolo");
                SetColumnValue(ref row, "Capo");

                if (atto.VIS_Mis_Prog)
                {
                    SetColumnValue(ref row, "Missione");
                    SetColumnValue(ref row, "Programma");
                    SetColumnValue(ref row, "TitoloB");
                }

                SetColumnValue(ref row, "Proponente");
                SetColumnValue(ref row, "Area Politica");
                SetColumnValue(ref row, "Firmatari");
                SetColumnValue(ref row, "Firmatari dopo deposito");
                SetColumnValue(ref row, "LinkEM");

                var personeInDb = await _unitOfWork.Persone.GetAll();

                var personeInDbLight = personeInDb.Select(Mapper.Map <View_UTENTI, PersonaLightDto>).ToList();
                var emList           = await _logicEm.ScaricaEmendamenti(id, ordine, mode, persona, personeInDbLight, false, true);

                var totalProcessTime = 0f;
                foreach (var em in emList)
                {
                    var startTimer = DateTime.Now;
                    var rowEm      = excelSheet.CreateRow(excelSheet.LastRowNum + 1);

                    if (ordine == OrdinamentoEnum.Presentazione)
                    {
                        SetColumnValue(ref rowEm, em.OrdinePresentazione.ToString());
                    }
                    else if (ordine == OrdinamentoEnum.Votazione)
                    {
                        SetColumnValue(ref rowEm, em.OrdineVotazione.ToString());
                    }

                    if (persona.CurrentRole == RuoliIntEnum.Amministratore_PEM)
                    {
                        SetColumnValue(ref rowEm, em.UIDEM.ToString());
                        var legislatura = await _unitOfWork.Legislature.Get(atto.SEDUTE.id_legislatura);

                        SetColumnValue(ref rowEm,
                                       $"{atto.TIPI_ATTO.Tipo_Atto}-{atto.NAtto}-{legislatura.num_legislatura}");
                    }

                    SetColumnValue(ref rowEm, em.N_EM);
                    SetColumnValue(ref rowEm, em.DataDeposito);
                    SetColumnValue(ref rowEm, persona.CurrentRole == RuoliIntEnum.Amministratore_PEM
                        ? $"{em.STATI_EM.IDStato}-{em.STATI_EM.Stato}"
                        : em.STATI_EM.Stato);

                    SetColumnValue(ref rowEm, persona.CurrentRole == RuoliIntEnum.Amministratore_PEM
                        ? $"{em.TIPI_EM.IDTipo_EM}-{em.TIPI_EM.Tipo_EM}"
                        : em.TIPI_EM.Tipo_EM);

                    SetColumnValue(ref rowEm, persona.CurrentRole == RuoliIntEnum.Amministratore_PEM
                        ? $"{em.IDParte}-{em.PARTI_TESTO.Parte}"
                        : em.PARTI_TESTO.Parte);

                    SetColumnValue(ref rowEm,
                                   em.UIDArticolo.HasValue && em.UIDArticolo.Value != Guid.Empty ? em.ARTICOLI.Articolo : "");
                    SetColumnValue(ref rowEm,
                                   em.UIDComma.HasValue && em.UIDComma.Value != Guid.Empty ? em.COMMI.Comma : "");
                    SetColumnValue(ref rowEm,
                                   em.UIDLettera.HasValue && em.UIDLettera.Value != Guid.Empty ? em.LETTERE.Lettera : em.NLettera);
                    SetColumnValue(ref rowEm, em.NTitolo);
                    SetColumnValue(ref rowEm, em.NCapo);

                    if (atto.VIS_Mis_Prog)
                    {
                        SetColumnValue(ref rowEm, em.NMissione.ToString());
                        SetColumnValue(ref rowEm, em.NProgramma.ToString());
                        SetColumnValue(ref rowEm, em.NTitoloB.ToString());
                    }

                    SetColumnValue(ref rowEm, persona.CurrentRole == RuoliIntEnum.Amministratore_PEM
                        ? $"{em.PersonaProponente.UID_persona}-{em.PersonaProponente.DisplayName}"
                        : em.PersonaProponente.DisplayName);
                    SetColumnValue(ref rowEm, "");

                    if (!string.IsNullOrEmpty(em.DataDeposito))
                    {
                        var firme = await _logicFirme.GetFirme((EM)em, FirmeTipoEnum.TUTTE);

                        var firmeDto = firme.ToList();

                        var firmatari_opendata_ante = "--";
                        try
                        {
                            if (firmeDto.Any(f =>
                                             f.Timestamp < Convert.ToDateTime(em.DataDeposito)))
                            {
                                firmatari_opendata_ante = await _logicEm.GetFirmatariEM_OPENDATA(firmeDto.Where(f =>
                                                                                                                f.Timestamp < Convert.ToDateTime(em.DataDeposito)),
                                                                                                 persona.CurrentRole, personeInDbLight);
                            }
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e);
                        }

                        var firmatari_opendata_post = "--";
                        try
                        {
                            if (firmeDto.Any(f =>
                                             f.Timestamp > Convert.ToDateTime(em.DataDeposito)))
                            {
                                firmatari_opendata_post = await _logicEm.GetFirmatariEM_OPENDATA(firmeDto.Where(f =>
                                                                                                                f.Timestamp > Convert.ToDateTime(em.DataDeposito)),
                                                                                                 persona.CurrentRole, personeInDbLight);
                            }
                        }
                        catch (Exception e)
                        {
                            Console.WriteLine(e);
                        }

                        SetColumnValue(ref rowEm, firmatari_opendata_ante);
                        SetColumnValue(ref rowEm, firmatari_opendata_post);
                    }
                    else
                    {
                        SetColumnValue(ref rowEm, "--");
                        SetColumnValue(ref rowEm, "--");
                    }

                    SetColumnValue(ref rowEm, $"{AppSettingsConfiguration.urlPEM_ViewEM}{em.UID_QRCode}");
                    var spentTime = Math.Round((DateTime.Now - startTimer).TotalSeconds, 2);
                    totalProcessTime += (float)spentTime;
                }
                Log.Debug($"EsportaGrigliaXLS: Compilazione XLS eseguita in {totalProcessTime} s");

                Console.WriteLine($"Excel row count: {excelSheet.LastRowNum}");
                return(await Response(FilePathComplete, workbook));
            }
            catch (Exception e)
            {
                Log.Error("Logic - EsportaGrigliaXLS", e);
                throw e;
            }
        }
        public async Task <HttpResponseMessage> EsportaGrigliaReportExcel(Guid id, OrdinamentoEnum ordine, ClientModeEnum mode, PersonaDto persona)
        {
            try
            {
                var FilePathComplete = GetLocalPath("xlsx");

                IWorkbook workbook = new XSSFWorkbook();
                var       style    = workbook.CreateCellStyle();
                style.FillForegroundColor = HSSFColor.Grey25Percent.Index;
                style.FillPattern         = FillPattern.SolidForeground;
                var styleReport = workbook.CreateCellStyle();
                styleReport.FillForegroundColor = HSSFColor.LightGreen.Index;
                styleReport.FillPattern         = FillPattern.SolidForeground;
                styleReport.Alignment           = HorizontalAlignment.Center;
                var personeInDb = await _unitOfWork.Persone.GetAll();

                var personeInDbLight = personeInDb.Select(Mapper.Map <View_UTENTI, PersonaLightDto>).ToList();
                var emList           = await _logicEm.ScaricaEmendamenti(id, ordine, mode, persona, personeInDbLight);

                var uolaSheet =
                    await NewSheet(
                        workbook.CreateSheet(
                            nameof(ReportType.UOLA)),
                        id,
                        ReportType.UOLA,
                        emList
                        .OrderBy(em => em.OrdineVotazione)
                        .ThenBy(em => em.Rif_UIDEM)
                        .ThenBy(em => em.IDStato),
                        style,
                        styleReport);

                var pcrSheet = await NewSheet(workbook.CreateSheet(nameof(ReportType.PCR)), id, ReportType.PCR, emList
                                              .OrderBy(em => em.OrdineVotazione)
                                              .ThenBy(em => em.Rif_UIDEM)
                                              .ThenBy(em => em.IDStato),
                                              style,
                                              styleReport);

                var progSheet = await NewSheet(workbook.CreateSheet(nameof(ReportType.PROGRESSIVO)), id,
                                               ReportType.PROGRESSIVO, emList.OrderBy(em => em.Rif_UIDEM)
                                               .ThenBy(em => em.OrdinePresentazione),
                                               style,
                                               styleReport);

                return(await Response(FilePathComplete, workbook));
            }
            catch (Exception e)
            {
                Log.Error("Logic - EsportaGrigliaReportXLS", e);
                throw e;
            }
        }
        private async Task <string> ComposeWordTable(Guid attoUID, OrdinamentoEnum ordine, ClientModeEnum mode, PersonaDto persona)
        {
            var personeInDb = await _unitOfWork.Persone.GetAll();

            var personeInDbLight = personeInDb.Select(Mapper.Map <View_UTENTI, PersonaLightDto>).ToList();
            var emList           = await _logicEm.ScaricaEmendamenti(attoUID, ordine, mode, persona, personeInDbLight, open_data_enabled : false, true);

            var body = "<html>";

            body += "<body style='page-orientation: landscape'>";
            body += "<table>";

            body += "<thead>";
            body += "<tr>";
            body += ComposeHeaderColumn("Ordine");
            body += ComposeHeaderColumn("EM/SUB");
            body += ComposeHeaderColumn("Testo");
            body += ComposeHeaderColumn("Relazione");
            body += ComposeHeaderColumn("Proponente");
            body += ComposeHeaderColumn("Stato");
            body += "</tr>";
            body += "</thead>";

            body += "<tbody>";
            body  = emList.Aggregate(body, (current, em) => current + ComposeBodyRow(em));
            body += "</tbody>";

            body += "</table>";
            body += "</body>";
            body += "</html>";
            return(body);
        }
        public async Task <HttpResponseMessage> HTMLtoWORD(Guid attoUId, OrdinamentoEnum ordine, ClientModeEnum mode, PersonaDto persona)
        {
            try
            {
                var FilePathComplete = GetLocalPath("docx");

                using (var generatedDocument = new MemoryStream())
                {
                    using (var package =
                               WordprocessingDocument.Create(generatedDocument, WordprocessingDocumentType.Document))
                    {
                        var mainPart = package.MainDocumentPart;
                        if (mainPart == null)
                        {
                            mainPart = package.AddMainDocumentPart();
                            new Document(new Body()).Save(mainPart);
                        }

                        var converter = new HtmlConverter(mainPart);
                        converter.ParseHtml(await ComposeWordTable(attoUId, ordine, mode, persona));

                        mainPart.Document.Save();
                    }

                    File.WriteAllBytes(FilePathComplete, generatedDocument.ToArray());
                    var result = new HttpResponseMessage(HttpStatusCode.OK)
                    {
                        Content = new ByteArrayContent(generatedDocument.ToArray())
                    };
                    result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                    {
                        FileName = Path.GetFileName(FilePathComplete)
                    };
                    result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/doc");

                    return(result);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
        private async Task SalvaDatiInCookies(PersonaDto persona, string jwt, string username)
        {
            string jwt1 = string.Empty, jwt2 = string.Empty, jwt3 = string.Empty;

            SliceBy3(jwt, ref jwt1, ref jwt2, ref jwt3);

            var    persona_json = JsonConvert.SerializeObject(persona);
            string p1 = string.Empty, p2 = string.Empty, p3 = string.Empty;

            SliceBy3(persona_json, ref p1, ref p2, ref p3);

            #region USER DATA

            var authTicket1 = new FormsAuthenticationTicket
                              (
                1, $"{username}1", DateTime.Now, DateTime.Now.AddHours(2), false, p1
                              );
            var authTicket2 = new FormsAuthenticationTicket
                              (
                1, $"{username}2", DateTime.Now, DateTime.Now.AddHours(2), false, p2
                              );
            var authTicket3 = new FormsAuthenticationTicket
                              (
                1, $"{username}3", DateTime.Now, DateTime.Now.AddHours(2), false, p3
                              );

            var enTicket1 = FormsAuthentication.Encrypt(authTicket1);
            var faCookie1 = new HttpCookie("PRCookies1", enTicket1)
            {
                HttpOnly = true
            };
            Response.Cookies.Add(faCookie1);
            var enTicket2 = FormsAuthentication.Encrypt(authTicket2);
            var faCookie2 = new HttpCookie("PRCookies2", enTicket2)
            {
                HttpOnly = true
            };
            Response.Cookies.Add(faCookie2);
            var enTicket3 = FormsAuthentication.Encrypt(authTicket3);
            var faCookie3 = new HttpCookie("PRCookies3", enTicket3)
            {
                HttpOnly = true
            };
            Response.Cookies.Add(faCookie3);

            #endregion

            #region JWT DATA

            var securetyTicket1 = new FormsAuthenticationTicket
                                  (
                1, "token_jwt1", DateTime.Now, DateTime.Now.AddHours(2), false, jwt1
                                  );
            var securetyTicket2 = new FormsAuthenticationTicket
                                  (
                1, "token_jwt2", DateTime.Now, DateTime.Now.AddHours(2), false, jwt2
                                  );
            var securetyTicket3 = new FormsAuthenticationTicket
                                  (
                1, "token_jwt3", DateTime.Now, DateTime.Now.AddHours(2), false, jwt3
                                  );

            var sTicket1 = FormsAuthentication.Encrypt(securetyTicket1);
            var sCookie1 = new HttpCookie("SCookies1", sTicket1)
            {
                HttpOnly = true
            };
            Response.Cookies.Add(sCookie1);
            var sTicket2 = FormsAuthentication.Encrypt(securetyTicket2);
            var sCookie2 = new HttpCookie("SCookies2", sTicket2)
            {
                HttpOnly = true
            };
            Response.Cookies.Add(sCookie2);
            var sTicket3 = FormsAuthentication.Encrypt(securetyTicket3);
            var sCookie3 = new HttpCookie("SCookies3", sTicket3)
            {
                HttpOnly = true
            };
            Response.Cookies.Add(sCookie3);

            #endregion

            #region GRUPPI DATA

            if (persona.CurrentRole == RuoliIntEnum.Amministratore_PEM)
            {
                var apiGateway = new ApiGateway(jwt);
                var gruppi     = await apiGateway.Persone.GetGruppiAttivi();

                string g1 = string.Empty, g2 = string.Empty, g3 = string.Empty;

                SliceBy3(JsonConvert.SerializeObject(gruppi), ref g1, ref g2, ref g3);

                var groupsTicket1 = new FormsAuthenticationTicket
                                    (
                    1, "gruppi1", DateTime.Now, DateTime.Now.AddHours(2), false, g1
                                    );
                var groupsTicket2 = new FormsAuthenticationTicket
                                    (
                    1, "gruppi2", DateTime.Now, DateTime.Now.AddHours(2), false, g2
                                    );
                var groupsTicket3 = new FormsAuthenticationTicket
                                    (
                    1, "gruppi3", DateTime.Now, DateTime.Now.AddHours(2), false, g3
                                    );
                var gTicket1 = FormsAuthentication.Encrypt(groupsTicket1);
                var gCookie1 = new HttpCookie("GCookies1", gTicket1)
                {
                    HttpOnly = true
                };
                Response.Cookies.Add(gCookie1);
                var gTicket2 = FormsAuthentication.Encrypt(groupsTicket2);
                var gCookie2 = new HttpCookie("GCookies2", gTicket2)
                {
                    HttpOnly = true
                };
                Response.Cookies.Add(gCookie2);
                var gTicket3 = FormsAuthentication.Encrypt(groupsTicket3);
                var gCookie3 = new HttpCookie("GCookies3", gTicket3)
                {
                    HttpOnly = true
                };
                Response.Cookies.Add(gCookie3);
            }

            #endregion

            FormsAuthentication.SetAuthCookie(username, false);
        }
Example #16
0
 public virtual void Add(PersonaDto persona)
 {
 }
Example #17
0
        internal static void GetBodyPDF(EmendamentiDto emendamento, IEnumerable <FirmeDto> firme, PersonaDto currentUser,
                                        ref string body)
        {
            try
            {
                var firmeDtos = firme.ToList();

                body = body.Replace("{lblTitoloEMView}", emendamento.DisplayTitle);

                if (string.IsNullOrEmpty(emendamento.EM_Certificato))
                {
                    //EM TEMPORANEO
                    var bodyEMView = string.Empty;
                    GetBodyTemporaneo(emendamento, ref bodyEMView);
                    body = body.Replace("{ltEMView}", bodyEMView);
                    body = body.Replace("{ltTestoModificabile}", "").Replace("{TESTOMOD_COMMENTO_START}", "<!--")
                           .Replace("{TESTOMOD_COMMENTO_END}", "-->");
                    body = body.Replace("{lblFattoProprioDa}", "").Replace("{FATTOPROPRIO_COMMENTO_START}", "<!--")
                           .Replace("{FATTOPROPRIO_COMMENTO_END}", "-->");
                }
                else
                {
                    body = body.Replace("{ltEMView}", emendamento.EM_Certificato);

                    #region Emendamento Fatto Proprio Da

                    body = emendamento.UIDPersonaProponenteOLD.HasValue
                        ? body.Replace("{lblFattoProprioDa}",
                                       $"L'emendamento ritirato è stato fatto proprio da {emendamento.PersonaProponente.DisplayName}")
                           .Replace("{FATTOPROPRIO_COMMENTO_START}", string.Empty)
                           .Replace("{FATTOPROPRIO_COMMENTO_END}", string.Empty)
                        : body.Replace("{lblFattoProprioDa}", string.Empty)
                           .Replace("{FATTOPROPRIO_COMMENTO_START}", "<!--")
                           .Replace("{FATTOPROPRIO_COMMENTO_END}", "-->");

                    #endregion

                    #region Testo Modificabile

                    body = !string.IsNullOrEmpty(emendamento.TestoEM_Modificabile)
                        ? body.Replace("{ltTestoModificabile}", emendamento.TestoEM_Modificabile)
                           .Replace("{TESTOMOD_COMMENTO_START}", string.Empty)
                           .Replace("{TESTOMOD_COMMENTO_END}", string.Empty)
                        : body.Replace("{ltTestoModificabile}", string.Empty)
                           .Replace("{TESTOMOD_COMMENTO_START}", "<!--")
                           .Replace("{TESTOMOD_COMMENTO_END}", "-->");

                    #endregion
                }

                #region Firme

                if (emendamento.STATI_EM.IDStato >= (int)StatiEnum.Depositato)
                {
                    //DEPOSITATO
                    body = body.Replace("{lblDepositoEMView}",
                                        firmeDtos.Any(s => s.ufficio)
                            ? "Emendamento Depositato d'ufficio"
                            : $"Emendamento Depositato il {Convert.ToDateTime(emendamento.DataDeposito):dd/MM/yyyy HH:mm}");

                    var firmeAnte = firmeDtos.Where(f => f.Timestamp < Convert.ToDateTime(emendamento.DataDeposito));
                    var firmePost = firmeDtos.Where(f => f.Timestamp > Convert.ToDateTime(emendamento.DataDeposito));

                    body = body.Replace("{radGridFirmeView}", GetFirmatariEM(firmeAnte))
                           .Replace("{FIRMEANTE_COMMENTO_START}", string.Empty)
                           .Replace("{FIRMEANTE_COMMENTO_END}", string.Empty);
                    var TemplatefirmePOST = @"<div>
                             <div style='width:100%;'>
                                      <h5>Firme dopo il deposito</h5>
                              </div>
                              <div style='text-align:left'>
                                {firme}
                            </div>
                        </div>";
                    if (firmePost.Any())
                    {
                        body = body.Replace("{radGridFirmePostView}",
                                            TemplatefirmePOST.Replace("{firme}", GetFirmatariEM(firmePost)))
                               .Replace("{FIRME_COMMENTO_START}", string.Empty)
                               .Replace("{FIRME_COMMENTO_END}", string.Empty);
                    }
                    else
                    {
                        body = body.Replace("{radGridFirmePostView}", string.Empty)
                               .Replace("{FIRME_COMMENTO_START}", "<!--").Replace("{FIRME_COMMENTO_END}", "-->");
                    }
                }
                else
                {
                    //FIRMATO MA NON DEPOSITATO
                    body = body.Replace("{lblDepositoEMView}", string.Empty);
                    body = body.Replace("{radGridFirmeView}", GetFirmatariEM(firmeDtos))
                           .Replace("{FIRMEANTE_COMMENTO_START}", string.Empty)
                           .Replace("{FIRMEANTE_COMMENTO_END}", string.Empty);
                    body = body.Replace("{radGridFirmePostView}", string.Empty)
                           .Replace("{FIRME_COMMENTO_START}", "<!--")
                           .Replace("{FIRME_COMMENTO_END}", "-->");
                }

                #endregion

                body = body.Replace("{lblNotePubblicheEMView}",
                                    !string.IsNullOrEmpty(emendamento.NOTE_Griglia)
                            ? $"Note: {emendamento.NOTE_Griglia}"
                            : string.Empty)
                       .Replace("{NOTE_PUBBLICHE_COMMENTO_START}",
                                !string.IsNullOrEmpty(emendamento.NOTE_Griglia) ? string.Empty : "<!--").Replace(
                    "{NOTE_PUBBLICHE_COMMENTO_END}",
                    !string.IsNullOrEmpty(emendamento.NOTE_Griglia) ? string.Empty : "-->");
                if (currentUser.CurrentRole == RuoliIntEnum.Segreteria_Assemblea &&
                    !string.IsNullOrEmpty(emendamento.NOTE_EM))
                {
                    body = body.Replace("{lblNotePrivateEMView}",
                                        $"Note Riservate: {emendamento.NOTE_EM.Replace("{NOTEPRIV_COMMENTO_START}", string.Empty).Replace("{NOTEPRIV_COMMENTO_END}", string.Empty)}");
                }
                else
                {
                    body = body.Replace("{lblNotePrivateEMView}", string.Empty)
                           .Replace("{NOTEPRIV_COMMENTO_START}", "<!--")
                           .Replace("{NOTEPRIV_COMMENTO_END}", "-->");
                }

                body = body.Replace("{QRCode}", string.Empty);
            }
            catch (Exception e)
            {
                Log.Error("GetBodyPDF", e);
                throw e;
            }
        }
Example #18
0
        public async Task <HttpResponseMessage> EsportaGrigliaExcel(Guid id, OrdinamentoEnum ordine, PersonaDto persona)
        {
            try
            {
                var _pathTemp = AppSettingsConfiguration.CartellaTemp;
                if (!Directory.Exists(_pathTemp))
                {
                    Directory.CreateDirectory(_pathTemp);
                }

                var nameFileXLS      = $"PEM_{DateTime.Now:ddMMyyyy_hhmmss}.xlsx";
                var FilePathComplete = Path.Combine(_pathTemp, nameFileXLS);

                var atto = await _unitOfWork.Atti.Get(id);

                using (var fs = new FileStream(FilePathComplete, FileMode.Create, FileAccess.Write))
                {
                    IWorkbook workbook   = new XSSFWorkbook();
                    var       excelSheet = workbook.CreateSheet($"{atto.TIPI_ATTO.Tipo_Atto} {atto.NAtto}");

                    var row = excelSheet.CreateRow(0);

                    if (atto.OrdineVotazione.HasValue)
                    {
                        if (atto.OrdineVotazione.Value)
                        {
                            row.CreateCell(GetColumn(row.LastCellNum)).SetCellValue("OrdineVotazione");
                        }
                    }

                    if (persona.CurrentRole == RuoliIntEnum.Amministratore_PEM)
                    {
                        row.CreateCell(GetColumn(row.LastCellNum)).SetCellValue("IDEM");
                        row.CreateCell(GetColumn(row.LastCellNum)).SetCellValue("Atto");
                    }

                    row.CreateCell(GetColumn(row.LastCellNum)).SetCellValue("Numero EM");
                    row.CreateCell(GetColumn(row.LastCellNum)).SetCellValue("Data Deposito");
                    row.CreateCell(GetColumn(row.LastCellNum)).SetCellValue("Stato");
                    row.CreateCell(GetColumn(row.LastCellNum)).SetCellValue("Tipo");
                    row.CreateCell(GetColumn(row.LastCellNum)).SetCellValue("Parte");
                    row.CreateCell(GetColumn(row.LastCellNum)).SetCellValue("Articolo");
                    row.CreateCell(GetColumn(row.LastCellNum)).SetCellValue("Comma");
                    row.CreateCell(GetColumn(row.LastCellNum)).SetCellValue("Lettera");
                    row.CreateCell(GetColumn(row.LastCellNum)).SetCellValue("Titolo");
                    row.CreateCell(GetColumn(row.LastCellNum)).SetCellValue("Capo");

                    if (atto.VIS_Mis_Prog)
                    {
                        row.CreateCell(GetColumn(row.LastCellNum)).SetCellValue("Missione");
                        row.CreateCell(GetColumn(row.LastCellNum)).SetCellValue("Programma");
                        row.CreateCell(GetColumn(row.LastCellNum)).SetCellValue("TitoloB");
                    }

                    row.CreateCell(GetColumn(row.LastCellNum)).SetCellValue("Proponente");
                    row.CreateCell(GetColumn(row.LastCellNum)).SetCellValue("Area Politica");
                    row.CreateCell(GetColumn(row.LastCellNum)).SetCellValue("Firmatari");
                    row.CreateCell(GetColumn(row.LastCellNum)).SetCellValue("Firmatari dopo deposito");
                    row.CreateCell(GetColumn(row.LastCellNum)).SetCellValue("LinkEM");

                    var emList = await _logicEm.GetEmendamenti(new BaseRequest <EmendamentiDto>
                    {
                        id     = id,
                        ordine = ordine,
                        page   = 1,
                        size   = 50
                    }, persona, (int)ClientModeEnum.GRUPPI);

                    foreach (var em in emList)
                    {
                        var rowEm = excelSheet.CreateRow(excelSheet.LastRowNum + 1);

                        if (atto.OrdineVotazione.HasValue)
                        {
                            if (atto.OrdineVotazione.Value)
                            {
                                rowEm.CreateCell(GetColumn(rowEm.LastCellNum)).SetCellValue(em.OrdineVotazione);
                            }
                        }

                        if (persona.CurrentRole == RuoliIntEnum.Amministratore_PEM)
                        {
                            rowEm.CreateCell(GetColumn(rowEm.LastCellNum)).SetCellValue(em.UIDEM.ToString());
                            rowEm.CreateCell(GetColumn(rowEm.LastCellNum))
                            .SetCellValue(
                                $"{atto.TIPI_ATTO.Tipo_Atto}-{atto.NAtto}-{atto.SEDUTE.legislature.num_legislatura}");
                        }

                        rowEm.CreateCell(GetColumn(rowEm.LastCellNum)).SetCellValue(
                            GetNomeEM(em,
                                      em.Rif_UIDEM.HasValue
                                    ? Mapper.Map <EM, EmendamentiDto>(await _logicEm.GetEM(em.Rif_UIDEM.Value))
                                    : null));
                        rowEm.CreateCell(GetColumn(rowEm.LastCellNum)).SetCellValue(
                            !string.IsNullOrEmpty(em.DataDeposito)
                                ? Decrypt(em.DataDeposito)
                                : "--");

                        rowEm.CreateCell(GetColumn(rowEm.LastCellNum))
                        .SetCellValue(persona.CurrentRole == RuoliIntEnum.Amministratore_PEM
                                ? $"{em.STATI_EM.IDStato}-{em.STATI_EM.Stato}"
                                : em.STATI_EM.Stato);

                        rowEm.CreateCell(GetColumn(rowEm.LastCellNum))
                        .SetCellValue(persona.CurrentRole == RuoliIntEnum.Amministratore_PEM
                                ? $"{em.TIPI_EM.IDTipo_EM}-{em.TIPI_EM.Tipo_EM}"
                                : em.TIPI_EM.Tipo_EM);

                        rowEm.CreateCell(GetColumn(rowEm.LastCellNum))
                        .SetCellValue(persona.CurrentRole == RuoliIntEnum.Amministratore_PEM
                                ? $"{em.PARTI_TESTO.IDParte}-{em.PARTI_TESTO.Parte}"
                                : em.PARTI_TESTO.Parte);

                        rowEm.CreateCell(GetColumn(rowEm.LastCellNum))
                        .SetCellValue(em.UIDArticolo.HasValue ? em.ARTICOLI.Articolo : "");
                        rowEm.CreateCell(GetColumn(rowEm.LastCellNum))
                        .SetCellValue(em.UIDComma.HasValue ? em.COMMI.Comma : "");
                        rowEm.CreateCell(GetColumn(rowEm.LastCellNum))
                        .SetCellValue(em.UIDLettera.HasValue ? em.LETTERE.Lettera : em.NLettera);

                        rowEm.CreateCell(GetColumn(rowEm.LastCellNum)).SetCellValue(em.NTitolo);
                        rowEm.CreateCell(GetColumn(rowEm.LastCellNum)).SetCellValue(em.NCapo);

                        if (atto.VIS_Mis_Prog)
                        {
                            rowEm.CreateCell(GetColumn(rowEm.LastCellNum)).SetCellValue(em.NMissione.ToString());
                            rowEm.CreateCell(GetColumn(rowEm.LastCellNum)).SetCellValue(em.NProgramma.ToString());
                            rowEm.CreateCell(GetColumn(rowEm.LastCellNum)).SetCellValue(em.NTitoloB.ToString());
                        }

                        var proponente =
                            Mapper.Map <View_UTENTI, PersonaDto>(await _unitOfWork.Persone.Get(em.UIDPersonaProponente.Value));
                        rowEm.CreateCell(GetColumn(rowEm.LastCellNum))
                        .SetCellValue(persona.CurrentRole == RuoliIntEnum.Amministratore_PEM
                                ? $"{proponente.id_persona}-{proponente.DisplayName}"
                                : proponente.DisplayName);

                        rowEm.CreateCell(GetColumn(rowEm.LastCellNum)).SetCellValue("");

                        if (!string.IsNullOrEmpty(em.DataDeposito))
                        {
                            var firme = await _logicFirme.GetFirme(Mapper.Map <EmendamentiDto, EM>(em),
                                                                   FirmeTipoEnum.TUTTE);

                            var firmeDto = firme.Select(Mapper.Map <FIRME, FirmeDto>)
                                           .ToList();

                            var firmeAnte = firmeDto.Where(f =>
                                                           f.Timestamp < Convert.ToDateTime(Decrypt(em.DataDeposito)));
                            var firmePost = firmeDto.Where(f =>
                                                           f.Timestamp > Convert.ToDateTime(Decrypt(em.DataDeposito)));

                            rowEm.CreateCell(GetColumn(rowEm.LastCellNum))
                            .SetCellValue(GetFirmatariEM_OPENDATA(firmeAnte,
                                                                  persona.CurrentRole));
                            rowEm.CreateCell(GetColumn(rowEm.LastCellNum))
                            .SetCellValue(GetFirmatariEM_OPENDATA(firmePost,
                                                                  persona.CurrentRole));
                        }
                        else
                        {
                            rowEm.CreateCell(GetColumn(rowEm.LastCellNum)).SetCellValue("--");
                            rowEm.CreateCell(GetColumn(rowEm.LastCellNum)).SetCellValue("--");
                        }

                        rowEm.CreateCell(GetColumn(rowEm.LastCellNum))
                        .SetCellValue($"{AppSettingsConfiguration.urlPEM}/{em.UID_QRCode}");
                    }

                    workbook.Write(fs);
                }

                var stream = new MemoryStream();
                using (var fileStream = new FileStream(FilePathComplete, FileMode.Open))
                {
                    await fileStream.CopyToAsync(stream);
                }

                stream.Position = 0;
                var result = new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new ByteArrayContent(stream.GetBuffer())
                };
                result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                {
                    FileName = nameFileXLS
                };
                result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");

                return(result);
            }
            catch (Exception e)
            {
                Log.Error("Logic - EsportaGrigliaXLS", e);
                throw e;
            }
        }
Example #19
0
        /// <summary>
        ///     Restituisce la stringa da aggiornare/inserire in OpenData
        /// </summary>
        /// <param name="uidEM"></param>
        /// <returns></returns>
        internal static string GetEM_OPENDATA(EM em, EM em_riferimento, List <FirmeDto> firme, PersonaDto proponente)
        {
            var separatore = AppSettingsConfiguration.OpenData_Separatore;
            var result     = string.Empty;

            try
            {
                var nome_em = GetNomeEM(Mapper.Map <EM, EmendamentiDto>(em),
                                        em_riferimento != null ? Mapper.Map <EM, EmendamentiDto>(em) : null);

                //Colonna IDEM
                result +=
                    $"{em.ATTI.TIPI_ATTO.Tipo_Atto}-{em.ATTI.NAtto}-{em.ATTI.SEDUTE.legislature.num_legislatura}-{nome_em}{separatore}";
                //Colonna Atto
                result +=
                    $"{em.ATTI.TIPI_ATTO.Tipo_Atto}-{em.ATTI.NAtto}-{em.ATTI.SEDUTE.legislature.num_legislatura}{separatore}";
                //Colonna Numero EM
                result += nome_em + separatore;
                //Colonna Data Deposito
                if (em.STATI_EM.IDStato >= (int)StatiEnum.Depositato)
                {
                    var dataDeposito =
                        Convert.ToDateTime(DecryptString(em.DataDeposito, AppSettingsConfiguration.masterKey));
                    result += dataDeposito.ToString("yyyy-MM-dd HH:mm") + separatore;
                }
                else
                {
                    result += "--" + separatore;
                }

                //Colonna Stato
                result += $"{em.STATI_EM.IDStato}-{em.STATI_EM.Stato}{separatore}";
                //Colonna Tipo EM
                result += $"{em.TIPI_EM.IDTipo_EM}-{em.TIPI_EM.Tipo_EM}{separatore}";
                //Colonna Parte
                result += $"{em.PARTI_TESTO.IDParte}-{em.PARTI_TESTO.Parte}{separatore}";
                //Colonna Articolo
                var articolo = string.Empty;
                if (em.UIDArticolo.HasValue)
                {
                    articolo = em.ARTICOLI.Articolo;
                }

                result += $"{articolo}{separatore}";

                //Colonna Comma
                var comma = string.Empty;
                if (em.UIDComma.HasValue)
                {
                    comma = em.COMMI.Comma;
                }

                result += $"{comma}{separatore}";
                //Colonna NTitolo
                result += $"{em.NTitolo}{separatore}";
                //Colonna NCapo
                result += $"{em.NCapo}{separatore}";
                //Colonna NMissione
                result += $"{em.NMissione}{separatore}";
                //Colonna NProgramma
                result += $"{em.NProgramma}{separatore}";
                //Colonna NTitoloB
                result += $"{em.NTitoloB}{separatore}";
                //Colonna Proponente
                result += $"{proponente.id_persona}-{proponente.DisplayName}{separatore}";
                //Colonna AreaPolitica
                switch ((AreaPoliticaIntEnum)em.AreaPolitica.Value)
                {
                case AreaPoliticaIntEnum.Maggioranza:
                    result += $"{AreaPoliticaEnum.Maggioranza}{separatore}";
                    break;

                case AreaPoliticaIntEnum.Minoranza:
                    result += $"{AreaPoliticaEnum.Minoranza}{separatore}";
                    break;

                case AreaPoliticaIntEnum.Misto_Maggioranza:
                    result += $"{AreaPoliticaEnum.Misto_Maggioranza}{separatore}";
                    break;

                case AreaPoliticaIntEnum.Misto_Minoranza:
                    result += $"{AreaPoliticaEnum.Misto_Minoranza}{separatore}";
                    break;

                default:
                    result += $"{separatore}";
                    break;
                }

                //Colonna Firmatari
                if (em.STATI_EM.IDStato >= (int)StatiEnum.Depositato)
                {
                    var firmeAnte = firme.Where(f =>
                                                f.Timestamp < Convert.ToDateTime(Decrypt(em.DataDeposito)));
                    var firmePost = firme.Where(f =>
                                                f.Timestamp > Convert.ToDateTime(Decrypt(em.DataDeposito)));

                    result += $"{GetFirmatariEM_OPENDATA(firmeAnte, RuoliIntEnum.Amministratore_PEM)}{separatore}";
                    result += $"{GetFirmatariEM_OPENDATA(firmePost, RuoliIntEnum.Amministratore_PEM)}{separatore}";
                }
                else
                {
                    result += "--" + separatore;
                    result += "--" + separatore;
                }

                //Colonna Link
                result += $"{AppSettingsConfiguration.urlPEM}/{em.UID_QRCode}";

                return(result);
            }
            catch (Exception e)
            {
                Log.Error("GetEM_OPENDATA", e);
                throw e;
            }
        }
        public long Insertar(PersonaDto entidad) // empleado o cliente dto.
        {
            var persona = InstanciarPersona(entidad);

            return(persona.Insertar(entidad));
        }
Example #21
0
        //________________________________________________________________________________________________________
        // SavePersona
        public static void GrabarPersonas(ref PersonaDto persona)
        {
            //#region Insert New Persona
            //OracleCommand cmd = new OracleCommand();
            //try
            //{
            //    ------------------------------------------------------------------------------
            //     Consulta Text
            //    ------------------------------------------------------------------------------
            var querystring = "INSERT INTO PERSONA ( psnNombre) VALUES (:psnNombre)";
            var cmd         = new OracleCommand(querystring);

            cmd.Connection  = GetConn();
            cmd.CommandType = CommandType.Text;
            cmd.Parameters.Add(new OracleParameter(":psnNombre", persona.PsnNombre));

            //------------------------------------------------------------------------------
            // Consulta StoredProcedure
            //------------------------------------------------------------------------------
            //cmd.Connection = GetConn();
            //cmd.CommandType = CommandType.StoredProcedure;
            //cmd.CommandText = "PKG_PERSONA.InsertPersona";

            //cmd.Parameters.Add(CreateParameter("psn_tpdId", Persona.psn_tpdId));//NUMBER
            //cmd.Parameters.Add(CreateParameter("psnNroDcto", Persona.psnNroDcto));//NUMBER
            //cmd.Parameters.Add(CreateParameter("psnNombre", Persona.psnNombre, 45));//VARCHAR
            //cmd.Parameters.Add(CreateParameter("psnApellido", Persona.psnApellido, 45));//VARCHAR
            //cmd.Parameters.Add(CreateParameter("psnFechaNac", Persona.psnFechaNac, 12));//VARCHAR
            //cmd.Parameters.Add(CreateParameter("psnTelefono", Persona.psnTelefono, 20));//VARCHAR
            //cmd.Parameters.Add(CreateParameter("psnSexo", Persona.psnSexo, 1));//VARCHAR
            //cmd.Parameters.Add(CreateParameter("psn_domId", Persona.psn_domId));//NUMBER

            // Run the command.
            cmd.Connection.Open();
            cmd.ExecuteNonQuery();
            //}
            //catch(Exception ex)
            //{
            //    throw ex;
            //}
            //finally
            //{
            //    cmd.Connection.Close();
            //}
            //#endregion

            /*
             * if (Persona.IsNew)
             * {
             *  cmd = GetDbSprocCommand("usp_Persona_Insert");
             *  cmd.Parameters.Add(CreateOutputParameter("@psnId", OracleDbType.Int16));
             * }
             * else
             * {
             *  cmd = GetDbSprocCommand("usp_Persona_Update");
             *  cmd.Parameters.Add(CreateParameter("@psnId", Persona.psnId));
             * }
             *
             * cmd.Parameters.Add(CreateParameter("@psn_tpdId", Persona.psn_tpdId));//NUMBER
             * cmd.Parameters.Add(CreateParameter("@psnNroDcto", Persona.psnNroDcto));//NUMBER
             * cmd.Parameters.Add(CreateParameter("@psnNombre", Persona.psnNombre,45));//VARCHAR
             * cmd.Parameters.Add(CreateParameter("@psnApellido", Persona.psnApellido, 45));//VARCHAR
             * cmd.Parameters.Add(CreateParameter("@psnFechaNac", Persona.psnFechaNac, 12));//VARCHAR
             * cmd.Parameters.Add(CreateParameter("@psnTelefono", Persona.psnTelefono, 20));//VARCHAR
             * cmd.Parameters.Add(CreateParameter("@psn_sexId", Persona.psn_sexId, 1));//VARCHAR
             * cmd.Parameters.Add(CreateParameter("@psn_domId", Persona.psn_domId));//NUMBER
             *
             * // Run the command.
             * cmd.Connection.Open();
             * cmd.ExecuteNonQuery();
             * cmd.Connection.Close();
             * */
        }
Example #22
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;
            }
        }
Example #23
0
        } // end Create


        /// <summary>
        /// Función encargada de la actualziación de una entidad de tipo Persona.
        /// </summary>
        /// <remarks>
        /// Sin comentarios adicionales.
        /// </remarks>
        /// <param name="personaDto">
        /// Parámetro de tipo <see cref="PersonaDto"/> con los datos necesarios
        /// para el borrado de la entidad Personar.
        /// </param>
        /// <returns>
        /// Devuelve <b>true</b> si la actualización ha sido correcta y
        /// <b>false</b> en caso contrario.
        /// </returns>
        public bool Update( PersonaDto personaDto)
        {
            // opción 1
            // Instanciamos el servicio de aplicación de actualización mediante el contenedor de IoC.
            // var data = ManagerIoC.Container.Resolve<IUpdatePersona>();
            // Ejecutamos el servicio y obtenemos la respuesta.
            // bool response = data.Execute( personaDto);
            // Devolvemos la respuesta.
            // return response;

            // opción 2
            return this.service.Update(personaDto);
        } // end Update
Example #24
0
            public async Task <GetPlanAnualGeneralVM> Handle(GetPlanAnualGeneralQuery request, CancellationToken cancellationToken)
            {
                var vm          = new GetPlanAnualGeneralVM();
                var filtros     = request.filtros;
                var JerPosicion = await _context.TJerarquia.FindAsync(filtros.Gerencia);

                IList <string> JerarquiaPersonas = null;

                if (JerPosicion != null)
                {
                    JerarquiaPersonas = _context.TJerarquia.Join(_context.TJerarquiaPersona, jer => jer.CodPosicion, jper => jper.CodPosicion, (jer, jper) => new { jer = jer, jper = jper })
                                        .Where(tuple => (tuple.jer.PathJerarquia.Substring(0, JerPosicion.PathJerarquia.Length) == JerPosicion.PathJerarquia && tuple.jper.CodTipoPersona == 1))
                                        .Select(t => t.jper.CodPersona)
                                        .ToList();
                }
                vm.Pagina = request.filtros.Pagina;
                vm.Count  = JerarquiaPersonas.Count();

                if (filtros.CodReferencia == null || filtros.CodReferencia.Count == 0)
                {
                    vm.Codigos = _context.TPlanAnualVerConCri.Where(t =>
                                                                    (String.IsNullOrEmpty(filtros.Anio) || t.Anio.Equals(filtros.Anio)) &&
                                                                    (String.IsNullOrEmpty(filtros.Mes) || t.CodMes.Equals(filtros.Mes)) &&
                                                                    (JerarquiaPersonas.Contains(t.CodPersona))
                                                                    )
                                 .GroupBy(t => t.CodReferencia)
                                 .Select(t => t.Key).ToHashSet();
                    filtros.CodReferencia = vm.Codigos;
                }
                else
                {
                    vm.Codigos = filtros.CodReferencia;
                }

                if ((filtros.Pagina) > (vm.Count / filtros.PaginaTamanio) + 1)
                {
                    filtros.Pagina = 1;
                }

                var ListQuery = JerarquiaPersonas
                                .Skip(filtros.Pagina * filtros.PaginaTamanio - filtros.PaginaTamanio)
                                .Take(filtros.PaginaTamanio)
                                .ToHashSet();

                foreach (var persona in ListQuery)
                {
                    var codigos = _context.TPlanAnualVerConCri
                                  .Where(t =>
                                         (filtros.CodReferencia.Contains(t.CodReferencia)) &&
                                         (String.IsNullOrEmpty(filtros.Anio) || t.Anio.Equals(filtros.Anio)) &&
                                         (String.IsNullOrEmpty(filtros.Mes) || t.CodMes.Equals(filtros.Mes)) &&
                                         (t.CodPersona.Equals(persona))
                                         )
                                  .Select(t => new PlanReferenciaDto(t.CodReferencia, t.Valor)).ToList();
                    var nuevo       = new PersonaDto(persona, codigos);
                    var personaFull = _context.TPersona.Find(persona);
                    nuevo.Nombres = personaFull.ApellidoPaterno + " " + personaFull.ApellidoMaterno + "," + personaFull.Nombres;
                    vm.list.Add(nuevo);
                }

                return(vm);
            }
Example #25
0
        } // end PersonaService Constructor

        #endregion

        #region Methods
        /// <summary>
        /// Función encargada de la creación de una entidad de tipo Persona.
        /// </summary>
        /// <remarks>
        /// Sin comentarios adicionales.
        /// </remarks>
        /// <param name="personaDto">
        /// Parámetro de tipo <see cref="PersonaDto"/> con los datos necesarios
        /// para la creación de la entidad Persona.
        /// </param>
        /// <return>
        /// Devuelve el identificador único de la entidad creada.
        /// </return>
        public int Create( PersonaDto personaDto)
        {
            // opción 1
            // Instanciamos el servicio de aplicación de creación mediante el contenedor de IoC.
            // var data = ManagerIoC.Container.Resolve<ICreatePersona>();
            // Ejecutamos el servicio y obtenemos la respuesta.
            // int identifier = data.Execute( personaDto);
            // Devolvemos la respuesta.
            // return identifier;

            //opción 2
            return this.service.Create(personaDto);

        } // end Create
        public async Task <bool> Update(PersonaDto entidad)
        {
            var persona = InstanciarPersona(entidad);

            return(await persona.Update(entidad));
        }
 public async Task <IActionResult> AddPerson(PersonaDto personaDto) => Ok(await _personaService.AddPerson(personaDto));
Example #28
0
        public async Task <ATTI> SalvaAtto(ATTI attoInDb, AttiFormUpdateModel attoModel, PersonaDto currentUser)
        {
            try
            {
                attoInDb.UIDPersonaModifica = currentUser.UID_persona;
                attoInDb.DataModifica       = DateTime.Now;
                Mapper.Map(attoModel, attoInDb);
                await _unitOfWork.CompleteAsync();

                if (attoModel.DocAtto_Stream != null)
                {
                    var path = ByteArrayToFile(attoModel.DocAtto_Stream, DocTypeEnum.ATTO);
                    attoInDb.Path_Testo_Atto = path;
                    await _unitOfWork.CompleteAsync();
                }

                return(attoInDb);
            }
            catch (Exception e)
            {
                Log.Error("Salva Atto", e);
                throw e;
            }
        }
Example #29
0
        private async Task SalvaDatiInCookies(PersonaDto persona, string jwt, string username)
        {
            string jwt1 = string.Empty, jwt2 = string.Empty, jwt3 = string.Empty;

            SliceBy3(jwt, ref jwt1, ref jwt2, ref jwt3);

            var    persona_json = JsonConvert.SerializeObject(persona);
            string p1 = string.Empty, p2 = string.Empty, p3 = string.Empty;

            SliceBy3(persona_json, ref p1, ref p2, ref p3);

            #region USER DATA

            var authTicket1 = new FormsAuthenticationTicket
                              (
                1, $"{username}1", DateTime.Now, DateTime.Now.AddMinutes(30), true, p1
                              );
            var authTicket2 = new FormsAuthenticationTicket
                              (
                1, $"{username}2", DateTime.Now, DateTime.Now.AddMinutes(30), true, p2
                              );
            var authTicket3 = new FormsAuthenticationTicket
                              (
                1, $"{username}3", DateTime.Now, DateTime.Now.AddMinutes(30), true, p3
                              );

            var enTicket1 = FormsAuthentication.Encrypt(authTicket1);
            var faCookie1 = new HttpCookie("PRCookies1", enTicket1)
            {
                HttpOnly = true
            };
            Response.Cookies.Add(faCookie1);
            var enTicket2 = FormsAuthentication.Encrypt(authTicket2);
            var faCookie2 = new HttpCookie("PRCookies2", enTicket2)
            {
                HttpOnly = true
            };
            Response.Cookies.Add(faCookie2);
            var enTicket3 = FormsAuthentication.Encrypt(authTicket3);
            var faCookie3 = new HttpCookie("PRCookies3", enTicket3)
            {
                HttpOnly = true
            };
            Response.Cookies.Add(faCookie3);

            #endregion

            #region JWT DATA

            var securetyTicket1 = new FormsAuthenticationTicket
                                  (
                1, "token_jwt1", DateTime.Now, DateTime.Now.AddMinutes(30), true, jwt1
                                  );
            var securetyTicket2 = new FormsAuthenticationTicket
                                  (
                1, "token_jwt2", DateTime.Now, DateTime.Now.AddMinutes(30), true, jwt2
                                  );
            var securetyTicket3 = new FormsAuthenticationTicket
                                  (
                1, "token_jwt3", DateTime.Now, DateTime.Now.AddMinutes(30), true, jwt3
                                  );

            var sTicket1 = FormsAuthentication.Encrypt(securetyTicket1);
            var sCookie1 = new HttpCookie("SCookies1", sTicket1)
            {
                HttpOnly = true
            };
            Response.Cookies.Add(sCookie1);
            var sTicket2 = FormsAuthentication.Encrypt(securetyTicket2);
            var sCookie2 = new HttpCookie("SCookies2", sTicket2)
            {
                HttpOnly = true
            };
            Response.Cookies.Add(sCookie2);
            var sTicket3 = FormsAuthentication.Encrypt(securetyTicket3);
            var sCookie3 = new HttpCookie("SCookies3", sTicket3)
            {
                HttpOnly = true
            };
            Response.Cookies.Add(sCookie3);

            #endregion

            BaseGateway.access_token = jwt;
            if (persona.CurrentRole == RuoliIntEnum.Amministratore_PEM)
            {
                var gruppi = await ApiGateway.GetGruppi();

                var groupsTicket = new FormsAuthenticationTicket
                                   (
                    1, "gruppi", DateTime.Now, DateTime.Now.AddMinutes(30), true, JsonConvert.SerializeObject(gruppi)
                                   );
                var gTicket = FormsAuthentication.Encrypt(groupsTicket);
                var gCookie = new HttpCookie("GCookies", gTicket)
                {
                    HttpOnly = true
                };
                Response.Cookies.Add(gCookie);
            }

            FormsAuthentication.SetAuthCookie(username, true);
        }
Example #30
0
 public virtual long Insertar(PersonaDto entidad)
 {
     return(0);
 }
Example #31
0
 public IHttpActionResult Post(PersonaDto persona)
 {
     operationsData.AddPersonas(persona);
     return(Ok(persona));
 }
Example #32
0
 //________________________________________________________________________________________________________
 public static void SavePersona(PersonaDto Persona)
 {
     PersonaDb.GrabarPersonas(ref Persona);
 }
Example #33
0
        public void Add(PersonaDto entidad)
        {
            var persona = InstanciaPersona(entidad);

            persona.Add(entidad);
        }
Example #34
0
 public void AgregarPersona(PersonaDto request)
 {
     personas.Add(request);
 }
Example #35
0
        public async Task <HttpResponseMessage> EsportaGrigliaWord(Guid id, OrdinamentoEnum ordine, PersonaDto persona)
        {
            try
            {
                var _pathTemp = AppSettingsConfiguration.CartellaTemp;
                if (!Directory.Exists(_pathTemp))
                {
                    Directory.CreateDirectory(_pathTemp);
                }

                var nameFileDOC      = $"EstrazioneEM_{DateTime.Now:ddMMyyyy_hhmmss}.docx";
                var FilePathComplete = Path.Combine(_pathTemp, nameFileDOC);

                var atto = await _unitOfWork.Atti.Get(id);

                using (var fs = new FileStream(FilePathComplete, FileMode.Create, FileAccess.Write))
                {
                    var doc  = new XWPFDocument();
                    var para = doc.CreateParagraph();
                    para.Alignment = ParagraphAlignment.CENTER;
                    var r0 = para.CreateRun();
                    r0.IsBold = true;
                    r0.SetText($"{atto.TIPI_ATTO.Tipo_Atto} {atto.NAtto}");

                    var table = doc.CreateTable(1, 7);

                    #region HEADERS

                    var c0          = table.GetRow(0).GetCell(0);
                    var headerCell0 = c0.AddParagraph();
                    headerCell0.Alignment = ParagraphAlignment.CENTER;
                    var headerCell0_Run = headerCell0.CreateRun();
                    headerCell0_Run.IsBold = true;
                    headerCell0_Run.SetText("Ordine di Votazione");

                    var c1          = table.GetRow(0).GetCell(1);
                    var headerCell1 = c1.AddParagraph();
                    headerCell1.Alignment = ParagraphAlignment.CENTER;
                    var headerCell1_Run = headerCell1.CreateRun();
                    headerCell1_Run.IsBold = true;
                    headerCell1_Run.SetText("N.EM/SUBEM");

                    var c2          = table.GetRow(0).GetCell(2);
                    var headerCell2 = c2.AddParagraph();
                    headerCell2.Alignment = ParagraphAlignment.CENTER;
                    var headerCell2_Run = headerCell2.CreateRun();
                    headerCell2_Run.IsBold = true;
                    headerCell2_Run.SetText("Testo EM/SUBEM");

                    var c3          = table.GetRow(0).GetCell(3);
                    var headerCell3 = c3.AddParagraph();
                    headerCell3.Alignment = ParagraphAlignment.CENTER;
                    var headerCell3_Run = headerCell3.CreateRun();
                    headerCell3_Run.IsBold = true;
                    headerCell3_Run.SetText("Relazione Illustrativa");

                    var c4          = table.GetRow(0).GetCell(4);
                    var headerCell4 = c4.AddParagraph();
                    headerCell4.Alignment = ParagraphAlignment.CENTER;
                    var headerCell4_Run = headerCell4.CreateRun();
                    headerCell4_Run.IsBold = true;
                    headerCell4_Run.SetText("Proponente");

                    var c5          = table.GetRow(0).GetCell(5);
                    var headerCell5 = c5.AddParagraph();
                    headerCell5.Alignment = ParagraphAlignment.CENTER;
                    var headerCell5_Run = headerCell5.CreateRun();
                    headerCell5_Run.IsBold = true;
                    headerCell5_Run.SetText("Firme prima del deposito");

                    var c6          = table.GetRow(0).GetCell(6);
                    var headerCell6 = c6.AddParagraph();
                    headerCell6.Alignment = ParagraphAlignment.CENTER;
                    var headerCell6_Run = headerCell6.CreateRun();
                    headerCell6_Run.IsBold = true;
                    headerCell6_Run.SetText("Stato");

                    #endregion

                    var emList = await _logicEm.GetEmendamenti(new BaseRequest <EmendamentiDto>
                    {
                        id     = id,
                        ordine = ordine,
                        page   = 1,
                        size   = 50
                    }, persona,
                                                               (int)ClientModeEnum.GRUPPI);

                    foreach (var em in emList)
                    {
                        var row = table.CreateRow();

                        var c0_em          = row.GetCell(0);
                        var headerCell0_em = c0_em.AddParagraph();
                        headerCell0_em.Alignment = ParagraphAlignment.CENTER;
                        var headerCell0_Run_em = headerCell0_em.CreateRun();
                        headerCell0_Run_em.SetText(em.OrdineVotazione.ToString());

                        var c1_em          = row.GetCell(1);
                        var headerCell1_em = c1_em.AddParagraph();
                        headerCell1_em.Alignment = ParagraphAlignment.CENTER;
                        var headerCell1_Run_em = headerCell1_em.CreateRun();
                        headerCell1_Run_em.SetText(GetNomeEM(em,
                                                             em.Rif_UIDEM.HasValue
                                ? Mapper.Map <EM, EmendamentiDto>(await _logicEm.GetEM(em.Rif_UIDEM.Value))
                                : null));

                        var c2_em          = row.GetCell(2);
                        var headerCell2_em = c2_em.AddParagraph();
                        headerCell2_em.Alignment = ParagraphAlignment.CENTER;
                        var headerCell2_Run_em = headerCell2_em.CreateRun();
                        headerCell2_Run_em.SetText(em.TestoEM_originale);

                        var c3_em          = row.GetCell(3);
                        var headerCell3_em = c3_em.AddParagraph();
                        headerCell3_em.Alignment = ParagraphAlignment.CENTER;
                        var headerCell3_Run_em = headerCell3_em.CreateRun();
                        headerCell3_Run_em.SetText(string.IsNullOrEmpty(em.TestoREL_originale)
                            ? ""
                            : em.TestoREL_originale);

                        var proponente =
                            await _logicPersone.GetPersona(em.UIDPersonaProponente.Value,
                                                           em.id_gruppo >= AppSettingsConfiguration.GIUNTA_REGIONALE_ID);

                        var c4_em          = row.GetCell(4);
                        var headerCell4_em = c4_em.AddParagraph();
                        headerCell4_em.Alignment = ParagraphAlignment.CENTER;
                        var headerCell4_Run_em = headerCell4_em.CreateRun();
                        headerCell4_Run_em.SetText(proponente.DisplayName);

                        var firme = await _logicFirme.GetFirme(Mapper.Map <EmendamentiDto, EM>(em), FirmeTipoEnum.TUTTE);

                        var firmeDto = firme.Select(Mapper.Map <FIRME, FirmeDto>).ToList();

                        var firmeAnte = firmeDto.Where(f =>
                                                       f.Timestamp < Convert.ToDateTime(Decrypt(em.DataDeposito)));

                        var c5_em          = row.GetCell(5);
                        var headerCell5_em = c5_em.AddParagraph();
                        headerCell5_em.Alignment = ParagraphAlignment.CENTER;
                        var headerCell5_Run_em = headerCell5_em.CreateRun();
                        headerCell5_Run_em.SetText(GetFirmatariEM_OPENDATA(firmeAnte,
                                                                           persona.CurrentRole));

                        var c6_em          = row.GetCell(6);
                        var headerCell6_em = c6_em.AddParagraph();
                        headerCell6_em.Alignment = ParagraphAlignment.CENTER;
                        var headerCell6_Run_em = headerCell6_em.CreateRun();
                        headerCell6_Run_em.SetText(em.STATI_EM.Stato);
                    }

                    doc.Write(fs);
                }

                var stream = new MemoryStream();
                using (var fileStream = new FileStream(FilePathComplete, FileMode.Open))
                {
                    await fileStream.CopyToAsync(stream);
                }

                stream.Position = 0;
                var result = new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new ByteArrayContent(stream.GetBuffer())
                };
                result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
                {
                    FileName = nameFileDOC
                };
                result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");

                return(result);
            }
            catch (Exception e)
            {
                Log.Error("Logic - EsportaGrigliaXLS", e);
                throw e;
            }
        }