Exemplo n.º 1
0
    //----------------------------------------------------------------------------
    // CreateMessageInThread
    //----------------------------------------------------------------------------
    private static void CreateMessageInThread(Object i_oData)
    {
        if (i_oData == null)
        {
            return;
        }
        CException oEx = (CException)i_oData;

        if (oEx.m_oException == null)
        {
            return;
        }
        Thread.CurrentThread.CurrentUICulture = oEx.m_oCultureInfo == null ? CultureInfo.InvariantCulture : oEx.m_oCultureInfo;
        // create new exception in desired culture
        Exception      e = null;
        Win32Exception oWin32Exception = (Win32Exception)(oEx.m_oException);

        if (oWin32Exception != null)
        {
            e = new Win32Exception(oWin32Exception.NativeErrorCode);
        }
        else
        {
            try
            {
                e = (Exception)(Activator.CreateInstance(oEx.m_oException.GetType()));
            }
            catch { }
        }
        if (e != null)
        {
            oEx.m_sMessage = e.Message;
        }
    }
Exemplo n.º 2
0
    //----------------------------------------------------------------------------
    // CreateMessage
    //----------------------------------------------------------------------------
    private static string CreateMessage(Exception i_oException, CultureInfo i_oCultureInfo)
    {
        CException oEx = new CException(i_oException, i_oCultureInfo);
        Thread     oTH = new Thread(new ParameterizedThreadStart(CreateMessageInThread));

        oTH.Start(oEx);
        while (oTH.IsAlive)
        {
            Thread.Sleep(10);
        }
        return(oEx.m_sMessage);
    }
Exemplo n.º 3
0
 public static void Main()
 {
     CException.CreateMessages(null);
     CException.SaveMessagesToXML(@"d:\temp\", "emsg");
     CException.LoadMessagesFromXML(@"d:\temp\", "emsg");
 }
Exemplo n.º 4
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();
                }
            }
        }
Exemplo n.º 5
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();
                }
            }
        }