private static void AddSampleHdr(ref Document document, ListGrowerTareItem hdrItem, int cropYear, DailyGrowerTareDetailEvent pgEvent) { PdfPTable table = PdfReports.CreateTable(_primaryTableLayout, 1); PdfReports.AddText2Table(table, "Delivery Date", _normalFont); PdfReports.AddText2Table(table, hdrItem.Delivery_Date, _normalFont); PdfReports.AddText2Table(table, "1st Net Lbs", _normalFont); PdfReports.AddText2Table(table, hdrItem.First_Net_Pounds.ToString(), _normalFont); PdfReports.AddText2Table(table, " ", _normalFont); PdfReports.AddText2Table(table, "% Sugar", _normalFont); PdfReports.AddText2Table(table, hdrItem.Sugar_Content.ToString("0.00"), _normalFont); PdfReports.AddText2Table(table, " ", _normalFont); PdfReports.AddText2Table(table, "Station No", _normalFont); PdfReports.AddText2Table(table, hdrItem.Delivery_Station_No, _normalFont); PdfReports.AddText2Table(table, "Tare Lbs", _normalFont); PdfReports.AddText2Table(table, hdrItem.Tare_Pounds.ToString(), _normalFont); PdfReports.AddText2Table(table, hdrItem.Tare.ToString("0.00"), _normalFont); PdfReports.AddText2Table(table, "SLM", _normalFont); PdfReports.AddText2Table(table, hdrItem.SLM_Pct.ToString("0.0000"), _normalFont); PdfReports.AddText2Table(table, " ", _normalFont); PdfReports.AddText2Table(table, "Station Name", _normalFont); PdfReports.AddText2Table(table, hdrItem.Delivery_Station_Name, _normalFont); PdfReports.AddText2Table(table, "Final Net Lbs", _normalFont); PdfReports.AddText2Table(table, hdrItem.Final_Net_Pounds.ToString(), _normalFont); PdfReports.AddText2Table(table, " ", _normalFont); PdfReports.AddText2Table(table, "Lbs Extractable Sugar/Ton", _normalFont, 2); PdfReports.AddText2Table(table, hdrItem.ExSugarPerTon.ToString(), _normalFont); PdfReports.AddText2Table(table, " ", _labelFont, _primaryTableLayout.Length); PdfReports.AddTableNoSplit(document, pgEvent, table); }
public static void ReportBuilder(List <ListGrowerTareItem> hdrList, int cropYear, bool isPosted, bool isPreview, bool isHardCopy, bool isEmail, bool isFax, FileStream fs, string filePath) { const string METHOD_NAME = "ReportBuilder"; const int RESET_FLAG = 0; Document document = null; PdfWriter writer = null; DailyGrowerTareDetailEvent pgEvent = null; List <ListGrowerTareItem> emailFaxList = null; List <ListGrowerTareItem> hardCopyList = null; int lastContractID = 0, lastStationID = 0; int index = 0; string firstDeliveryDate = "", busName = "", address1 = "", address2 = "", CSZ = "", emailAddress = "", faxNumber = ""; string rptTitle = "Western Sugar Cooperative\nDaily Grower Tare Detail Report"; try { if (!isPreview) { emailFaxList = hdrList.FindAll(item => item.RptType == "E" || item.RptType == "F"); hardCopyList = hdrList.FindAll(item => item.RptType == "M"); } else { // In preview mode we're going to lump these all together and print them. hardCopyList = hdrList; } using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BeetConn"].ToString())) { if (emailFaxList != null && emailFaxList.Count > 0) { GrowerTareReportEmailFax(conn, filePath, ref emailFaxList, rptTitle, cropYear); } for (index = 0; index < hardCopyList.Count; index++) { ListGrowerTareItem hdrItem = hardCopyList[index]; //---------------------------------------------------------------- // Changed contract or station, start a new print out. //---------------------------------------------------------------- if (hdrItem.ContractID != lastContractID || hdrItem.Delivery_Station_ID != lastStationID) { if (document == null) { GetAddressInfo(conn, hdrItem.ContractID, out busName, out address1, out address2, out CSZ, out emailAddress, out faxNumber); // IF YOU CHANGE MARGINS, CHANGE YOUR TABLE LAYOUTS !!! // *** US LETTER: 612 X 792 *** document = new Document(PortraitPageSize.PgPageSize, PortraitPageSize.PgLeftMargin, PortraitPageSize.PgRightMargin, PortraitPageSize.PgTopMargin, PortraitPageSize.PgBottomMargin); // we create a writer that listens to the document // and directs a PDF-stream to a file writer = PdfWriter.GetInstance(document, fs); // Attach my override event handler(s) pgEvent = new DailyGrowerTareDetailEvent(); pgEvent.FillEvent(hdrItem.Contract_No, busName, hdrItem.Delivery_Factory_No, address1, address2, CSZ, RESET_FLAG, rptTitle + (!isPreview ? "" : " - " + hdrItem.RptType)); writer.PageEvent = pgEvent; // Open the document document.Open(); } if (lastContractID != 0) { //-------------------------------------------------------------------------- // Display Truck information for the first delivery day. //-------------------------------------------------------------------------- int loadCount = 0; //if (nextDeliveryDate == firstDeliveryDate) { try { // Get the truck data. SqlParameter[] spParams = null; using ( SqlDataReader drTrucks = WSCReportsExec.GrowerDetailReportASH(conn, lastContractID, lastStationID, firstDeliveryDate, ref spParams)) { rptDailyGrowerTareDetail.AddTruckDetail(ref document, drTrucks, pgEvent); drTrucks.Close(); loadCount = Convert.ToInt32(spParams[3].Value); if (loadCount > 0) { rptDailyGrowerTareDetail.AddTruckTotals(ref document, loadCount.ToString(), Convert.ToInt32(spParams[4].Value).ToString("#,##0"), Convert.ToInt32(spParams[5].Value).ToString("#,##0"), pgEvent); } } } catch { hardCopyList[index - 1].Success += "Fail: Truck Detail "; } GetAddressInfo(conn, hdrItem.ContractID, out busName, out address1, out address2, out CSZ, out emailAddress, out faxNumber); // New Page !: in Preview mode, append the report type to the title of the report. pgEvent.FillEvent(hdrItem.Contract_No, busName, hdrItem.Delivery_Factory_No, address1, address2, CSZ, RESET_FLAG, rptTitle + (!isPreview ? "" : " - " + hdrItem.RptType)); document.NewPage(); } firstDeliveryDate = hdrItem.Delivery_Date; lastStationID = hdrItem.Delivery_Station_ID; lastContractID = hdrItem.ContractID; } try { AddSampleHdr(ref document, hdrItem, cropYear, pgEvent); using ( SqlDataReader drSamples = WSCReportsExec.GrowerDetailReportTares(conn, hdrItem.ContractID, hdrItem.Delivery_Date)) { rptDailyGrowerTareDetail.AddSampleDetail(ref document, drSamples, pgEvent); } } catch { hardCopyList[index].Success += "Fail: Sample Detail "; } } if (lastContractID != 0) { //-------------------------------------------------------------------------- // Display Truck information for the first delivery day. //-------------------------------------------------------------------------- int loadCount = 0; try { // Get the truck data. SqlParameter[] spParams = null; using (SqlDataReader drTrucks = WSCReportsExec.GrowerDetailReportASH(conn, lastContractID, lastStationID, firstDeliveryDate, ref spParams)) { rptDailyGrowerTareDetail.AddTruckDetail(ref document, drTrucks, pgEvent); drTrucks.Close(); loadCount = Convert.ToInt32(spParams[3].Value); if (loadCount > 0) { rptDailyGrowerTareDetail.AddTruckTotals(ref document, loadCount.ToString(), Convert.ToInt32(spParams[4].Value).ToString("#,##0"), Convert.ToInt32(spParams[5].Value).ToString("#,##0"), pgEvent); } } } catch { hardCopyList[index - 1].Success += "Fail: Truck Detail "; } } } //------------------------------------ // Print a Process Summary //------------------------------------ if (document != null && writer != null) { pgEvent.IsSummary = true; document.NewPage(); PdfPTable procSumTab = null; PrintSummary(document, ref procSumTab, hdrList, isPreview); PdfReports.AddTableNoSplit(document, pgEvent, procSumTab); } else { document = new Document(PortraitPageSize.PgPageSize, PortraitPageSize.PgLeftMargin, PortraitPageSize.PgRightMargin, PortraitPageSize.PgTopMargin, PortraitPageSize.PgBottomMargin); // we create a writer that listens to the document // and directs a PDF-stream to a file writer = PdfWriter.GetInstance(document, fs); // Attach my override event handler(s) pgEvent = new DailyGrowerTareDetailEvent(); pgEvent.IsSummary = true; writer.PageEvent = pgEvent; // Open the document document.Open(); PdfPTable procSumTab = null; PrintSummary(document, ref procSumTab, hdrList, isPreview); PdfReports.AddTableNoSplit(document, pgEvent, procSumTab); } // ====================================================== // Close document // ====================================================== if (document != null) { pgEvent.IsDocumentClosing = true; document.Close(); document = null; } } catch (Exception ex) { string errMsg = "document is null: " + (document == null).ToString() + "; " + "writer is null: " + (writer == null).ToString(); CException wscex = new CException(METHOD_NAME + errMsg, ex); throw (wscex); } finally { if (document != null) { pgEvent.IsDocumentClosing = true; document.Close(); } if (writer != null) { writer.Close(); } } }
private static void GrowerTareReportEmailFax(SqlConnection conn, string filePath, ref List <ListGrowerTareItem> emailList, string rptTitle, int cropYear) { const string METHOD_NAME = "GrowerTareReportEmailFax"; const string SEND_RPT_SUBJECT = "WESTERN SUGAR COOPERATIVE - Daily Grower Tare Detail Report"; const int RESET_FLAG = 0; FileStream fs = null; Document document = null; PdfWriter writer = null; DailyGrowerTareDetailEvent pgEvent = null; int lastContractID = 0, lastStationID = 0; int index = 0; string destinationFile = "", lastRptType = ""; string firstDeliveryDate = "", busName = "", address1 = "", address2 = "", CSZ = "", emailAddress = "", faxNumber = ""; try { for (index = 0; index < emailList.Count; index++) { ListGrowerTareItem hdrItem = emailList[index]; //---------------------------------------------------------------- // Changed contract or station, start a new print out. //---------------------------------------------------------------- if (hdrItem.ContractID != lastContractID || hdrItem.Delivery_Station_ID != lastStationID) { if (document == null) { GetAddressInfo(conn, hdrItem.ContractID, out busName, out address1, out address2, out CSZ, out emailAddress, out faxNumber); // IF YOU CHANGE MARGINS, CHANGE YOUR TABLE LAYOUTS !!! // *** US LETTER: 612 X 792 *** document = new Document(PortraitPageSize.PgPageSize, PortraitPageSize.PgLeftMargin, PortraitPageSize.PgRightMargin, PortraitPageSize.PgTopMargin, PortraitPageSize.PgBottomMargin); destinationFile = filePath.Substring(0, filePath.Length - 4) + "_" + hdrItem.Delivery_Station_No + "_" + hdrItem.Contract_No.ToString() + ".pdf"; // we create a writer that listens to the document // and directs a PDF-stream to a file if (File.Exists(destinationFile)) { File.Delete(destinationFile); } fs = new FileStream(destinationFile, FileMode.Create, FileAccess.Write, FileShare.Read); writer = PdfWriter.GetInstance(document, fs); // Attach my override event handler(s) pgEvent = new DailyGrowerTareDetailEvent(); pgEvent.FillEvent(hdrItem.Contract_No, busName, hdrItem.Delivery_Factory_No, address1, address2, CSZ, RESET_FLAG, rptTitle); writer.PageEvent = pgEvent; // Open the document document.Open(); } if (lastContractID != 0) { //-------------------------------------------------------------------------- // Display Truck information for the first delivery day. //-------------------------------------------------------------------------- int loadCount = 0; try { // Get the truck data. SqlParameter[] spParams = null; using ( SqlDataReader drTrucks = WSCReportsExec.GrowerDetailReportASH(conn, lastContractID, lastStationID, firstDeliveryDate, ref spParams)) { rptDailyGrowerTareDetail.AddTruckDetail(ref document, drTrucks, pgEvent); drTrucks.Close(); loadCount = Convert.ToInt32(spParams[3].Value); if (loadCount > 0) { rptDailyGrowerTareDetail.AddTruckTotals(ref document, loadCount.ToString(), Convert.ToInt32(spParams[4].Value).ToString("#,##0"), Convert.ToInt32(spParams[5].Value).ToString("#,##0"), pgEvent); } } } catch { emailList[index - 1].Success += "Fail: Truck Detail "; } // Save File & Send File // ====================================================== // Close document and write effectively saves the file // ====================================================== if (document != null) { if (pgEvent != null) { pgEvent.IsDocumentClosing = true; } document.Close(); document = null; } if (writer != null) { writer.Close(); writer = null; } fs.Close(); fs = null; // Send Report File if (lastRptType == "E") { if (!SendEmailReport(SEND_RPT_SUBJECT, ConfigurationManager.AppSettings["email.target.employeeServiceFrom"].ToString(), emailAddress, destinationFile)) { emailList[index - 1].Success += "Fail: Email "; } } else { // Send FAX if (!SendFaxReport(SEND_RPT_SUBJECT, ConfigurationManager.AppSettings["email.target.employeeServiceFrom"].ToString(), "", faxNumber, busName, "", busName, destinationFile)) { emailList[index - 1].Success += "Fail: Fax "; } } GetAddressInfo(conn, hdrItem.ContractID, out busName, out address1, out address2, out CSZ, out emailAddress, out faxNumber); // New document needed. document = new Document(PortraitPageSize.PgPageSize, PortraitPageSize.PgLeftMargin, PortraitPageSize.PgRightMargin, PortraitPageSize.PgTopMargin, PortraitPageSize.PgBottomMargin); destinationFile = filePath.Substring(0, filePath.Length - 4) + "_" + hdrItem.Delivery_Station_No + "_" + hdrItem.Contract_No.ToString() + ".pdf"; // we create a writer that listens to the document // and directs a PDF-stream to a file if (File.Exists(destinationFile)) { File.Delete(destinationFile); } fs = new FileStream(destinationFile, FileMode.Create, FileAccess.Write, FileShare.Read); writer = PdfWriter.GetInstance(document, fs); // Attach my override event handler(s) pgEvent = new DailyGrowerTareDetailEvent(); pgEvent.FillEvent(hdrItem.Contract_No, busName, hdrItem.Delivery_Factory_No, address1, address2, CSZ, RESET_FLAG, rptTitle); writer.PageEvent = pgEvent; // Open the document document.Open(); } firstDeliveryDate = hdrItem.Delivery_Date; lastStationID = hdrItem.Delivery_Station_ID; lastContractID = hdrItem.ContractID; lastRptType = hdrItem.RptType; } try { AddSampleHdr(ref document, hdrItem, cropYear, pgEvent); using ( SqlDataReader drSamples = WSCReportsExec.GrowerDetailReportTares(conn, hdrItem.ContractID, hdrItem.Delivery_Date)) { rptDailyGrowerTareDetail.AddSampleDetail(ref document, drSamples, pgEvent); } } catch { emailList[index].Success += "Fail: Sample Detail "; } } if (lastContractID != 0) { //-------------------------------------------------------------------------- // Display Truck information for the first delivery day. //-------------------------------------------------------------------------- int loadCount = 0; try { // Get the truck data. SqlParameter[] spParams = null; using (SqlDataReader drTrucks = WSCReportsExec.GrowerDetailReportASH(conn, lastContractID, lastStationID, firstDeliveryDate, ref spParams)) { rptDailyGrowerTareDetail.AddTruckDetail(ref document, drTrucks, pgEvent); drTrucks.Close(); loadCount = Convert.ToInt32(spParams[3].Value); if (loadCount > 0) { rptDailyGrowerTareDetail.AddTruckTotals(ref document, loadCount.ToString(), Convert.ToInt32(spParams[4].Value).ToString("#,##0"), Convert.ToInt32(spParams[5].Value).ToString("#,##0"), pgEvent); } } } catch { emailList[index - 1].Success += "Fail: Truck Detail "; } } // Save File & Send File // ====================================================== // Close document and write effectively saves the file // ====================================================== if (document != null) { if (pgEvent != null) { pgEvent.IsDocumentClosing = true; } document.Close(); document = null; } if (writer != null) { writer.Close(); writer = null; } fs.Close(); fs = null; // Send Report File if (lastRptType == "E") { if (!SendEmailReport(SEND_RPT_SUBJECT, ConfigurationManager.AppSettings["email.target.employeeServiceFrom"].ToString(), emailAddress, destinationFile)) { emailList[index - 1].Success += "Fail: Email "; } } else { // Send FAX if (!SendFaxReport(SEND_RPT_SUBJECT, ConfigurationManager.AppSettings["email.target.employeeServiceFrom"].ToString(), "", faxNumber, busName, "", busName, destinationFile)) { emailList[index - 1].Success += "Fail: FAx "; } } } catch (Exception ex) { string errMsg = "document is null: " + (document == null).ToString() + "; " + "writer is null: " + (writer == null).ToString(); CException wscex = new CException(METHOD_NAME + errMsg, ex); throw (wscex); } finally { if (document != null) { pgEvent.IsDocumentClosing = true; document.Close(); } if (writer != null) { writer.Close(); } } }