public async Task <IHttpActionResult> EsportaGrigliaExcel(Guid id, OrdinamentoEnum ordine, ClientModeEnum mode, bool is_report = false) { try { var session = await GetSession(); if (session._currentRole != RuoliIntEnum.Amministratore_PEM && session._currentRole != RuoliIntEnum.Segreteria_Assemblea) { if (is_report) { return(BadRequest("Operazione non eseguibile per il ruolo assegnato")); } } var persona = await _logicPersone.GetPersona(session); if (is_report) { return(ResponseMessage(await _logicEsporta.EsportaGrigliaReportExcel(id, ordine, mode, persona))); } var file = await _logicEsporta.EsportaGrigliaExcel(id, ordine, mode, persona); return(ResponseMessage(file)); } catch (Exception e) { Log.Error("EsportaGrigliaXLS", e); return(ErrorHandler(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 RimuoviFascicoliObsoleti(Guid attoUId, OrdinamentoEnum ordinamento) { var oldStampe = await PRContext .STAMPE .Where(s => s.UIDAtto == attoUId && s.Da == 0 && s.A == 0 && s.Ordine == (int)ordinamento) .ToListAsync(); PRContext.STAMPE.RemoveRange(oldStampe); }
/// <summary> /// Ritorna la query emednamenti da stampare /// </summary> /// <param name="attoUId"></param> /// <param name="persona"></param> /// <param name="ordine"></param> /// <param name="filtro"></param> /// <returns></returns> public string GetAll_Query(Guid attoUId, PersonaDto persona, OrdinamentoEnum ordine, Filter <EM> filtro = null) { var query = PRContext.EM .Where(em => em.UIDAtto == attoUId && !em.Eliminato && (em.IDStato != (int)StatiEnum.Bozza || em.IDStato == (int)StatiEnum.Bozza && (em.UIDPersonaCreazione == persona.UID_persona || em.UIDPersonaProponente == persona.UID_persona))); if (persona.CurrentRole != RuoliIntEnum.Amministratore_PEM && persona.CurrentRole != RuoliIntEnum.Segreteria_Assemblea) { query = query .Where(em => em.id_gruppo == persona.Gruppo.id_gruppo); } else if (ordine == OrdinamentoEnum.Default) { ordine = OrdinamentoEnum.Presentazione; } if (persona.CurrentRole == RuoliIntEnum.Segreteria_Assemblea) { query = query.Where(em => !string.IsNullOrEmpty(em.DataDeposito) || em.idRuoloCreazione == (int)RuoliIntEnum.Segreteria_Assemblea); } filtro?.BuildExpression(ref query); switch (ordine) { case OrdinamentoEnum.Presentazione: query = query.OrderBy(em => em.SubProgressivo).ThenBy(em => em.Timestamp); break; case OrdinamentoEnum.Votazione: query = query.OrderBy(em => em.OrdineVotazione); break; case OrdinamentoEnum.Default: query = query.OrderBy(em => em.IDStato) .ThenBy(em => em.Progressivo) .ThenBy(em => em.Timestamp); break; default: throw new ArgumentOutOfRangeException(nameof(ordine), ordine, null); } var sql = query.ToTraceQuery(); return(sql); }
public async Task <IEnumerable <EM> > GetAll_RichiestaPropriaFirma(Guid id, PersonaDto persona, OrdinamentoEnum ordine, int page, int size, int mode) { var emendamenti_da_firmare = new List <Guid>(); var notifiche = await PRContext .NOTIFICHE .Where(n => n.UIDAtto == id && !n.Chiuso && n.EM.IDStato <= (int)StatiEnum.Depositato) .Select(n => n.UIDNotifica) .ToListAsync(); if (notifiche.Any()) { var my_em_notifiche = await PRContext .NOTIFICHE_DESTINATARI .Include(n => n.NOTIFICHE) .Where(n => n.UIDPersona == persona.UID_persona && !n.Chiuso && notifiche.Contains(n.UIDNotifica)) .ToListAsync(); foreach (var emUid in my_em_notifiche.Select(n => n.NOTIFICHE.UIDEM)) { var check_firmato = await PRContext.FIRME.AnyAsync(f => f.UIDEM == emUid && f.UID_persona == persona.UID_persona && string.IsNullOrEmpty(f.Data_ritirofirma)); if (!check_firmato) { emendamenti_da_firmare.Add(emUid); } } } var my_em_proponente = await PRContext .EM .Where(em => em.UIDPersonaProponente == persona.UID_persona && !em.UIDPersonaPrimaFirma.HasValue && em.UIDAtto == id && em.IDStato <= (int)StatiEnum.Bozza && !em.Eliminato) .Select(em => em.UIDEM) .ToListAsync(); foreach (var emUid in my_em_proponente) { emendamenti_da_firmare.Add(emUid); } var result = await GetEmendamentiByArray(emendamenti_da_firmare); return(result .Skip((page - 1) * size) .Take(size)); }
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; } }
public async Task <ActionResult> EsportaDOC(Guid id, OrdinamentoEnum ordine, ClientModeEnum mode) { try { var apiGateway = new ApiGateway(_Token); var file = await apiGateway.Esporta.EsportaWORD(id, ordine, mode); return(Json(Convert.ToBase64String(file.Content), JsonRequestBehavior.AllowGet)); } catch (Exception e) { Console.WriteLine(e); return(Json(new ErrorResponse(e.Message), JsonRequestBehavior.AllowGet)); } }
public async Task <ActionResult> EsportaDOC(Guid id, OrdinamentoEnum ordine) { try { var file = await ApiGateway.EsportaWORD(id, ordine); return(File(file.Content, "application/doc", file.FileName)); } catch (Exception e) { Console.WriteLine(e); return(Json(new ErrorResponse { message = e.Message }, JsonRequestBehavior.AllowGet)); } }
public async Task <ActionResult> EsportaXLS(Guid id, OrdinamentoEnum ordine = OrdinamentoEnum.Default, ClientModeEnum mode = ClientModeEnum.GRUPPI, bool is_report = false) { try { var apiGateway = new ApiGateway(_Token); var file = await apiGateway.Esporta.EsportaXLS(id, ordine, mode, is_report); return(Json(Convert.ToBase64String(file.Content), JsonRequestBehavior.AllowGet)); } catch (Exception e) { Log.Error("EsportaXLS", e); return(Json(new ErrorResponse(e.Message), JsonRequestBehavior.AllowGet)); } }
public async Task <ActionResult> RiepilogoEmendamenti(Guid id, ClientModeEnum mode = ClientModeEnum.GRUPPI, OrdinamentoEnum ordine = OrdinamentoEnum.Presentazione, ViewModeEnum view = ViewModeEnum.GRID, int page = 1, int size = 50) { var apiGateway = new ApiGateway(_Token); EmendamentiViewModel model; var view_require_my_sign = Convert.ToBoolean(Request.QueryString["require_my_sign"]); if (Session["RicaricaFiltri"] is bool) { if (Convert.ToBoolean(Session["RicaricaFiltri"])) { Session["RicaricaFiltri"] = false; //reset sessione if (Session["RiepilogoEmendamenti"] is EmendamentiViewModel old_model) { try { if (HttpContext.User.IsInRole(RuoliExt.Amministratore_PEM) || HttpContext.User.IsInRole(RuoliExt.Segreteria_Assemblea)) { return(View("RiepilogoEM_Admin", old_model)); } return(View("RiepilogoEM", old_model)); } catch (Exception e) { Session["RiepilogoEmendamenti"] = null; } } } } SetCache(page, size, ordine, view); var composeModel = await ComposeModel(id, mode, ordine, view, page, size, view_require_my_sign); Session["RiepilogoEmendamenti"] = composeModel; if (HttpContext.User.IsInRole(RuoliExt.Amministratore_PEM) || HttpContext.User.IsInRole(RuoliExt.Segreteria_Assemblea)) { return(View("RiepilogoEM_Admin", composeModel)); } return(View("RiepilogoEM", composeModel)); }
public async Task <ActionResult> EsportaXLS(Guid id, OrdinamentoEnum ordine) { try { var file = await ApiGateway.EsportaXLS(id, ordine); return(File(file.Content, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", file.FileName)); } catch (Exception e) { Console.WriteLine(e); return(Json(new ErrorResponse { message = e.Message }, JsonRequestBehavior.AllowGet)); } }
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; } }
public async Task <IHttpActionResult> EsportaGrigliaWord(Guid id, OrdinamentoEnum ordine, ClientModeEnum mode) { try { var session = await GetSession(); var persona = await _logicPersone.GetPersona(session); var response = ResponseMessage(await _logicEsporta.HTMLtoWORD(id, ordine, mode, persona)); return(response); } catch (Exception e) { Log.Error("EsportaGrigliaDOC", e); return(ErrorHandler(e)); } }
private void SetCache(int page, int size, OrdinamentoEnum ordine, ViewModeEnum view) { HttpContext.Cache.Insert( "OrdinamentoEM", (int)ordine, null, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, (key, value, reason) => { Console.WriteLine("Cache removed"); } ); HttpContext.Cache.Insert( "ViewMode", view, null, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, (key, value, reason) => { Console.WriteLine("Cache removed"); } ); HttpContext.Cache.Insert( "Page", page, null, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, (key, value, reason) => { Console.WriteLine("Cache removed"); } ); HttpContext.Cache.Insert( "Size", size, null, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, (key, value, reason) => { Console.WriteLine("Cache removed"); } ); }
public static async Task <FileResponse> EsportaWORD(Guid attoUId, OrdinamentoEnum ordine, ClientModeEnum mode) { try { var requestUrl = $"{apiUrl}/emendamenti/esporta-griglia-doc?id={attoUId}&ordine={ordine}&mode={mode}"; var lst = await GetFile(requestUrl); return(lst); } catch (UnauthorizedAccessException ex) { Log.Error("EsportaWORD", ex); throw ex; } catch (Exception ex) { Log.Error("EsportaWORD", ex); throw ex; } }
public async Task <ActionResult> RiepilogoEmendamenti(Guid id, ClientModeEnum mode, OrdinamentoEnum ordine = OrdinamentoEnum.Presentazione, int page = 1, int size = 50) { HttpContext.Cache.Insert( "OrdinamentoEM", (int)ordine, null, DateTime.Now.AddMinutes(2), Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, (key, value, reason) => { Console.WriteLine("Cache removed"); } ); var model = await ApiGateway.GetEmendamenti(id, mode, ordine, page, size); if (HttpContext.User.IsInRole(RuoliEnum.Amministratore_PEM) || HttpContext.User.IsInRole(RuoliEnum.Segreteria_Assemblea)) { //foreach (var emendamentiDto in model.Data.Results) // emendamentiDto.BodyEM = await ApiGateway.GetBodyEM(emendamentiDto.UIDEM, TemplateTypeEnum.PDF); return(View("RiepilogoEM_Admin", model)); } //foreach (var emendamentiDto in model.Data.Results) // if (emendamentiDto.STATI_EM.IDStato <= (int) StatiEnum.Depositato) // { // if (emendamentiDto.ConteggioFirme > 0) // emendamentiDto.Firmatari = await Utility.GetFirmatariEM( // await ApiGateway.GetFirmatari(emendamentiDto.UIDEM, FirmeTipoEnum.TUTTE), // CurrentUser.UID_persona, FirmeTipoEnum.TUTTE, true); // emendamentiDto.Destinatari = // await Utility.GetDestinatariNotifica(await ApiGateway.GetInvitati(emendamentiDto.UIDEM)); // } return(View("RiepilogoEM", model)); }
public async Task <FileResponse> EsportaXLS(Guid attoUId, OrdinamentoEnum ordine, ClientModeEnum mode, bool is_report = false) { try { var requestUrl = $"{apiUrl}/emendamenti/esporta-griglia-xls?id={attoUId}&ordine={ordine}&mode={mode}&is_report={is_report}"; var lst = await GetFile(requestUrl, _token); return(lst); } catch (UnauthorizedAccessException ex) { Log.Error("EsportaXLS", ex); throw ex; } catch (Exception ex) { Log.Error("EsportaXLS", ex); throw ex; } }
public async Task <EmendamentiViewModel> Get_RichiestaPropriaFirma(Guid attoUId, ClientModeEnum mode, OrdinamentoEnum ordine, int page, int size) { try { var requestUrl = $"{apiUrl}/emendamenti/view-richiesta-propria-firma"; var param = new Dictionary <string, object> { { "CLIENT_MODE", (int)mode } }; var model = new BaseRequest <AttiDto> { id = attoUId, page = page, size = size, ordine = ordine, param = param }; var body = JsonConvert.SerializeObject(model); var lst = JsonConvert.DeserializeObject <EmendamentiViewModel>(await Post(requestUrl, body, _token)); return(lst); } catch (UnauthorizedAccessException ex) { Log.Error("GetEmendamenti_RichiestaPropriaFirma", ex); throw ex; } catch (Exception ex) { Log.Error("GetEmendamenti_RichiestaPropriaFirma", ex); throw ex; } }
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; } }
/// <summary> /// Ritorna la query emednamenti da stampare /// </summary> /// <param name="attoUId"></param> /// <param name="persona"></param> /// <param name="ordine"></param> /// <param name="filtro"></param> /// <returns></returns> public string GetAll_Query(Guid attoUId, PersonaDto persona, OrdinamentoEnum ordine, Filter <EM> filtro = null, int CLIENT_MODE = (int)ClientModeEnum.GRUPPI) { var query = PRContext .EM .Where(em => em.UIDAtto == attoUId && !em.Eliminato); if (CLIENT_MODE == (int)ClientModeEnum.TRATTAZIONE) { query = query.Where(em => em.IDStato >= (int)StatiEnum.Depositato && !string.IsNullOrEmpty(em.DataDeposito)); } else { query = query.Where(em => em.IDStato != (int)StatiEnum.Bozza_Riservata || em.IDStato == (int)StatiEnum.Bozza_Riservata && (em.UIDPersonaCreazione == persona.UID_persona || em.UIDPersonaProponente == persona.UID_persona)); if (persona.IsGiunta()) { query = query .Where(em => em.id_gruppo >= AppSettingsConfiguration.GIUNTA_REGIONALE_ID); } else if (persona.CurrentRole != RuoliIntEnum.Amministratore_PEM && persona.CurrentRole != RuoliIntEnum.Segreteria_Assemblea && persona.CurrentRole != RuoliIntEnum.Presidente_Regione) { query = query .Where(em => em.id_gruppo == persona.Gruppo.id_gruppo); } if (persona.CurrentRole == RuoliIntEnum.Segreteria_Assemblea) { query = query.Where(em => !string.IsNullOrEmpty(em.DataDeposito) || em.idRuoloCreazione == (int)RuoliIntEnum.Segreteria_Assemblea); } } filtro?.BuildExpression(ref query); if (CLIENT_MODE == (int)ClientModeEnum.TRATTAZIONE || (persona.CurrentRole == RuoliIntEnum.Amministratore_PEM || persona.CurrentRole == RuoliIntEnum.Segreteria_Assemblea || persona.CurrentRole == RuoliIntEnum.Presidente_Regione)) { switch (ordine) { case OrdinamentoEnum.Default: case OrdinamentoEnum.Presentazione: query = query.OrderBy(em => em.Rif_UIDEM) .ThenBy(em => em.OrdinePresentazione) .ThenBy(em => em.IDStato); break; case OrdinamentoEnum.Votazione: query = query.OrderBy(em => em.OrdineVotazione) .ThenBy(em => em.Rif_UIDEM) .ThenBy(em => em.IDStato); break; default: query = query.OrderBy(em => em.IDStato).ThenBy(em => em.DataCreazione); break; } } else { query = query.OrderBy(em => em.IDStato).ThenBy(em => em.Timestamp).ThenBy(em => em.Progressivo).ThenBy(em => em.SubProgressivo); } var sql = query.ToTraceQuery(); return(sql); }
/// <summary> /// Riepilogo emendamenti /// </summary> /// <param name="attoUId"></param> /// <param name="persona"></param> /// <param name="ordine"></param> /// <param name="page"></param> /// <param name="size"></param> /// <param name="CLIENT_MODE"></param> /// <param name="filtro"></param> /// <param name="firmatari"></param> /// <param name="requireMySign"></param> /// <returns></returns> public async Task <IEnumerable <Guid> > GetAll(Guid attoUId, PersonaDto persona, OrdinamentoEnum ordine, int?page, int?size, int CLIENT_MODE, Filter <EM> filtro = null, List <Guid> firmatari = null) { var query = PRContext .EM .Where(em => em.UIDAtto == attoUId && !em.Eliminato); if (CLIENT_MODE == (int)ClientModeEnum.TRATTAZIONE) { var atto = await PRContext .ATTI .SingleAsync(a => a.UIDAtto == attoUId); if (atto.OrdinePresentazione == false && ordine == OrdinamentoEnum.Presentazione) { return(new List <Guid>()); } if (atto.OrdineVotazione == false && ordine == OrdinamentoEnum.Votazione) { return(new List <Guid>()); } query = query.Where(em => em.IDStato >= (int)StatiEnum.Depositato && !string.IsNullOrEmpty(em.DataDeposito)); } else { query = query.Where(em => em.IDStato != (int)StatiEnum.Bozza_Riservata || em.IDStato == (int)StatiEnum.Bozza_Riservata && (em.UIDPersonaCreazione == persona.UID_persona || em.UIDPersonaProponente == persona.UID_persona)); if (persona.IsGiunta()) { query = query .Where(em => em.id_gruppo >= AppSettingsConfiguration.GIUNTA_REGIONALE_ID); } else if (persona.CurrentRole != RuoliIntEnum.Amministratore_PEM && persona.CurrentRole != RuoliIntEnum.Segreteria_Assemblea && persona.CurrentRole != RuoliIntEnum.Presidente_Regione) { query = query .Where(em => em.id_gruppo == persona.Gruppo.id_gruppo); } if (persona.CurrentRole == RuoliIntEnum.Segreteria_Assemblea) { query = query.Where(em => !string.IsNullOrEmpty(em.DataDeposito) || em.idRuoloCreazione == (int)RuoliIntEnum.Segreteria_Assemblea); } } filtro?.BuildExpression(ref query); if (firmatari != null) { if (firmatari.Count > 0) { //Avvio ricerca firmatari var firme = await PRContext .FIRME .Where(f => firmatari.Contains(f.UID_persona)) .Select(f => f.UIDEM) .ToListAsync(); query = query .Where(em => firme.Contains(em.UIDEM)); } } if (CLIENT_MODE == (int)ClientModeEnum.TRATTAZIONE || (persona.CurrentRole == RuoliIntEnum.Amministratore_PEM || persona.CurrentRole == RuoliIntEnum.Segreteria_Assemblea || persona.CurrentRole == RuoliIntEnum.Presidente_Regione)) { switch (ordine) { case OrdinamentoEnum.Presentazione: query = query.OrderBy(em => em.OrdinePresentazione); break; case OrdinamentoEnum.Votazione: query = query.OrderBy(em => em.OrdineVotazione); break; default: query = query.OrderBy(em => em.IDStato).ThenByDescending(em => em.DataCreazione); break; } } else { query = query.OrderBy(em => em.IDStato).ThenBy(em => em.Timestamp).ThenBy(em => em.Progressivo).ThenBy(em => em.SubProgressivo); } return(await query .Select(em => em.UIDEM) .Skip((page.Value - 1) * size.Value) .Take(size.Value) .ToListAsync()); }
private async Task <EmendamentiViewModel> ComposeModel(Guid id, ClientModeEnum mode, OrdinamentoEnum ordine, ViewModeEnum view, int page, int size, bool view_require_my_sign) { try { var apiGateway = new ApiGateway(_Token); EmendamentiViewModel model; if (view_require_my_sign == false) { model = await apiGateway.Emendamento.Get(id, mode, ordine, page, size); } else { model = await apiGateway.Emendamento.Get_RichiestaPropriaFirma(id, mode, ordine, page, size); } model.ViewMode = view; if (view == ViewModeEnum.PREVIEW) { foreach (var emendamentiDto in model.Data.Results) { emendamentiDto.BodyEM = await apiGateway.Emendamento.GetBody(emendamentiDto.UIDEM, TemplateTypeEnum.HTML); } } if (HttpContext.User.IsInRole(RuoliExt.Amministratore_PEM) || HttpContext.User.IsInRole(RuoliExt.Segreteria_Assemblea)) { return(model); } if (mode == ClientModeEnum.GRUPPI) { foreach (var emendamentiDto in model.Data.Results) { if (emendamentiDto.IDStato <= (int)StatiEnum.Depositato) { if (emendamentiDto.ConteggioFirme > 0) { emendamentiDto.Firmatari = await Utility.GetFirmatariEM( await apiGateway.Emendamento.GetFirmatari(emendamentiDto.UIDEM, FirmeTipoEnum.TUTTE), _CurrentUser.UID_persona, FirmeTipoEnum.TUTTE, _Token, true); } emendamentiDto.Destinatari = await Utility.GetDestinatariNotifica( await apiGateway.Emendamento.GetInvitati(emendamentiDto.UIDEM), _Token); } } } return(model); } catch (Exception e) { Log.Error("ComposeModel", e); throw; } }
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; } }
/// <summary> /// Riepilogo emendamenti /// </summary> /// <param name="attoUId"></param> /// <param name="persona"></param> /// <param name="ordine"></param> /// <param name="page"></param> /// <param name="size"></param> /// <returns></returns> public async Task <IEnumerable <EM> > GetAll(Guid attoUId, PersonaDto persona, OrdinamentoEnum ordine, int?page, int?size, int CLIENT_MODE, Filter <EM> filtro = null) { var query = PRContext.EM .Where(em => em.UIDAtto == attoUId && !em.Eliminato); if (CLIENT_MODE == (int)ClientModeEnum.TRATTAZIONE) { query = query.Where(em => em.IDStato >= (int)StatiEnum.Depositato); } else { query = query.Where(em => em.IDStato != (int)StatiEnum.Bozza_Riservata || em.IDStato == (int)StatiEnum.Bozza_Riservata && (em.UIDPersonaCreazione == persona.UID_persona || em.UIDPersonaProponente == persona.UID_persona)); if (persona.CurrentRole == RuoliIntEnum.Amministratore_Giunta) { query = query .Where(em => em.id_gruppo >= 10000); } else if (persona.CurrentRole != RuoliIntEnum.Amministratore_PEM && persona.CurrentRole != RuoliIntEnum.Segreteria_Assemblea) { query = query .Where(em => em.id_gruppo == persona.Gruppo.id_gruppo); } if (persona.CurrentRole == RuoliIntEnum.Segreteria_Assemblea) { query = query.Where(em => !string.IsNullOrEmpty(em.DataDeposito) || em.idRuoloCreazione == (int)RuoliIntEnum.Segreteria_Assemblea); } } filtro?.BuildExpression(ref query); switch (ordine) { case OrdinamentoEnum.Presentazione: query = query.OrderBy(em => em.SubProgressivo).ThenBy(em => em.Timestamp); break; case OrdinamentoEnum.Votazione: query = query.OrderBy(em => em.OrdineVotazione); break; default: query = query.OrderBy(em => em.IDStato) .ThenBy(em => em.Progressivo) .ThenBy(em => em.SubProgressivo); break; } return(await query .Skip((page.Value - 1) *size.Value) .Take(size.Value) .ToListAsync()); }
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; } }