public void RenderRegistrosData() { var res = new StringBuilder(); foreach (var registro in IndicadorRegistro.ByIndicadorId(this.IndicadorId, this.company.Id)) { res.Append(registro.ListRow(this.dictionary, this.user.Grants)); } this.LtRegistrosData.Text = res.ToString(); }
protected void Page_Load(object sender, EventArgs e) { int objetivoId = Convert.ToInt32(Request.QueryString["id"]); int companyId = Convert.ToInt32(Request.QueryString["companyId"]); var company = new Company(companyId); var res = ActionResult.NoAction; var user = HttpContext.Current.Session["User"] as ApplicationUser; var dictionary = HttpContext.Current.Session["Dictionary"] as Dictionary <string, string>; var objetivo = Objetivo.ById(objetivoId, user.CompanyId); string path = HttpContext.Current.Request.PhysicalApplicationPath; if (!path.EndsWith(@"\", StringComparison.OrdinalIgnoreCase)) { path = string.Format(CultureInfo.InvariantCulture, @"{0}\", path); } var formatedDescription = ToolsPdf.NormalizeFileName(objetivo.Name); string fileName = string.Format( CultureInfo.InvariantCulture, @"{0}_{1}_Data_{2:yyyyMMddhhmmss}.pdf", dictionary["Item_Objetivo"], formatedDescription, DateTime.Now); string type = string.Empty; string origin = string.Empty; string originSufix = string.Empty; string reporterType = string.Empty; string reporter = string.Empty; string status = string.Empty; var document = new iTextSharp.text.Document(PageSize.A4, 30, 30, 65, 55); var writer = PdfWriter.GetInstance(document, new FileStream(Request.PhysicalApplicationPath + "\\Temp\\" + fileName, FileMode.Create)); writer.PageEvent = new TwoColumnHeaderFooter { CompanyLogo = string.Format(CultureInfo.InvariantCulture, @"{0}\images\logos\{1}.jpg", path, companyId), IssusLogo = string.Format(CultureInfo.InvariantCulture, "{0}issus.png", path), Date = string.Format(CultureInfo.InvariantCulture, "{0:dd/MM/yyyy}", DateTime.Now), CreatedBy = user.UserName, CompanyId = objetivo.CompanyId, CompanyName = company.Name, Title = dictionary["Item_Objetivo"].ToUpperInvariant() }; document.Open(); var table = new PdfPTable(4) { WidthPercentage = 100, HorizontalAlignment = 0 }; table.SetWidths(new float[] { 15f, 30f, 15f, 30f }); ToolsPdf.AddDataLabel(table, dictionary["Item_Objetivo_FieldLabel_Name"], objetivo.Name, 3); ToolsPdf.AddDataLabel(table, dictionary["Item_Objetivo_FieldLabel_Responsible"], objetivo.Responsible.FullName, 3); ToolsPdf.AddDataLabel(table, dictionary["Item_Objetivo_FieldLabel_DateStart"], objetivo.StartDate); ToolsPdf.AddDataLabel(table, dictionary["Item_Objetivo_FieldLabel_ClosePreviewDate"], objetivo.PreviewEndDate); if (objetivo.VinculatedToIndicator) { var indicador = Indicador.ById(objetivo.IndicatorId.Value, companyId); ToolsPdf.AddDataLabel(table, dictionary["Item_Objetivo_FieldLabel_Indicator"], indicador.Description); ToolsPdf.AddDataLabel(table, dictionary["Item_Objetivo_FieldLabel_Periodicity"], indicador.Periodicity); } AddTextArea(table, dictionary["Item_Objetivo_FieldLabel_Description"], objetivo.Description, 4); AddTextArea(table, dictionary["Item_Objetivo_FieldLabel_Methodology"], objetivo.Methodology, 4); AddTextArea(table, dictionary["Item_Objetivo_FieldLabel_Resources"], objetivo.Resources, 4); AddTextArea(table, dictionary["Item_Objetivo_FieldLabel_Notes"], objetivo.Notes, 4); document.Add(table); if (user.HasGrantToRead(ApplicationGrant.IncidentActions)) { #region Acciones if (user.HasGrantToRead(ApplicationGrant.IncidentActions)) { var acciones = IncidentAction.ByObjetivoId(objetivoId, companyId); if (acciones.Count > 0) { document.SetPageSize(PageSize.A4.Rotate()); document.NewPage(); var tableAcciones = new PdfPTable(5) { WidthPercentage = 100, HorizontalAlignment = 1, SpacingBefore = 20f }; tableAcciones.SetWidths(new float[] { 20f, 120f, 20f, 20f, 20f }); ToolsPdf.AddTableTitle(tableAcciones, dictionary["Item_Objetivo_ActionsReportTitle"]); tableAcciones.AddCell(ToolsPdf.HeaderCell(dictionary["Item_IncidentAction_Header_Status"])); tableAcciones.AddCell(ToolsPdf.HeaderCell(dictionary["Item_IncidentAction_Header_Open"])); tableAcciones.AddCell(ToolsPdf.HeaderCell(dictionary["Item_IncidentAction_Header_Description"])); tableAcciones.AddCell(ToolsPdf.HeaderCell(dictionary["Item_IncidentAction_Header_ImplementDate"])); tableAcciones.AddCell(ToolsPdf.HeaderCell(dictionary["Item_IncidentAction_Header_Cost"])); int cont = 0; decimal totalAcciones = 0; foreach (var accion in acciones) { tableAcciones.AddCell(ToolsPdf.DataCell(accion.Status)); tableAcciones.AddCell(ToolsPdf.DataCell(accion.Description)); tableAcciones.AddCell(ToolsPdf.DataCell(accion.WhatHappenedOn)); tableAcciones.AddCell(ToolsPdf.DataCell(accion.ActionsOn)); tableAcciones.AddCell(ToolsPdf.DataCell(0)); cont++; var costs = IncidentActionCost.GetByIncidentActionId(accion.Id, company.Id); foreach (var cost in costs) { totalAcciones = cost.Amount; } } // TotalRow tableAcciones.AddCell(new iTSpdf.PdfPCell(new iTS.Phrase(dictionary["Common_RegisterCount"].ToUpperInvariant() + ":", ToolsPdf.LayoutFonts.TimesBold)) { Border = Rectangle.TOP_BORDER, HorizontalAlignment = Element.ALIGN_LEFT, Padding = 8f }); tableAcciones.AddCell(new iTSpdf.PdfPCell(new iTS.Phrase(string.Format(CultureInfo.InvariantCulture, "{0:#0.00}", cont), ToolsPdf.LayoutFonts.TimesBold)) { Border = Rectangle.TOP_BORDER, HorizontalAlignment = Element.ALIGN_RIGHT, Padding = 8f }); tableAcciones.AddCell(new iTSpdf.PdfPCell(new iTS.Phrase(dictionary["Common_Total"].ToUpperInvariant() + ":", ToolsPdf.LayoutFonts.TimesBold)) { Border = Rectangle.TOP_BORDER, HorizontalAlignment = Element.ALIGN_LEFT, Padding = 8f, Colspan = 2 }); tableAcciones.AddCell(new iTSpdf.PdfPCell(new iTS.Phrase(string.Format(CultureInfo.InvariantCulture, "{0:#0.00}", totalAcciones), ToolsPdf.LayoutFonts.TimesBold)) { Border = Rectangle.TOP_BORDER, HorizontalAlignment = Element.ALIGN_RIGHT, Padding = 8f }); tableAcciones.AddCell(new PdfPCell(new Phrase(string.Empty)) { Colspan = 3, Border = Rectangle.TOP_BORDER }); document.Add(tableAcciones); } } #endregion } #region Registros if (objetivo.VinculatedToIndicator) { var registros = IndicadorRegistro.ByIndicadorId(objetivo.IndicatorId.Value, companyId).ToList(); if (registros.Count > 0) { document.SetPageSize(PageSize.A4.Rotate()); document.NewPage(); var tableRegistros = new PdfPTable(5) { WidthPercentage = 100, HorizontalAlignment = 1, SpacingBefore = 20f }; tableRegistros.SetWidths(new float[] { 20f, 20f, 120f, 40f, 50f }); ToolsPdf.AddTableTitle(tableRegistros, dictionary["Item_Objetivo_RecordsReportTitle"]); tableRegistros.AddCell(ToolsPdf.HeaderCell("*" + dictionary["Item_Indicador_TableRecords_Header_Value"])); tableRegistros.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Indicador_TableRecords_Header_Date"])); tableRegistros.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Indicador_TableRecords_Header_Comments"])); tableRegistros.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Indicador_TableRecords_Header_Meta"])); tableRegistros.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Indicador_TableRecords_Header_Responsible"])); int cont = 0; foreach (var registro in registros) { string meta = dictionary["Common_Comparer_" + registro.MetaComparer] + " " + registro.Meta.ToString(); // WEKE ALEX: con datacellmoney el dato debe ser decimal y lo poen con dos decimales tableRegistros.AddCell(ToolsPdf.DataCellMoney(registro.Value)); tableRegistros.AddCell(ToolsPdf.DataCell(registro.Date)); tableRegistros.AddCell(ToolsPdf.DataCell(registro.Comments)); tableRegistros.AddCell(ToolsPdf.DataCell(meta)); tableRegistros.AddCell(ToolsPdf.DataCell(registro.Responsible.FullName)); cont++; } // TotalRow tableRegistros.AddCell(new iTSpdf.PdfPCell(new iTS.Phrase(dictionary["Common_RegisterCount"].ToUpperInvariant() + ":", ToolsPdf.LayoutFonts.TimesBold)) { Border = Rectangle.TOP_BORDER, HorizontalAlignment = Element.ALIGN_LEFT, Padding = 8f }); tableRegistros.AddCell(new iTSpdf.PdfPCell(new iTS.Phrase(string.Format(CultureInfo.InvariantCulture, "{0:#0.00}", cont), ToolsPdf.LayoutFonts.TimesBold)) { Border = Rectangle.TOP_BORDER, HorizontalAlignment = Element.ALIGN_RIGHT, Padding = 8f }); tableRegistros.AddCell(new PdfPCell(new Phrase(string.Empty)) { Colspan = 3, Border = Rectangle.TOP_BORDER }); document.Add(tableRegistros); } } else { var registros = ObjetivoRegistro.GetByObjetivo(objetivoId, companyId).ToList(); if (registros.Count > 0) { document.SetPageSize(PageSize.A4.Rotate()); document.NewPage(); var tableRegistros = new PdfPTable(5) { WidthPercentage = 100, HorizontalAlignment = 1, SpacingBefore = 20f }; tableRegistros.SetWidths(new float[] { 20f, 120f, 20f, 40f, 50f }); tableRegistros.AddCell(new PdfPCell(new Phrase(dictionary["Item_Objetivo_RecordsReportTitle"])) { Colspan = 5, Border = Rectangle.NO_BORDER, PaddingTop = 20f, PaddingBottom = 20f, HorizontalAlignment = Element.ALIGN_CENTER }); tableRegistros.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Indicador_TableRecords_Header_Value"])); tableRegistros.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Indicador_TableRecords_Header_Date"])); tableRegistros.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Indicador_TableRecords_Header_Comments"])); tableRegistros.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Indicador_TableRecords_Header_Meta"])); tableRegistros.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Indicador_TableRecords_Header_Responsible"])); int cont = 0; foreach (var registro in registros) { string meta = dictionary["Common_Comparer_" + registro.MetaComparer] + " " + registro.Meta.ToString(); tableRegistros.AddCell(ToolsPdf.DataCell(registro.Value)); tableRegistros.AddCell(ToolsPdf.DataCellCenter(registro.Date)); tableRegistros.AddCell(ToolsPdf.DataCell(registro.Comments)); tableRegistros.AddCell(ToolsPdf.DataCell(meta)); tableRegistros.AddCell(ToolsPdf.DataCell(registro.Responsible.FullName)); cont++; } // TotalRow tableRegistros.AddCell(new iTSpdf.PdfPCell(new iTS.Phrase(dictionary["Common_Total"].ToUpperInvariant() + ":", ToolsPdf.LayoutFonts.TimesBold)) { Border = Rectangle.TOP_BORDER, HorizontalAlignment = Element.ALIGN_LEFT, Padding = 8f }); tableRegistros.AddCell(new iTSpdf.PdfPCell(new iTS.Phrase(string.Format(CultureInfo.InvariantCulture, "{0:#0.00}", cont), ToolsPdf.LayoutFonts.TimesBold)) { Border = Rectangle.TOP_BORDER, HorizontalAlignment = Element.ALIGN_RIGHT, Padding = 8f }); tableRegistros.AddCell(new PdfPCell(new Phrase(string.Empty)) { Colspan = 3, Border = Rectangle.TOP_BORDER }); document.Add(tableRegistros); } } #endregion if (user.HasGrantToRead(ApplicationGrant.IncidentActions)) { #region Historico var historico = ObjetivoHistorico.ByObjetivoId(objetivoId); if (historico.Count > 0) { document.SetPageSize(PageSize.A4.Rotate()); document.NewPage(); var tableHistorico = new PdfPTable(4) { WidthPercentage = 100, HorizontalAlignment = 1, SpacingBefore = 20f }; tableHistorico.SetWidths(new float[] { 20f, 20f, 120f, 50f }); ToolsPdf.AddTableTitle(tableHistorico, dictionary["Item_Objetivo_TabHistoric"]); tableHistorico.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Objetivo_FieldLabel_Action"])); tableHistorico.AddCell(ToolsPdf.HeaderCell(dictionary["Item_IndicatorRecord_FieldLabel_Date"])); tableHistorico.AddCell(ToolsPdf.HeaderCell(dictionary["Item_ObjetivoRecord_FieldLabel_Reason"])); tableHistorico.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Objetivo_FieldLabel_CloseResponsible"])); int cont = 0; foreach (var objetivoHistorico in historico) { var actionText = string.Empty; var description = string.Empty; if (objetivoHistorico.Reason == "Restore") { actionText = dictionary["Item_ObjetivoHistorico_StatusRestore"]; } else { actionText = dictionary["Item_ObjetivoHistorico_StatusAnulate"]; description = objetivoHistorico.Reason; } tableHistorico.AddCell(ToolsPdf.DataCell(actionText)); tableHistorico.AddCell(ToolsPdf.DataCell(objetivoHistorico.Date)); tableHistorico.AddCell(ToolsPdf.DataCell(description)); tableHistorico.AddCell(ToolsPdf.DataCell(objetivoHistorico.Employee.FullName)); cont++; } // TotalRow tableHistorico.AddCell(new iTSpdf.PdfPCell(new iTS.Phrase(dictionary["Common_Total"].ToUpperInvariant() + ":", ToolsPdf.LayoutFonts.TimesBold)) { Border = Rectangle.TOP_BORDER, HorizontalAlignment = Element.ALIGN_LEFT, Padding = 8f }); tableHistorico.AddCell(new iTSpdf.PdfPCell(new iTS.Phrase(string.Format(CultureInfo.InvariantCulture, "{0:#0.00}", cont), ToolsPdf.LayoutFonts.TimesBold)) { Border = Rectangle.TOP_BORDER, HorizontalAlignment = Element.ALIGN_RIGHT, Padding = 8f }); tableHistorico.AddCell(new PdfPCell(new Phrase(string.Empty)) { Colspan = 2, Border = Rectangle.TOP_BORDER }); document.Add(tableHistorico); } #endregion } document.Close(); Response.ClearContent(); Response.ClearHeaders(); Response.AddHeader("Content-Disposition", "inline;filename=Accion.pdf"); Response.ContentType = "application/pdf"; Response.WriteFile(Request.PhysicalApplicationPath + "\\Temp\\" + fileName); Response.Flush(); Response.Clear(); }
public static ActionResult PDF(int companyId, DateTime?dateFrom, DateTime?dateTo, string indicadorName, int indicadorId, string listOrder) { var res = ActionResult.NoAction; var user = HttpContext.Current.Session["User"] as ApplicationUser; dictionary = HttpContext.Current.Session["Dictionary"] as Dictionary <string, string>; var company = new Company(companyId); var registros = IndicadorRegistro.ByIndicadorId(indicadorId, companyId).ToList(); string path = HttpContext.Current.Request.PhysicalApplicationPath; if (!path.EndsWith(@"\", StringComparison.OrdinalIgnoreCase)) { path = string.Format(CultureInfo.InvariantCulture, @"{0}\", path); } var formatedDescription = ToolsPdf.NormalizeFileName(indicadorName); string fileName = string.Format( CultureInfo.InvariantCulture, @"{0}_{1}_{2:yyyyMMddhhmmss}.xls", dictionary["Item_Indicador_RecordsReportTitle"], formatedDescription, DateTime.Now); fileName = fileName.Replace("%", ""); var pdfDoc = new iTS.Document(iTS.PageSize.A4.Rotate(), 40, 40, 80, 50); var writer = iTextSharp.text.pdf.PdfWriter.GetInstance(pdfDoc, new FileStream( string.Format(CultureInfo.InvariantCulture, @"{0}Temp\{1}", path, fileName), FileMode.Create)); writer.PageEvent = new TwoColumnHeaderFooter { CompanyLogo = string.Format(CultureInfo.InvariantCulture, @"{0}\images\logos\{1}.jpg", path, companyId), IssusLogo = string.Format(CultureInfo.InvariantCulture, "{0}issus.png", path), Date = string.Format(CultureInfo.InvariantCulture, "{0:dd/MM/yyyy}", DateTime.Now), CreatedBy = string.Format(CultureInfo.InvariantCulture, "{0}", user.UserName), CompanyId = companyId, CompanyName = company.Name, Title = string.Format(CultureInfo.InvariantCulture, "{0} {1}", dictionary["Item_Indicador_RecordsReportTitle"].ToUpperInvariant(), indicadorName) }; pdfDoc.Open(); var backgroundColor = new iTS.BaseColor(220, 220, 220); string periode = string.Empty; if (dateFrom.HasValue && dateTo.HasValue) { periode = string.Format( CultureInfo.InvariantCulture, @"{2} {0:dd/MM/yyyy} {3} {1:dd/MM/yyyy}", dateFrom.Value, dateTo.Value, dictionary["Common_From"].ToLowerInvariant(), dictionary["Common_To"].ToLowerInvariant()); } else if (dateFrom.HasValue && dateTo == null) { periode = string.Format( CultureInfo.InvariantCulture, @"{1}: {0:dd/MM/yyyy}", dateFrom.Value, dictionary["Common_From"]); } else if (dateFrom == null && dateTo.HasValue) { periode = string.Format( CultureInfo.InvariantCulture, @"{1}: {0:dd/MM/yyyy}", dateTo.Value, dictionary["Common_To"]); } if (string.IsNullOrEmpty(periode)) { periode = dictionary["Common_PeriodAll"]; } var criteriatable = new iTSpdf.PdfPTable(2) { WidthPercentage = 100 }; string typeText = string.Empty; criteriatable.SetWidths(new float[] { 25f, 250f }); criteriatable.AddCell(ToolsPdf.CriteriaCellLabel(dictionary["Common_Period"])); criteriatable.AddCell(ToolsPdf.CriteriaCellLabel(periode)); criteriatable.AddCell(ToolsPdf.CriteriaCellLabel(typeText)); pdfDoc.Add(criteriatable); var table = new iTSpdf.PdfPTable(7) { WidthPercentage = 100, HorizontalAlignment = 0, SpacingBefore = 20f, SpacingAfter = 30f }; table.SetWidths(new float[] { 15f, 10f, 15f, 15f, 20f, 20f, 30f }); table.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Indicador_TableRecords_Header_Status"])); table.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Indicador_TableRecords_Header_Value"])); table.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Indicador_TableRecords_Header_Date"])); table.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Indicador_TableRecords_Header_Comments"])); table.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Indicador_TableRecords_Header_Meta"])); table.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Indicador_TableRecords_Header_Alarm"])); table.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Indicador_TableRecords_Header_Responsible"])); // Aplicar filtro if (dateFrom.HasValue) { registros = registros.Where(r => r.Date >= dateFrom).ToList(); } if (dateTo.HasValue) { registros = registros.Where(r => r.Date <= dateTo).ToList(); } switch (listOrder.ToUpperInvariant()) { default: case "TH1|ASC": registros = registros.OrderBy(d => d.Value).ToList(); break; case "TH1|DESC": registros = registros.OrderByDescending(d => d.Value).ToList(); break; case "TH2|ASC": registros = registros.OrderBy(d => d.Date).ToList(); break; case "TH2|DESC": registros = registros.OrderByDescending(d => d.Date).ToList(); break; case "TH4|ASC": registros = registros.OrderBy(d => d.Meta).ToList(); break; case "TH4|DESC": registros = registros.OrderByDescending(d => d.Meta).ToList(); break; case "TH5|ASC": registros = registros.OrderBy(d => d.Alarma).ToList(); break; case "TH5|DESC": registros = registros.OrderByDescending(d => d.Alarma).ToList(); break; case "TH6|ASC": registros = registros.OrderBy(d => d.Responsible.FullName).ToList(); break; case "TH6|DESC": registros = registros.OrderByDescending(d => d.Responsible.FullName).ToList(); break; } int cont = 0; var dataPoints = new List <PointData>(); foreach (var registro in registros.OrderByDescending(r => r.Date)) { cont++; string metaText = IndicadorRegistro.ComparerLabelSign(registro.MetaComparer, dictionary); string alarmText = IndicadorRegistro.ComparerLabelSign(registro.AlarmaComparer, dictionary); int color = 0; string statusLabel = dictionary["Item_Objetivo_StatusLabelWithoutMeta"]; if (metaText == "=" && registro.Value == registro.Meta) { color = 1; statusLabel = dictionary["Item_Objetivo_StatusLabelMeta"]; } else if (metaText == ">" && registro.Value > registro.Meta) { color = 1; statusLabel = dictionary["Item_Objetivo_StatusLabelMeta"]; } else if (metaText == ">=" && registro.Value >= registro.Meta) { color = 1; statusLabel = dictionary["Item_Objetivo_StatusLabelMeta"]; } else if (metaText == "<" && registro.Value < registro.Meta) { color = 1; statusLabel = dictionary["Item_Objetivo_StatusLabelMeta"]; } else if (metaText == "<=" && registro.Value <= registro.Meta) { color = 1; statusLabel = dictionary["Item_Objetivo_StatusLabelMeta"]; } else if (!string.IsNullOrEmpty(alarmText)) { if (alarmText == "=" && registro.Value == registro.Alarma) { color = 2; statusLabel = dictionary["Item_Objetivo_StatusLabelWarning"]; } else if (alarmText == ">" && registro.Value > registro.Alarma) { color = 2; statusLabel = dictionary["Item_Objetivo_StatusLabelWarning"]; } else if (alarmText == ">=" && registro.Value >= registro.Alarma) { color = 2; statusLabel = dictionary["Item_Objetivo_StatusLabelWarning"]; } else if (alarmText == "<" && registro.Value < registro.Alarma) { color = 2; statusLabel = dictionary["Item_Objetivo_StatusLabelWarning"]; } else if (alarmText == "<=" && registro.Value <= registro.Alarma) { color = 2; statusLabel = dictionary["Item_Objetivo_StatusLabelWarning"]; } else { statusLabel = dictionary["Item_Objetivo_StatusLabelNoMeta"]; color = 3; } } else { statusLabel = dictionary["Item_Objetivo_StatusLabelNoMeta"]; color = 3; } table.AddCell(ToolsPdf.DataCell(statusLabel, ToolsPdf.LayoutFonts.Times)); metaText = string.Format(CultureInfo.InvariantCulture, "{0} {1:#,##0.00}", metaText, registro.Meta); alarmText = string.Format(CultureInfo.InvariantCulture, "{0} {1:#,##0.00}", alarmText, registro.Alarma); table.AddCell(ToolsPdf.DataCellRight(string.Format(CultureInfo.InvariantCulture, "{0:#,##0.00}", registro.Value))); table.AddCell(ToolsPdf.DataCell(registro.Date)); table.AddCell(ToolsPdf.DataCell(registro.Comments)); table.AddCell(ToolsPdf.DataCell(metaText)); table.AddCell(ToolsPdf.DataCell(alarmText)); table.AddCell(ToolsPdf.DataCell(registro.Responsible.FullName)); dataPoints.Add(new PointData { Value = registro.Value, Meta = registro.Meta, Alarma = registro.Alarma, Date = registro.Date, Status = color }); } table.AddCell(new iTSpdf.PdfPCell(new iTS.Phrase(string.Format( CultureInfo.InvariantCulture, @"{0}: {1}", dictionary["Common_RegisterCount"], cont), ToolsPdf.LayoutFonts.Times)) { Border = iTS.Rectangle.TOP_BORDER, BackgroundColor = backgroundColor, Padding = 6f, PaddingTop = 4f, Colspan = 2 }); table.AddCell(new iTSpdf.PdfPCell(new iTS.Phrase(string.Empty, ToolsPdf.LayoutFonts.Times)) { Border = iTS.Rectangle.TOP_BORDER, BackgroundColor = backgroundColor, Colspan = 5 }); string graphName = string.Format(CultureInfo.InvariantCulture, @"{0}Temp\{1}", path, "graph.jpg"); dataPoints = dataPoints.OrderBy(dp => dp.Date).ToList(); using (var chart = new Chart()) { chart.ChartAreas.Add(new ChartArea("Valor")); var series = new Series(); chart.Width = 800; chart.Height = 350; chart.Series.Add("Values"); chart.Series["Values"].ChartType = SeriesChartType.Column; chart.Series["Values"].YValueType = ChartValueType.Double; chart.Series.Add("Meta"); chart.Series["Meta"].ChartType = SeriesChartType.Line; chart.Series["Meta"].BorderWidth = 3; chart.Series["Meta"].BorderColor = DR.Color.Green; chart.Series["Meta"].YValueType = ChartValueType.Double; chart.Series.Add("Alarma"); chart.Series["Alarma"].ChartType = SeriesChartType.Line; chart.Series["Alarma"].BorderWidth = 3; chart.Series["Alarma"].BorderColor = DR.Color.Pink; chart.Series["Alarma"].YValueType = ChartValueType.Double; foreach (var dataPoint in dataPoints) { chart.Series["Values"].Points.AddXY(string.Format("{0:dd/MM/yyyy}", dataPoint.Date), dataPoint.Value); chart.Series["Meta"].Points.AddY(dataPoint.Meta); chart.Series["Alarma"].Points.AddY(dataPoint.Alarma ?? 0); } chart.Series["Values"].IsValueShownAsLabel = true; chart.Series["Values"].Font = new DR.Font("Arial", 8, DR.FontStyle.Bold); chart.Series["Values"].ChartArea = "Valor"; chart.Series["Meta"].ChartArea = "Valor"; chart.Series["Alarma"].ChartArea = "Valor"; chart.ChartAreas["Valor"].AxisX.LabelStyle.Font = new DR.Font("Arial", 8); chart.ChartAreas["Valor"].AxisX.MajorGrid.Enabled = false; chart.ChartAreas["Valor"].AxisX.LabelStyle.Angle = 75; chart.ChartAreas["Valor"].AxisY.LabelStyle.Font = new DR.Font("Arial", 10); chart.ChartAreas["Valor"].RecalculateAxesScale(); int cp = 0; foreach (var Point in chart.Series["Values"].Points) { switch (dataPoints[cp].Status) { default: case 0: Point.Color = DR.Color.DarkGray; break; case 1: Point.Color = DR.Color.Green; break; case 2: Point.Color = DR.Color.Red; break; case 3: Point.Color = DR.Color.Orange; break; } cp++; } chart.Series.Add(series); chart.SaveImage(graphName, ChartImageFormat.Jpeg); } var tif = Image.GetInstance(graphName); tif.ScalePercent(100); pdfDoc.Add(table); pdfDoc.NewPage(); pdfDoc.Add(new iTS.Phrase("Grafico", ToolsPdf.LayoutFonts.Times)); pdfDoc.Add(tif); var logoIssus = Image.GetInstance(string.Format(CultureInfo.InvariantCulture, "{0}issus.png", path)); logoIssus.ScalePercent(20f); logoIssus.SetAbsolutePosition(40f, 24f); pdfDoc.Add(logoIssus); pdfDoc.CloseDocument(); res.SetSuccess(string.Format(CultureInfo.InvariantCulture, @"{0}Temp/{1}", ConfigurationManager.AppSettings["siteUrl"], fileName)); return(res); }
public static ActionResult Excel(int companyId, DateTime?dateFrom, DateTime?dateTo, string indicadorName, int indicadorId, string listOrder) { var res = ActionResult.NoAction; var user = HttpContext.Current.Session["User"] as ApplicationUser; dictionary = HttpContext.Current.Session["Dictionary"] as Dictionary <string, string>; var company = new Company(companyId); var registros = IndicadorRegistro.ByIndicadorId(indicadorId, companyId).ToList(); string path = HttpContext.Current.Request.PhysicalApplicationPath; if (!path.EndsWith(@"\", StringComparison.OrdinalIgnoreCase)) { path = string.Format(CultureInfo.InvariantCulture, @"{0}\", path); } var formatedDescription = ToolsPdf.NormalizeFileName(indicadorName); string fileName = string.Format( CultureInfo.InvariantCulture, @"{0}_{1}_{2:yyyyMMddhhmmss}.xls", dictionary["Item_Indicador_RecordsReportTitle"], formatedDescription, DateTime.Now); fileName = fileName.Replace("%", ""); var wb = HSSFWorkbook.Create(InternalWorkbook.CreateWorkbook()); var sh = (HSSFSheet)wb.CreateSheet(dictionary["Item_Indicador_RecordsReportTitle"]); var shCriteria = (HSSFSheet)wb.CreateSheet(dictionary["Common_SearchCriteria"]); var moneyCellStyle = wb.CreateCellStyle(); var hssfDataFormat = wb.CreateDataFormat(); moneyCellStyle.DataFormat = hssfDataFormat.GetFormat("#,##0.00"); var headerCellStyle = wb.CreateCellStyle(); var headerFont = wb.CreateFont(); headerFont.Boldweight = (short)FontBoldWeight.Bold; headerCellStyle.SetFont(headerFont); headerCellStyle.BorderBottom = BorderStyle.Double; var totalCellStyle = wb.CreateCellStyle(); var totalFont = wb.CreateFont(); totalFont.Boldweight = (short)FontBoldWeight.Bold; totalCellStyle.SetFont(headerFont); totalCellStyle.BorderTop = BorderStyle.Double; var totalValueCellStyle = wb.CreateCellStyle(); totalFont.Boldweight = (short)FontBoldWeight.Bold; totalValueCellStyle.SetFont(headerFont); totalValueCellStyle.BorderTop = BorderStyle.Double; totalValueCellStyle.BorderBottom = BorderStyle.None; totalValueCellStyle.DataFormat = hssfDataFormat.GetFormat("#,##0.00"); var titleCellStyle = wb.CreateCellStyle(); var titleFont = wb.CreateFont(); titleFont.Boldweight = (short)FontBoldWeight.Bold; titleFont.FontHeight = 400; titleCellStyle.SetFont(titleFont); var decimalFormat = wb.CreateCellStyle(); decimalFormat.DataFormat = wb.CreateDataFormat().GetFormat("#.00"); var integerformat = wb.CreateCellStyle(); integerformat.DataFormat = wb.CreateDataFormat().GetFormat("#0"); var cra = new CellRangeAddress(0, 1, 0, 4); sh.AddMergedRegion(cra); if (sh.GetRow(0) == null) { sh.CreateRow(0); } sh.GetRow(0).CreateCell(0); sh.GetRow(0).GetCell(0).SetCellValue(string.Format(CultureInfo.InvariantCulture, "{0} - {1}", dictionary["Item_Indicador_RecordsReportTitle"], indicadorName)); sh.GetRow(0).GetCell(0).CellStyle = titleCellStyle; var dataFormatCustom = wb.CreateDataFormat(); // Condiciones del filtro if (shCriteria.GetRow(1) == null) { shCriteria.CreateRow(1); } if (shCriteria.GetRow(2) == null) { shCriteria.CreateRow(2); } if (shCriteria.GetRow(3) == null) { shCriteria.CreateRow(3); } if (shCriteria.GetRow(1).GetCell(1) == null) { shCriteria.GetRow(1).CreateCell(1); } shCriteria.GetRow(1).GetCell(1).SetCellValue(dictionary["Item_Indicador_Field_Name"]); if (shCriteria.GetRow(1).GetCell(2) == null) { shCriteria.GetRow(1).CreateCell(2); } shCriteria.GetRow(1).GetCell(2).SetCellValue(indicadorName); if (shCriteria.GetRow(2).GetCell(1) == null) { shCriteria.GetRow(2).CreateCell(1); } shCriteria.GetRow(2).GetCell(1).SetCellValue(dictionary["Common_From"]); if (shCriteria.GetRow(2).GetCell(2) == null) { shCriteria.GetRow(2).CreateCell(2); } string fromValue = "-"; if (dateFrom.HasValue) { fromValue = string.Format(CultureInfo.InvariantCulture, "{0:dd/MM/yyyy}", dateFrom.Value); } shCriteria.GetRow(2).GetCell(2).SetCellValue(fromValue); if (shCriteria.GetRow(3).GetCell(1) == null) { shCriteria.GetRow(3).CreateCell(1); } shCriteria.GetRow(3).GetCell(1).SetCellValue(dictionary["Common_To"]); if (shCriteria.GetRow(3).GetCell(2) == null) { shCriteria.GetRow(3).CreateCell(2); } string toValue = "-"; if (dateTo.HasValue) { toValue = string.Format(CultureInfo.InvariantCulture, "{0:dd/MM/yyyy}", dateTo.Value); } shCriteria.GetRow(3).GetCell(2).SetCellValue(toValue); // Crear Cabecera var headers = new List <string>() { dictionary["Item_Indicador_TableRecords_Header_Status"].ToUpperInvariant(), dictionary["Item_Indicador_TableRecords_Header_Value"].ToUpperInvariant(), dictionary["Item_Indicador_TableRecords_Header_Date"].ToUpperInvariant(), dictionary["Item_Indicador_TableRecords_Header_Comments"].ToUpperInvariant(), dictionary["Item_Indicador_TableRecords_Header_Meta"].ToUpperInvariant(), dictionary["Item_Indicador_TableRecords_Header_Alarm"].ToUpperInvariant(), dictionary["Item_Indicador_TableRecords_Header_Responsible"].ToUpperInvariant() }; int countColumns = 0; foreach (string headerLabel in headers) { if (sh.GetRow(3) == null) { sh.CreateRow(3); } if (sh.GetRow(3).GetCell(countColumns) == null) { sh.GetRow(3).CreateCell(countColumns); } sh.GetRow(3).GetCell(countColumns).SetCellValue(headerLabel); sh.GetRow(3).GetCell(countColumns).CellStyle = headerCellStyle; countColumns++; } int countRow = 4; if (dateFrom.HasValue) { registros = registros.Where(r => r.Date >= dateFrom).ToList(); } if (dateTo.HasValue) { registros = registros.Where(r => r.Date <= dateTo).ToList(); } switch (listOrder.ToUpperInvariant()) { default: case "TH1|ASC": registros = registros.OrderBy(d => d.Value).ToList(); break; case "TH1|DESC": registros = registros.OrderByDescending(d => d.Value).ToList(); break; case "TH2|ASC": registros = registros.OrderBy(d => d.Date).ToList(); break; case "TH2|DESC": registros = registros.OrderByDescending(d => d.Date).ToList(); break; case "TH4|ASC": registros = registros.OrderBy(d => d.Meta).ToList(); break; case "TH4|DESC": registros = registros.OrderByDescending(d => d.Meta).ToList(); break; case "TH5|ASC": registros = registros.OrderBy(d => d.Alarma).ToList(); break; case "TH5|DESC": registros = registros.OrderByDescending(d => d.Alarma).ToList(); break; case "TH6|ASC": registros = registros.OrderBy(d => d.Responsible.FullName).ToList(); break; case "TH6|DESC": registros = registros.OrderByDescending(d => d.Responsible.FullName).ToList(); break; } foreach (var registro in registros) { if (sh.GetRow(countRow) == null) { sh.CreateRow(countRow); } string metaText = IndicadorRegistro.ComparerLabelSign(registro.MetaComparer, dictionary); string alarmText = IndicadorRegistro.ComparerLabelSign(registro.AlarmaComparer, dictionary); string statusLabel = dictionary["Item_Objetivo_StatusLabelWithoutMeta"]; if (!string.IsNullOrEmpty(metaText)) { metaText = string.Format(CultureInfo.InvariantCulture, "{0} {1:#,##0.00}", metaText, registro.Meta); if (metaText == "=" && registro.Value == registro.Meta) { statusLabel = dictionary["Item_Objetivo_StatusLabelMeta"]; } else if (metaText == ">" && registro.Value > registro.Meta) { statusLabel = dictionary["Item_Objetivo_StatusLabelMeta"]; } else if (metaText == ">=" && registro.Value >= registro.Meta) { statusLabel = dictionary["Item_Objetivo_StatusLabelMeta"]; } else if (metaText == "<" && registro.Value < registro.Meta) { statusLabel = dictionary["Item_Objetivo_StatusLabelMeta"]; } else if (metaText == "<=" && registro.Value <= registro.Meta) { statusLabel = dictionary["Item_Objetivo_StatusLabelMeta"]; } else if (!string.IsNullOrEmpty(alarmText)) { if (alarmText == ">" && registro.Value > registro.Alarma) { statusLabel = dictionary["Item_Objetivo_StatusLabelWarning"]; } else if (alarmText == ">=" && registro.Value >= registro.Alarma) { statusLabel = dictionary["Item_Objetivo_StatusLabelWarning"]; } else if (alarmText == "<" && registro.Value < registro.Alarma) { statusLabel = dictionary["Item_Objetivo_StatusLabelWarning"]; } else if (alarmText == "<=" && registro.Value <= registro.Alarma) { statusLabel = dictionary["Item_Objetivo_StatusLabelWarning"]; } else { statusLabel = dictionary["Item_Objetivo_StatusLabelNoMeta"]; } } else { statusLabel = dictionary["Item_Objetivo_StatusLabelNoMeta"]; } } // Status if (sh.GetRow(countRow).GetCell(0) == null) { sh.GetRow(countRow).CreateCell(0); } sh.GetRow(countRow).GetCell(0).SetCellValue(statusLabel); // Value if (sh.GetRow(countRow).GetCell(1) == null) { sh.GetRow(countRow).CreateCell(1); } sh.GetRow(countRow).GetCell(1).SetCellType(CellType.Numeric); sh.GetRow(countRow).GetCell(1).CellStyle = moneyCellStyle; sh.GetRow(countRow).GetCell(1).SetCellValue(Convert.ToDouble(registro.Value)); // Date if (sh.GetRow(countRow).GetCell(2) == null) { sh.GetRow(countRow).CreateCell(2); } sh.GetRow(countRow).GetCell(2).CellStyle.DataFormat = dataFormatCustom.GetFormat("dd/MM/yyyy"); sh.GetRow(countRow).GetCell(2).SetCellValue(registro.Date); // Comments if (sh.GetRow(countRow).GetCell(3) == null) { sh.GetRow(countRow).CreateCell(3); } sh.GetRow(countRow).GetCell(3).SetCellValue(registro.Comments); // Meta if (sh.GetRow(countRow).GetCell(4) == null) { sh.GetRow(countRow).CreateCell(4); } sh.GetRow(countRow).GetCell(4).SetCellValue(metaText); // Alarm if (!registro.Alarma.HasValue) { alarmText = string.Empty; } else { alarmText = string.Format(CultureInfo.InvariantCulture, "{0} {1:#,##0.00}", alarmText, registro.Alarma); } if (sh.GetRow(countRow).GetCell(5) == null) { sh.GetRow(countRow).CreateCell(5); } sh.GetRow(countRow).GetCell(5).SetCellValue(alarmText); // Responsible if (sh.GetRow(countRow).GetCell(6) == null) { sh.GetRow(countRow).CreateCell(6); } sh.GetRow(countRow).GetCell(6).SetCellValue(registro.Responsible.FullName); countRow++; } sh.SetColumnWidth(0, 4000); sh.SetColumnWidth(1, 4000); sh.SetColumnWidth(2, 4000); sh.SetColumnWidth(3, 10000); sh.SetColumnWidth(4, 8400); sh.SetColumnWidth(5, 8400); sh.SetColumnWidth(6, 8400); if (!path.EndsWith("\\")) { path += "\\Temp\\"; } else { path += "Temp\\"; } using (var fs = new FileStream(string.Format("{0}{1}", path, fileName), FileMode.Create, FileAccess.Write)) { wb.Write(fs); } res.SetSuccess(string.Format("/Temp/{0}", fileName)); return(res); }