Example #1
0
        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();
                }
            }
        }
        public static void ReportBuilder(SqlDataReader drHdr, int cropYear, int contractNumber, string deliveryDates, FileStream fs)
        {
            const string METHOD_NAME = "ReportBuilder";
            Document     document    = null;
            PdfWriter    writer      = null;

            DailyGrowerTareDetailEvent pgEvent = null;

            int    resetFlag         = 0;
            string dates             = null;
            int    contractID        = 0;
            string factoryNo         = "";
            string firstDeliveryDate = null;
            string nextDeliveryDate  = null;
            string lastDeliveryDate  = null;
            string busName           = "";
            string address1          = "";
            string address2          = "";
            string CSZ = "";

            string rptTitle = "Western Sugar Cooperative\nDaily Grower Tare Detail Report";

            try {
                if (drHdr.Read())
                {
                    contractID        = drHdr.GetInt32(drHdr.GetOrdinal("ContractID"));
                    factoryNo         = drHdr.GetString(drHdr.GetOrdinal("Delivery_Factory_No"));
                    firstDeliveryDate = drHdr.GetString(drHdr.GetOrdinal("Delivery_Date"));
                    nextDeliveryDate  = firstDeliveryDate;
                }
                else
                {
                    // Warn that we have no data.
                    WSCIEMP.Common.CWarning warn = new WSCIEMP.Common.CWarning("No records matched your report criteria.");
                    throw (warn);
                }

                using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["BeetConn"].ToString())) {
                    // Header Address Info
                    if (contractID > 0)
                    {
                        using (SqlDataReader drAddr = WSCReportsExec.GrowerDetailReportAddr(conn, contractID)) {
                            if (drAddr.Read())
                            {
                                busName  = drAddr.GetString(drAddr.GetOrdinal("Business_Name"));
                                address1 = drAddr.GetString(drAddr.GetOrdinal("Address_1"));
                                address2 = drAddr.GetString(drAddr.GetOrdinal("Address_2"));
                                CSZ      = drAddr.GetString(drAddr.GetOrdinal("City")) + ", " +
                                           drAddr.GetString(drAddr.GetOrdinal("State")) + " " +
                                           drAddr.GetString(drAddr.GetOrdinal("Zip"));
                            }
                        }
                    }

                    // Sample / Tare information
                    // I use nextDeliveryDate as a trick to allow reading drHdr.  Initially,
                    // nextDeliveryDate is loaded and we skip reading drHdr.  Subsequently,
                    // the bottom of each iteration will null nextDeliveryDate and force reading drHdr.
                    int loadCount = 0;

                    while (nextDeliveryDate != null || drHdr.Read())
                    {
                        if (document == null)
                        {
                            // 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(contractNumber, busName, factoryNo, address1, address2, CSZ, resetFlag, rptTitle);
                            writer.PageEvent = pgEvent;

                            // Open the document
                            document.Open();
                        }

                        // load the delivery date.
                        nextDeliveryDate = drHdr.GetString(drHdr.GetOrdinal("Delivery_Date"));

                        // Acquire the sample details for the first station on a given day
                        if (lastDeliveryDate != nextDeliveryDate)
                        {
                            AddSampleHdr(ref document, drHdr, cropYear, pgEvent);
                            lastDeliveryDate = nextDeliveryDate;
                            using (SqlDataReader drSamples = WSCReportsExec.GrowerDetailReportTares(conn, contractID, nextDeliveryDate)) {
                                AddSampleDetail(ref document, drSamples, pgEvent);
                            }
                        }

                        loadCount = 0;

                        // Display Truck information for each station
                        // on the first delivery day.
                        if (nextDeliveryDate == firstDeliveryDate)
                        {
                            // Get the truck data.
                            SqlParameter[] spParams = null;
                            using (SqlDataReader drTrucks = WSCReportsExec.GrowerDetailReportASH(conn, contractID,
                                                                                                 drHdr.GetInt32(drHdr.GetOrdinal("Delivery_Station_ID")),
                                                                                                 firstDeliveryDate, ref spParams)) {
                                AddTruckDetail(ref document, drTrucks, pgEvent);

                                drTrucks.Close();
                                loadCount = Convert.ToInt32(spParams[3].Value);
                                if (loadCount > 0)
                                {
                                    AddTruckTotals(ref document, loadCount.ToString(),
                                                   Convert.ToInt32(spParams[4].Value).ToString("#,##0"),
                                                   Convert.ToInt32(spParams[5].Value).ToString("#,##0"), pgEvent);
                                }
                            }
                        }

                        // clear date to force read in top of loop
                        nextDeliveryDate = null;
                    }
                }

                // ======================================================
                // Close document
                // ======================================================
                if (document != null)
                {
                    pgEvent.IsDocumentClosing = true;
                    document.Close();
                    document = null;
                }
                if (writer == null)
                {
                    // Warn that we have no data.
                    WSCIEMP.Common.CWarning warn = new WSCIEMP.Common.CWarning("No records matched your report criteria.");
                    throw (warn);
                }
            }
            catch (Exception ex) {
                string errMsg = "document is null: " + (document == null).ToString() + "; " +
                                "writer is null: " + (writer == null).ToString();
                WSCIEMP.Common.CException wscex = new WSCIEMP.Common.CException(METHOD_NAME + errMsg, ex);
                throw (wscex);
            }
            finally {
                if (document != null)
                {
                    pgEvent.IsDocumentClosing = true;
                    document.Close();
                }
                if (writer != null)
                {
                    writer.Close();
                }
            }
        }
Example #3
0
        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();
                }
            }
        }