public static ActionResult PDF( int companyId, bool externa, string from, bool interna, bool provider, bool status0, bool status1, bool status2, bool status3, bool status4, bool status5, string to, string filterText, string listOrder) { var source = "AuditoryExportList"; 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); string path = HttpContext.Current.Request.PhysicalApplicationPath; if (!path.EndsWith(@"\", StringComparison.OrdinalIgnoreCase)) { path = string.Format(CultureInfo.InvariantCulture, @"{0}\", path); } var formatedDescription = ToolsPdf.NormalizeFileName(company.Name); string fileName = string.Format( CultureInfo.InvariantCulture, @"{0}_{1}_{2:yyyyMMddhhmmss}.pdf", Dictionary["Item_Auditories"], formatedDescription, DateTime.Now); 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, company.Id), IssusLogo = string.Format(CultureInfo.InvariantCulture, "{0}issus.png", path), Date = string.Format(CultureInfo.InvariantCulture, "{0:dd/MM/yyyy}", DateTime.Now), CreatedBy = user.UserName, CompanyId = company.Id, CompanyName = company.Name, Title = Dictionary["Item_Auditories"].ToUpperInvariant() }; pdfDoc.Open(); var titleTable = new iTSpdf.PdfPTable(1); titleTable.SetWidths(new float[] { 50f }); titleTable.AddCell(new iTSpdf.PdfPCell(new iTS.Phrase(string.Format(CultureInfo.InvariantCulture, "{0} - {1}", Dictionary["Item_EquipmentList"], company.Name), ToolsPdf.LayoutFonts.TitleFont)) { HorizontalAlignment = iTS.Element.ALIGN_CENTER, Border = iTS.Rectangle.NO_BORDER }); //------ CRITERIA var criteriatable = new iTSpdf.PdfPTable(4) { WidthPercentage = 100 }; criteriatable.SetWidths(new float[] { 10f, 50f, 10f, 80f }); #region texts string criteriaProccess = Dictionary["Common_All_Male_Plural"]; string periode = string.Empty; if (!string.IsNullOrEmpty(from) && string.IsNullOrEmpty(to)) { periode = Dictionary["Item_Incident_List_Filter_From"] + " " + from; } else if (string.IsNullOrEmpty(from) && !string.IsNullOrEmpty(to)) { periode = Dictionary["Item_Incident_List_Filter_To"] + " " + to; } else if (!string.IsNullOrEmpty(from) && !string.IsNullOrEmpty(to)) { periode = from + " - " + to; } else { periode = Dictionary["Common_All_Male"]; } string typetext = string.Empty; bool firtsType = false; if (interna) { typetext += Dictionary["Item_Adutory_Type_Label_0"]; firtsType = false; } if (externa) { typetext += firtsType ? string.Empty : ", "; typetext += Dictionary["Item_Adutory_Type_Label_1"]; firtsType = false; } if (provider) { typetext += firtsType ? string.Empty : ", "; typetext += Dictionary["Item_Adutory_Type_Label_2"]; } if (firtsType) { typetext = Dictionary["Common_All_Female_Plural"]; } string statustext = string.Empty; bool firstStatus = false; if (status0) { statustext += Dictionary["Item_Adutory_Status_Label_0"]; firstStatus = false; } if (status1) { statustext += firstStatus ? string.Empty : ", "; statustext += Dictionary["Item_Adutory_Status_Label_1"]; firstStatus = false; } if (status2) { statustext += firstStatus ? string.Empty : ", "; statustext += Dictionary["Item_Adutory_Status_Label_2"]; firstStatus = false; } if (status3) { statustext += firstStatus ? string.Empty : ", "; statustext += Dictionary["Item_Adutory_Status_Label_3"]; firstStatus = false; } if (status4) { statustext += firstStatus ? string.Empty : ", "; statustext += Dictionary["Item_Adutory_Status_Label_4"]; firstStatus = false; } if (status5) { statustext += firstStatus ? string.Empty : ", "; statustext += Dictionary["Item_Adutory_Status_Label_5"]; } if (firstStatus) { statustext = Dictionary["Common_All_Male_Plural"]; } #endregion criteriatable.AddCell(ToolsPdf.CriteriaCellLabel(Dictionary["Common_Period"])); criteriatable.AddCell(ToolsPdf.CriteriaCellData(periode)); criteriatable.AddCell(ToolsPdf.CriteriaCellLabel(Dictionary["Item_Auditory_Filter_Type"])); criteriatable.AddCell(ToolsPdf.CriteriaCellData(typetext)); criteriatable.AddCell(ToolsPdf.CriteriaCellLabel(Dictionary["Item_Auditory_Filter_Status"])); criteriatable.AddCell(ToolsPdf.CriteriaCellData(statustext)); if (!string.IsNullOrEmpty(filterText)) { criteriatable.AddCell(ToolsPdf.CriteriaCellLabel(Dictionary["Common_PDF_Filter_Contains"])); criteriatable.AddCell(ToolsPdf.CriteriaCellData(filterText)); } else { criteriatable.AddCell(ToolsPdf.CriteriaCellData(string.Empty)); criteriatable.AddCell(ToolsPdf.CriteriaCellData(string.Empty)); } pdfDoc.Add(criteriatable); //--------------------------- var tableWidths = new float[] { 40f, 10f, 10f, 10f, 10f, 10f }; var table = new iTSpdf.PdfPTable(tableWidths.Length) { WidthPercentage = 100, HorizontalAlignment = 1, SpacingBefore = 20f, SpacingAfter = 30f }; table.SetWidths(tableWidths); table.AddCell(ToolsPdf.HeaderCell(Dictionary["Item_Auditory_ListHeader_Name"])); table.AddCell(ToolsPdf.HeaderCell(Dictionary["Item_Auditory_Filter_Type"])); table.AddCell(ToolsPdf.HeaderCell(Dictionary["Item_Auditory_ListHeader_Status"])); table.AddCell(ToolsPdf.HeaderCell(Dictionary["Item_Auditory_ListHeader_Planned"])); table.AddCell(ToolsPdf.HeaderCell(Dictionary["Item_Auditory_ListHeader_Closed"])); table.AddCell(ToolsPdf.HeaderCell(Dictionary["Item_Auditory_ListHeader_Ammount"])); int cont = 0; var data = new List <Auditory>(); using (var cmd = new SqlCommand("Auditory_Filter")) { using (var cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["cns"].ConnectionString)) { cmd.Connection = cnn; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(DataParameter.Input("@CompanyId", companyId)); cmd.Parameters.Add(DataParameter.Input("@From", from)); cmd.Parameters.Add(DataParameter.Input("@To", to)); cmd.Parameters.Add(DataParameter.Input("@TypeInterna", interna)); cmd.Parameters.Add(DataParameter.Input("@TypeExterna", externa)); cmd.Parameters.Add(DataParameter.Input("@TypeProveedor", provider)); cmd.Parameters.Add(DataParameter.Input("@Status0", status0)); cmd.Parameters.Add(DataParameter.Input("@Status1", status1)); cmd.Parameters.Add(DataParameter.Input("@Status2", status2)); cmd.Parameters.Add(DataParameter.Input("@Status3", status3)); cmd.Parameters.Add(DataParameter.Input("@Status4", status4)); cmd.Parameters.Add(DataParameter.Input("@Status5", status5)); try { cmd.Connection.Open(); using (var rdr = cmd.ExecuteReader()) { while (rdr.Read()) { var newAuditory = new Auditory { Id = rdr.GetInt64(ColumnsAuditoryFilter.Id), Description = rdr.GetString(ColumnsAuditoryFilter.Nombre), Amount = rdr.GetDecimal(ColumnsAuditoryFilter.Amount), Status = rdr.GetInt32(ColumnsAuditoryFilter.Status), Type = rdr.GetInt32(ColumnsAuditoryFilter.Type) }; if (!rdr.IsDBNull(ColumnsAuditoryFilter.PlannedOn)) { newAuditory.PlannedOn = rdr.GetDateTime(ColumnsAuditoryFilter.PlannedOn); } if (!rdr.IsDBNull(ColumnsAuditoryFilter.ValidatedOn)) { newAuditory.ValidatedOn = rdr.GetDateTime(ColumnsAuditoryFilter.ValidatedOn); } data.Add(newAuditory); } } } catch (SqlException ex) { ExceptionManager.Trace(ex, source); } catch (FormatException ex) { ExceptionManager.Trace(ex, source); } catch (NullReferenceException ex) { ExceptionManager.Trace(ex, source); } finally { if (cmd.Connection.State != ConnectionState.Closed) { cmd.Connection.Close(); } } } } switch (listOrder.ToUpperInvariant()) { default: case "TH1|ASC": data = data.OrderBy(d => d.Status).ToList(); break; case "TH1|DESC": data = data.OrderByDescending(d => d.Status).ToList(); break; case "TH2|ASC": data = data.OrderBy(d => d.Description).ToList(); break; case "TH2|DESC": data = data.OrderByDescending(d => d.Description).ToList(); break; case "TH3|ASC": data = data.OrderBy(d => d.PlannedOn).ToList(); break; case "TH3|DESC": data = data.OrderByDescending(d => d.PlannedOn).ToList(); break; case "TH4|ASC": data = data.OrderBy(d => d.ValidatedOn).ToList(); break; case "TH4|DESC": data = data.OrderByDescending(d => d.ValidatedOn).ToList(); break; case "TH5|ASC": data = data.OrderBy(d => d.Amount).ToList(); break; case "TH5|DESC": data = data.OrderByDescending(d => d.Amount).ToList(); break; } foreach (var auditory in data) { if (!string.IsNullOrEmpty(filterText)) { var match = auditory.Description; if (match.IndexOf(filterText, StringComparison.OrdinalIgnoreCase) == -1) { continue; } } cont++; string statustextCell = string.Empty; switch (auditory.Status) { case 0: statustextCell = Dictionary["Item_Adutory_Status_Label_0"]; break; case 1: statustextCell = Dictionary["Item_Adutory_Status_Label_1"]; break; case 2: statustextCell = Dictionary["Item_Adutory_Status_Label_2"]; break; case 3: statustextCell = Dictionary["Item_Adutory_Status_Label_3"]; break; case 4: statustextCell = Dictionary["Item_Adutory_Status_Label_4"]; break; case 5: statustextCell = Dictionary["Item_Adutory_Status_Label_5"]; break; } string typetextCell = string.Empty; switch (auditory.Type) { case 0: typetextCell = Dictionary["Item_Adutory_Type_Label_0"]; break; case 1: typetextCell = Dictionary["Item_Adutory_Type_Label_1"]; break; case 2: typetextCell = Dictionary["Item_Adutory_Type_Label_2"]; break; } table.AddCell(ToolsPdf.DataCell(auditory.Description)); table.AddCell(ToolsPdf.DataCellCenter(typetextCell)); table.AddCell(ToolsPdf.DataCellCenter(statustextCell)); table.AddCell(ToolsPdf.DataCellCenter(auditory.PlannedOn)); table.AddCell(ToolsPdf.DataCellCenter(auditory.ValidatedOn)); table.AddCell(ToolsPdf.DataCellMoney(auditory.Amount)); } 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, Padding = 6f, PaddingTop = 4f, Colspan = 4 }); table.AddCell(new iTSpdf.PdfPCell(new iTS.Phrase(string.Empty, ToolsPdf.LayoutFonts.Times)) { Border = iTS.Rectangle.TOP_BORDER, Colspan = 4 }); pdfDoc.Add(table); pdfDoc.CloseDocument(); res.SetSuccess(string.Format(CultureInfo.InvariantCulture, @"{0}Temp/{1}", ConfigurationManager.AppSettings["siteUrl"], fileName)); return(res); }
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 PDF( int companyId, int indicatorType, DateTime?from, DateTime?to, int?processId, int?processTypeId, int?targetId, int status, 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); string path = HttpContext.Current.Request.PhysicalApplicationPath; if (!path.EndsWith(@"\", StringComparison.OrdinalIgnoreCase)) { path = string.Format(CultureInfo.InvariantCulture, @"{0}\", path); } var formatedDescription = ToolsPdf.NormalizeFileName(company.Name); string fileName = string.Format( CultureInfo.InvariantCulture, @"{0}_{1}_{2:yyyyMMddhhmmss}.pdf", dictionary["Item_Indicador_List"], formatedDescription, DateTime.Now); 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, company.Id), IssusLogo = string.Format(CultureInfo.InvariantCulture, "{0}issus.png", path), Date = string.Format(CultureInfo.InvariantCulture, "{0:dd/MM/yyyy}", DateTime.Now), CreatedBy = user.UserName, CompanyId = company.Id, CompanyName = company.Name, Title = dictionary["Item_Indicador_List"].ToUpperInvariant() }; pdfDoc.Open(); var backgroundColor = new iTS.BaseColor(225, 225, 225); var titleTable = new iTSpdf.PdfPTable(1); titleTable.SetWidths(new float[] { 50f }); titleTable.AddCell(new iTSpdf.PdfPCell(new iTS.Phrase(string.Format(CultureInfo.InvariantCulture, "{0} - {1}", dictionary["Item_EquipmentList"], company.Name), ToolsPdf.LayoutFonts.TitleFont)) { HorizontalAlignment = iTS.Element.ALIGN_CENTER, Border = iTS.Rectangle.NO_BORDER }); var table = new iTSpdf.PdfPTable(6) { WidthPercentage = 100, HorizontalAlignment = 1, SpacingBefore = 20f, SpacingAfter = 30f }; //------ CRITERIA var criteriatable = new iTSpdf.PdfPTable(6) { WidthPercentage = 100 }; criteriatable.SetWidths(new float[] { 20f, 50f, 25f, 50f, 20f, 150f }); var criteriaBlank = new iTSpdf.PdfPCell(new iTS.Phrase(".", ToolsPdf.LayoutFonts.Times)) { Border = ToolsPdf.BorderNone, HorizontalAlignment = iTS.Element.ALIGN_LEFT, Padding = ToolsPdf.PaddingTopTableCell, PaddingTop = ToolsPdf.PaddingTopCriteriaCell }; string periode = string.Empty; if (from.HasValue && to == null) { periode = string.Format(CultureInfo.InvariantCulture, @"{0} {1:dd/MM/yyyy}", dictionary["Item_IncidentAction_List_Filter_From"], from); } else if (from == null && to.HasValue) { periode = string.Format(CultureInfo.InvariantCulture, @"{0} {1:dd/MM/yyyy}", dictionary["Item_IncidentAction_List_Filter_To"], to); } else if (from.HasValue && to.HasValue) { periode = string.Format(CultureInfo.InvariantCulture, @"{0:dd/MM/yyyy} {1:dd/MM/yyyy}", from, to); } else { periode = dictionary["Common_All_Male"]; } criteriatable.AddCell(ToolsPdf.CriteriaCellLabel(dictionary["Common_Period"])); criteriatable.AddCell(new iTSpdf.PdfPCell(new iTS.Phrase(periode, ToolsPdf.LayoutFonts.Times)) { Border = ToolsPdf.BorderNone, HorizontalAlignment = iTS.Element.ALIGN_LEFT, Padding = ToolsPdf.PaddingTopTableCell, PaddingTop = ToolsPdf.PaddingTopCriteriaCell }); criteriatable.AddCell(ToolsPdf.CriteriaCellLabel(dictionary["Item_IncidentAction_Header_Status"])); string statusText = dictionary["Common_All"]; if (status == 1) { statusText = dictionary["Item_ObjetivoAction_List_Filter_ShowActive"]; } if (status == 2) { statusText = dictionary["Item_ObjetivoAction_List_Filter_ShowClosed"]; } criteriatable.AddCell(ToolsPdf.CriteriaCellData(statusText)); criteriatable.AddCell(criteriaBlank); criteriatable.AddCell(criteriaBlank); criteriatable.AddCell(ToolsPdf.CriteriaCellLabel(dictionary["Item_Indicaddor_Filter_TypeLabel"])); string indicadorTypeText = string.Empty; switch (indicatorType) { case 0: indicadorTypeText = dictionary["Common_All_Male_Plural"]; break; case 1: indicadorTypeText = dictionary["Item_Indicaddor_Filter_TypeProcess"]; break; case 2: indicadorTypeText = dictionary["Item_Indicaddor_Filter_TypeObjetivo"]; break; default: indicadorTypeText = dictionary["Common_All_Male_Plural"]; break; } criteriatable.AddCell(ToolsPdf.CriteriaCellData(indicadorTypeText)); switch (indicatorType) { case 1: string processText = dictionary["Common_All_Male_Plural"]; if (processId.HasValue) { processText = new Process(processId.Value, companyId).Description; } string processTypeCriteriaText = dictionary["Common_All_Male_Plural"]; if (processTypeId.HasValue) { switch (processTypeId.Value) { case 1: processTypeCriteriaText = dictionary["Item_ProcessType_Name_Principal"]; break; case 2: processTypeCriteriaText = dictionary["Item_ProcessType_Name_Support"]; break; case 3: processTypeCriteriaText = dictionary["Item_ProcessType_Name_Estrategic"]; break; default: processTypeCriteriaText = string.Empty; foreach (var t in ProcessType.ObtainByCompany(companyId, dictionary)) { if (t.Id == processTypeId) { processTypeCriteriaText = t.Description; } } break; } } criteriatable.AddCell(ToolsPdf.CriteriaCellLabel(dictionary["Item_Process"])); criteriatable.AddCell(new iTSpdf.PdfPCell(new iTS.Phrase(processText, ToolsPdf.LayoutFonts.Times)) { Border = ToolsPdf.BorderNone, HorizontalAlignment = iTS.Element.ALIGN_LEFT, Padding = ToolsPdf.PaddingTopTableCell, PaddingTop = ToolsPdf.PaddingTopCriteriaCell }); criteriatable.AddCell(ToolsPdf.CriteriaCellLabel(dictionary["Item_ProcessType"])); criteriatable.AddCell(new iTSpdf.PdfPCell(new iTS.Phrase(processTypeCriteriaText, ToolsPdf.LayoutFonts.Times)) { Border = ToolsPdf.BorderNone, HorizontalAlignment = iTS.Element.ALIGN_LEFT, Padding = ToolsPdf.PaddingTopTableCell, PaddingTop = ToolsPdf.PaddingTopCriteriaCell }); break; case 2: string objetivoText = dictionary["Common_All_Male_Plural"]; if (targetId.HasValue) { objetivoText = Objetivo.ById(targetId.Value, companyId).Name; } criteriatable.AddCell(ToolsPdf.CriteriaCellLabel(dictionary["Item_Objetivo"])); criteriatable.AddCell(new iTSpdf.PdfPCell(new iTS.Phrase(objetivoText, ToolsPdf.LayoutFonts.Times)) { Border = ToolsPdf.BorderNone, HorizontalAlignment = iTS.Element.ALIGN_LEFT, Padding = ToolsPdf.PaddingTopTableCell, PaddingTop = ToolsPdf.PaddingTopCriteriaCell, Colspan = 3 }); break; default: criteriatable.AddCell(criteriaBlank); criteriatable.AddCell(criteriaBlank); criteriatable.AddCell(criteriaBlank); criteriatable.AddCell(criteriaBlank); break; } pdfDoc.Add(criteriatable); //--------------------------- table.SetWidths(new float[] { 7f, 30f, 10f, 30f, 10f, 10f });; table.AddCell(ToolsPdf.HeaderCell(dictionary["Common_Status"])); table.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Indicador_Header_Description"])); table.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Indicador_Header_StartDate"])); table.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Indicador_Header_Process"])); table.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Indicador_Header_ProcessType"])); table.AddCell(ToolsPdf.HeaderCell(dictionary["Item_Indicador_Header_ObjetivoResponsible"])); var tipoProcesos = ProcessType.ObtainByCompany(company.Id, dictionary); int cont = 0; var data = Indicador.Filter(companyId, indicatorType, from, to, processId, processTypeId, targetId, status).ToList(); foreach (var item in data) { string processTypeText = string.Empty; switch (item.Proceso.ProcessType) { case 1: item.Proceso.Work = dictionary["Item_ProcessType_Name_Principal"]; break; case 2: item.Proceso.Work = dictionary["Item_ProcessType_Name_Support"]; break; case 3: item.Proceso.Work = dictionary["Item_ProcessType_Name_Estrategic"]; break; default: item.Proceso.Work = tipoProcesos.First(tp => tp.Id == item.Proceso.ProcessType).Description; break; } } switch (listOrder.ToUpperInvariant()) { default: case "TH0|ASC": data = data.OrderBy(d => d.Indicador.Description).ToList(); break; case "TH0|DESC": data = data.OrderByDescending(d => d.Indicador.Description).ToList(); break; case "TH1|ASC": data = data.OrderBy(d => d.StartDate).ToList(); break; case "TH1|DESC": data = data.OrderByDescending(d => d.StartDate).ToList(); break; case "TH2|ASC": data = data.OrderBy(d => d.Proceso.Description).ToList(); break; case "TH2|DESC": data = data.OrderByDescending(d => d.Proceso.Description).ToList(); break; case "TH3|ASC": data = data.OrderBy(d => d.Proceso.Work).ToList(); break; case "TH3|DESC": data = data.OrderByDescending(d => d.Proceso.Work).ToList(); break; case "TH4|ASC": data = data.OrderBy(d => d.ObjetivoResponsible).ToList(); break; case "TH4|DESC": data = data.OrderByDescending(d => d.ObjetivoResponsible).ToList(); break; } foreach (var item in data) { table.AddCell(ToolsPdf.DataCell(item.Status == 0 ? dictionary["Common_Active"] : dictionary["Common_Inactive"], ToolsPdf.LayoutFonts.Times)); table.AddCell(ToolsPdf.DataCell(item.Indicador.Description, ToolsPdf.LayoutFonts.Times)); table.AddCell(ToolsPdf.DataCell(item.StartDate, ToolsPdf.LayoutFonts.Times, Rectangle.ALIGN_CENTER)); table.AddCell(ToolsPdf.DataCell(item.Proceso.Description, ToolsPdf.LayoutFonts.Times)); table.AddCell(ToolsPdf.DataCell(item.Proceso.Work, ToolsPdf.LayoutFonts.Times)); table.AddCell(ToolsPdf.DataCell(item.ObjetivoResponsible, ToolsPdf.LayoutFonts.Times)); cont++; } 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 = ToolsPdf.PaddingTopTableCell, PaddingTop = ToolsPdf.PaddingTopCriteriaCell, Colspan = 2 }); table.AddCell(new iTSpdf.PdfPCell(new iTS.Phrase(string.Empty, ToolsPdf.LayoutFonts.Times)) { Border = iTS.Rectangle.TOP_BORDER, BackgroundColor = backgroundColor, Colspan = 4 }); pdfDoc.Add(table); pdfDoc.CloseDocument(); res.SetSuccess(string.Format(CultureInfo.InvariantCulture, @"{0}Temp/{1}", ConfigurationManager.AppSettings["siteUrl"], fileName)); return(res); }
public static ActionResult PDF( int companyId, string from, string to, long rulesId, long processId, int typeId, string listOrder, string filterText) { 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); string path = HttpContext.Current.Request.PhysicalApplicationPath; if (!path.EndsWith(@"\", StringComparison.OrdinalIgnoreCase)) { path = string.Format(CultureInfo.InvariantCulture, @"{0}\", path); } var formatedDescription = ToolsPdf.NormalizeFileName(company.Name); string fileName = string.Format( CultureInfo.InvariantCulture, @"{0}_{1}_{2:yyyyMMddhhmmss}.pdf", Dictionary["Item_BusinessRisks"], formatedDescription, DateTime.Now); 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, company.Id), IssusLogo = string.Format(CultureInfo.InvariantCulture, "{0}issus.png", path), Date = string.Format(CultureInfo.InvariantCulture, "{0:dd/MM/yyyy}", DateTime.Now), CreatedBy = user.UserName, CompanyId = company.Id, CompanyName = company.Name, Title = Dictionary["Item_BusinessRisks"].ToUpperInvariant() }; pdfDoc.Open(); var titleTable = new iTSpdf.PdfPTable(1); titleTable.SetWidths(new float[] { 50f }); titleTable.AddCell(new iTSpdf.PdfPCell(new iTS.Phrase(string.Format(CultureInfo.InvariantCulture, "{0} - {1}", Dictionary["Item_EquipmentList"], company.Name), ToolsPdf.LayoutFonts.TitleFont)) { HorizontalAlignment = iTS.Element.ALIGN_CENTER, Border = iTS.Rectangle.NO_BORDER }); //------ CRITERIA var criteriatable = new iTSpdf.PdfPTable(4) { WidthPercentage = 100 }; criteriatable.SetWidths(new float[] { 10f, 50f, 10f, 80f }); #region texts string criteriaProccess = Dictionary["Common_All_Male_Plural"]; if (processId > 0) { var process = new Process(processId, companyId); if (!string.IsNullOrEmpty(process.Description)) { criteriaProccess = process.Description; } } string periode = string.Empty; if (!string.IsNullOrEmpty(from) && string.IsNullOrEmpty(to)) { periode = Dictionary["Item_Incident_List_Filter_From"] + " " + from; } else if (string.IsNullOrEmpty(from) && !string.IsNullOrEmpty(to)) { periode = Dictionary["Item_Incident_List_Filter_To"] + " " + to; } else if (!string.IsNullOrEmpty(from) && !string.IsNullOrEmpty(to)) { periode = from + " - " + to; } else { periode = Dictionary["Common_All_Male"]; } string typetext = Dictionary["Common_All_Male_Plural"]; if (typeId == 1) { typetext = Dictionary["Item_BusinessRisk_Status_Assumed"]; } if (typeId == 2) { typetext = Dictionary["Item_BusinessRisk_Status_Significant"]; } if (typeId == 3) { typetext = Dictionary["Item_BusinessRisk_Status_NotSignificant"]; } if (typeId == 4) { typetext = Dictionary["Item_BusinessRisk_Status_Unevaluated"]; } string ruleDescriptionBusinessRisk = Dictionary["Common_All_Female_Plural"]; if (rulesId > 0) { var rule = Rules.GetById(companyId, rulesId); if (!string.IsNullOrEmpty(rule.Description)) { ruleDescriptionBusinessRisk = rule.Description; } } #endregion criteriatable.AddCell(ToolsPdf.CriteriaCellLabel(Dictionary["Common_Period"])); criteriatable.AddCell(ToolsPdf.CriteriaCellData(periode)); criteriatable.AddCell(ToolsPdf.CriteriaCellLabel(Dictionary["Item_BusinesRisk_ListHeader_Process"])); criteriatable.AddCell(ToolsPdf.CriteriaCellData(typetext)); criteriatable.AddCell(ToolsPdf.CriteriaCellLabel(Dictionary["Item_BusinesRisk_ListHeader_Rule"])); criteriatable.AddCell(ToolsPdf.CriteriaCellData(ruleDescriptionBusinessRisk)); criteriatable.AddCell(ToolsPdf.CriteriaCellLabel(Dictionary["Item_BusinesRisk_ListHeader_Type"])); criteriatable.AddCell(ToolsPdf.CriteriaCellData(criteriaProccess)); if (!string.IsNullOrEmpty(filterText)) { criteriatable.AddCell(ToolsPdf.CriteriaCellLabel(Dictionary["Common_PDF_Filter_Contains"])); criteriatable.AddCell(ToolsPdf.CriteriaCellData(filterText)); criteriatable.AddCell(ToolsPdf.CriteriaCellData(string.Empty)); criteriatable.AddCell(ToolsPdf.CriteriaCellData(string.Empty)); } pdfDoc.Add(criteriatable); //--------------------------- var table = new iTSpdf.PdfPTable(7) { WidthPercentage = 100, HorizontalAlignment = 1, SpacingBefore = 20f, SpacingAfter = 30f }; table.SetWidths(new float[] { 10f, 10f, 30f, 20f, 20f, 10f, 10f }); table.AddCell(ToolsPdf.HeaderCell(Dictionary["Item_IncidentAction_Header_Type"])); table.AddCell(ToolsPdf.HeaderCell(Dictionary["Item_BusinesRisk_ListHeader_Date"])); table.AddCell(ToolsPdf.HeaderCell(Dictionary["Item_BusinesRisk_ListHeader_Description"])); table.AddCell(ToolsPdf.HeaderCell(Dictionary["Item_BusinesRisk_ListHeader_Process"])); table.AddCell(ToolsPdf.HeaderCell(Dictionary["Item_BusinesRisk_ListHeader_Rule"])); table.AddCell(ToolsPdf.HeaderCell(Dictionary["Item_BusinesRisk_ListHeader_StartValue"])); table.AddCell(ToolsPdf.HeaderCell(Dictionary["Item_BusinesRisk_ListHeader_IPR"])); int cont = 0; var data = HttpContext.Current.Session["BusinessRiskFilterData"] as List <BusinessRiskFilterItem>; switch (listOrder.ToUpperInvariant()) { default: case "TH1|ASC": data = data.OrderBy(d => d.OpenDate).ToList(); break; case "TH1|DESC": data = data.OrderByDescending(d => d.OpenDate).ToList(); break; case "TH2|ASC": data = data.OrderBy(d => d.Description).ToList(); break; case "TH2|DESC": data = data.OrderByDescending(d => d.Description).ToList(); break; case "TH3|ASC": data = data.OrderBy(d => d.Process.Description).ToList(); break; case "TH3|DESC": data = data.OrderByDescending(d => d.Process.Description).ToList(); break; case "TH4|ASC": data = data.OrderBy(d => d.Rule.Description).ToList(); break; case "TH4|DESC": data = data.OrderByDescending(d => d.Rule.Description).ToList(); break; case "TH5|ASC": data = data.OrderBy(d => d.InitialResult).ToList(); break; case "TH5|DESC": data = data.OrderByDescending(d => d.InitialResult).ToList(); break; case "TH6|ASC": data = data.OrderBy(d => d.Rule.Limit).ToList(); break; case "TH6|DESC": data = data.OrderByDescending(d => d.Rule.Limit).ToList(); break; } foreach (var risk in data) { if (!string.IsNullOrEmpty(filterText)) { var match = risk.Description; match += "|" + risk.Rule.Description; if (match.IndexOf(filterText, StringComparison.OrdinalIgnoreCase) == -1) { continue; } } cont++; string typeText = string.Empty; if (risk.Assumed) { typeText = Dictionary["Item_BusinessRisk_Status_Assumed"]; } else if (risk.InitialResult == 0) { typeText = Dictionary["Item_BusinessRisk_Status_Unevaluated"]; } else if (risk.InitialResult < risk.Rule.Limit) { typeText = Dictionary["Item_BusinessRisk_Status_NotSignificant"]; } else { typeText = Dictionary["Item_BusinessRisk_Status_Significant"]; } string initialResultText = risk.InitialResult == 0 ? string.Empty : risk.InitialResult.ToString(); table.AddCell(ToolsPdf.DataCellCenter(typeText)); table.AddCell(ToolsPdf.DataCellCenter(risk.OpenDate)); table.AddCell(ToolsPdf.DataCell(risk.Description)); table.AddCell(ToolsPdf.DataCell(risk.Process.Description)); table.AddCell(ToolsPdf.DataCellCenter(risk.Rule.Description)); table.AddCell(ToolsPdf.DataCellCenter(initialResultText)); table.AddCell(ToolsPdf.DataCellRight(risk.Rule.Limit)); } 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, Padding = 6f, PaddingTop = 4f, Colspan = 4 }); table.AddCell(new iTSpdf.PdfPCell(new iTS.Phrase(string.Empty, ToolsPdf.LayoutFonts.Times)) { Border = iTS.Rectangle.TOP_BORDER, Colspan = 4 }); pdfDoc.Add(table); pdfDoc.CloseDocument(); res.SetSuccess(string.Format(CultureInfo.InvariantCulture, @"{0}Temp/{1}", ConfigurationManager.AppSettings["siteUrl"], fileName)); return(res); }