protected void OK_Click(object sender, EventArgs e)
 {
     WebUtils.HROneDBConfigUIInterface ui;
     if (true)   //MSSQL
     {
         ui = DBConfig_SQLServer1;
     }
     if (ui != null)
     {
         try
         {
             HROneConfig    config   = HROneConfig.GetCurrentHROneConfig();
             DatabaseConfig dbConfig = ui.GenerateDBType();
             dbConfig.name = txtName.Text.Trim();
             config.DatabaseConfigList.Add(dbConfig);
             config.Save();
             //HROne.DataAccess.DatabaseConnection.SetDefaultDatabaseConnection(WebUtils.GetDatabaseConnection());
             Session.Abandon();
             HttpRuntime.UnloadAppDomain();
             HROne.Common.WebUtility.RedirectURLwithEncryptedQueryString(Response, Session, "~/Default.aspx");
         }
         catch (Exception ex)
         {
             Message.Text      = ex.Message;
             Message.ForeColor = System.Drawing.Color.Red;
         }
     }
     else
     {
     }
 }
Esempio n. 2
0
    public static DatabaseConnection GetDatabaseConnection(string DatabaseName)
    {
        HROneConfig        configure = HROneConfig.GetCurrentHROneConfig();
        DatabaseConnection DBType    = configure.GetDatabaseConnection(DatabaseName);

        return(DBType);
    }
Esempio n. 3
0
    protected void OK_Click(object sender, EventArgs e)
    {
        WebUtils.HROneDBConfigUIInterface ui;
        if (true)   //MSSQL
        {
            ui = DBConfig_SQLServer1;
        }
        if (ui != null)
        {
            try
            {
                HROneConfig HROneConfig = new HROneConfig(config.HROneConfigFullPath);

                DatabaseConfig dbConfig = ui.GenerateDBType();
                dbConfig.name = string.Empty;
                HROneConfig.MasterDatabaseConfig = dbConfig;
                HROneConfig.Save();
                //HROne.DataAccess.DatabaseConnection.SetDefaultDatabaseConnection(WebUtils.GetDatabaseConnection());
                //Session.Abandon();
                //HttpRuntime.UnloadAppDomain();
                WebUtils.Logout(Session);
                Response.Redirect("~/Default.aspx");
            }
            catch (Exception ex)
            {
                Message.Text      = ex.Message;
                Message.ForeColor = System.Drawing.Color.Red;
            }
        }
        else
        {
        }
    }
Esempio n. 4
0
 protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
 {
     if (Request.Url.LocalPath.EndsWith(".aspx"))
     {
         DatabaseConnection dbConn;
         if (Request["Database"] != null)
         {
             dbConn = WebUtils.GetDatabaseConnection(Request["Database"]);
             WebUtils.Logout(Session);
             if (dbConn != null)
             {
                 WebUtils.SetSessionDatabaseConnection(Session, dbConn);
             }
         }
         else
         {
             dbConn = HROne.Common.WebUtility.GetDatabaseConnection(Session);
         }
         if (dbConn != null)
         {
             //DatabaseConnection.SetDefaultDatabaseConnection(dbConn);
             if (!Request.Url.LocalPath.EndsWith("/DatabaseUpgrade.aspx", StringComparison.CurrentCultureIgnoreCase))
             {
                 HROne.ProductVersion.Database database = new HROne.ProductVersion.Database(dbConn);
                 if (database.IsUpdateRequired() && Session["NeedDBUpgrade"] != null)
                 {
                     if (Session["NeedDBUpgrade"].Equals(true))
                     {
                         HROne.Common.WebUtility.RedirectURLwithEncryptedQueryString(Response, Session, "~/DatabaseUpgrade.aspx");
                     }
                 }
             }
         }
         if (!Request.Url.LocalPath.EndsWith("/DatabaseConfiguration.aspx", StringComparison.CurrentCultureIgnoreCase) && !Request.Url.LocalPath.EndsWith("/SelectDatabase.aspx", StringComparison.CurrentCultureIgnoreCase))
         {
             if (Application["MasterDBConfig"] == null)
             {
                 HROneConfig configure = HROneConfig.GetCurrentHROneConfig();
                 if (configure.DatabaseConfigList.Count < 1)
                 {
                     HROne.Common.WebUtility.RedirectURLwithEncryptedQueryString(Response, Session, "~/DatabaseConfiguration.aspx");
                 }
                 //else
                 //    HROne.Common.WebUtility.RedirectURLwithEncryptedQueryString(Response, Session, "~/SelectDatabase.aspx");
             }
             //if (Request.Url.LocalPath.IndexOf("/Login.aspx") < 0)
             //{
             //    string LastPath = Request.Url.PathAndQuery;
             //    if (Request.Url.LocalPath.IndexOf("/Default.aspx") > 0 || Request.Url.LocalPath.EndsWith("/"))
             //        Response.Redirect("~/Login.aspx");
             //    else
             //        HROne.Common.WebUtility.RedirectURLwithEncryptedQueryString(Response, Session, "~/Login.aspx?LastURL=" + LastPath);
             //}
         }
         HROne.Common.WebUtility.initLanguage(Session);
     }
 }
Esempio n. 5
0
    protected void Page_Load(object sender, EventArgs e)
    {
        //Logout previous session
        if (!IsPostBack)
        {
            if (Session["User"] != null)
            {
                WebUtils.Logout(Session);
                Request.Cookies.Remove(HROne.Common.WebUtility.getDefaultSessionCookieName());
                Response.Redirect(Request.Url.PathAndQuery);
            }
        }

        if (Application["MasterDBConfig"] == null)
        {
            SaaSCustomerIDRow.Visible = false;
            DatabaseConnection dbConn = WebUtils.GetDatabaseConnection();
            if (dbConn != null)
            {
                multiDBRow.Visible = false;
                string dbTitle = HROne.Lib.Entities.ESystemParameter.getParameter(dbConn, HROne.Lib.Entities.ESystemParameter.PARAM_CODE_DB_TITLE);
                if (!string.IsNullOrEmpty(dbTitle))
                {
                    Page.Title += " (" + dbTitle + ")";
                }
            }
            else
            {
                multiDBRow.Visible = true;

                if (!IsPostBack)
                {
                    HROneConfig config = HROneConfig.GetCurrentHROneConfig();
                    for (int idx = 0; idx < config.DatabaseConfigList.Count; idx++)
                    {
                        DatabaseConfig dbConfig = config.DatabaseConfigList[idx];
                        cboDatabase.Items.Add(new ListItem(dbConfig.name, idx.ToString()));
                    }
                }
            }
        }
        else
        {
            SaaSCustomerIDRow.Visible = true;
            multiDBRow.Visible        = false;
            Page.Title = "iMGR";
        }

        lblVersionNo.Text = ProductVersion.CURRENT_PROGRAM_VERSION;

        this.form1.Attributes.Add("AUTOCOMPLETE", "OFF");
        Password.Attributes.Add("onfocus", "this.select();");

        HROne.Common.WebUtility.AddBrowserCompatibilityMeta(Page);
    }
Esempio n. 6
0
    public static DatabaseConnection GetDatabaseConnection()
    {
        HROneSaaSConfig config = HROneSaaSConfig.GetCurrentConfig();

        if (System.IO.File.Exists(config.HROneConfigFullPath))
        {
            HROneConfig HROneConfig = new HROneConfig(config.HROneConfigFullPath);
            return(HROneConfig.GetDatabaseConnection());
        }
        return(null);
    }
Esempio n. 7
0
    public static void SetSessionDatabaseConnection(HttpSessionState Session, DatabaseConnection dbConn)
    {
        Session["DatabaseConnection"] = dbConn;
        //DatabaseConnection.SetDefaultDatabaseConnection(dbConn);
        WebUtils.LoadProductKey(Session);
        WebUtils.SetSessionLanguage(Session, null);

        HROneConfig config = HROneConfig.GetCurrentHROneConfig();

        Session["EncryptQueryString"] = config.EncryptedURLQueryString;

        //WebUtils.SetSessionLanguage(Session, null);
    }
Esempio n. 8
0
 protected void Session_End(Object sender, EventArgs e)
 {
     Application.Lock();
     Application["ActiveUsers"] = (int)Application["ActiveUsers"] - 1;
     if ((int)Application["ActiveUsers"] == 0)
     {
         HROneConfig config = HROneConfig.GetCurrentHROneConfig();
         if (config.ShutDownDomainAfterUsed)
         {
             HttpRuntime.UnloadAppDomain();
         }
     }
     Application.UnLock();
 }
Esempio n. 9
0
 protected void Page_Load(object sender, EventArgs e)
 {
     if (!IsPostBack)
     {
         HROneConfig config = HROneConfig.GetCurrentHROneConfig();
         if (config.AllowMultiDB)
         {
             DBNameRow.Visible = true;
         }
         else
         {
             DBNameRow.Visible = false;
         }
     }
     HROne.Common.WebUtility.AddBrowserCompatibilityMeta(Page);
 }
Esempio n. 10
0
    public static void ReportExport(HttpResponse Response, HROne.Common.GenericReportProcess reportProcess, string reportTemplateFileName, string ExportFormat, string OutputFilenamePrefix, bool IsLocalize)
    {
        if (Response.IsClientConnected)
        {
            HROneConfig config = HROneConfig.GetCurrentHROneConfig();
            HROne.Common.GenericReportProcess.UsePDFCreator = config.UsePDFCreator;
            if (config.UsePDFCreator)
            {
                HROne.Common.PDFCreaterPrinter.PDFCreaterPrinterName = config.PDFCreatorPrinterName;
            }

            string exportFileName          = reportProcess.ReportExportToFile(reportTemplateFileName, ExportFormat, IsLocalize);
            string exportFileNameExtension = exportFileName.Substring(exportFileName.LastIndexOf("."));
            WebUtils.TransmitFile(Response, exportFileName, OutputFilenamePrefix + "_" + AppUtils.ServerDateTime().ToString("yyyyMMddHHmmss") + exportFileNameExtension, true);
        }
    }
Esempio n. 11
0
        protected void Application_Start(Object sender, EventArgs e)
        {
            Application["ActiveUsers"] = 0;

            //HROne.DataAccess.DatabaseConnection dbConn = WebUtils.GetDatabaseConnection();
            //perspectivemind.common.Debug.debug = true;

            HROne.Common.Folder.ClearApplicationTempFolder();

            HROneConfig configure = HROneConfig.GetCurrentHROneConfig();

            // Start 0000134, Ricky So, 2014-11-21
            HROne.DataAccess.DBAESEncryptStringFieldAttribute.skipEncryptionToDB = configure.SkipEncryptionToDB;
            // End 0000134, Ricky So, 2014-11-21
            HROne.DataAccess.DBAESEncryptStringFieldAttribute.RSAEncryptedKeyString = configure.databaseEncryptKey;
            if (configure.MasterDatabaseConfig != null)
            {
                Application["MasterDBConfig"] = configure.MasterDatabaseConfig;
                DatabaseConnection MasterDBConn = configure.MasterDatabaseConfig.CreateDatabaseConnectionObject();
                AppUtils.DefaultDocumentUploadFolder = HROne.SaaS.Entities.ESystemParameter.getParameter(MasterDBConn, HROne.SaaS.Entities.ESystemParameter.PARAM_CODE_DEFAULT_DOCUMENT_FOLDER);
                //  force RSA mode on SaaS
                if (string.IsNullOrEmpty(configure.databaseEncryptKey))
                {
                    HROne.DataAccess.DBAESEncryptStringFieldAttribute.RSAEncryptedKeyString = "0123456789abcdef";
                }
            }
            // run Import_Employee.sql ONLY when there is a DB patch
            //foreach (DatabaseConfig dbConfig in configure.DatabaseConfigList)
            //{
            //    if (dbConfig.TestConnection())
            //    {
            //        HROne.ProductVersion.Database database = new HROne.ProductVersion.Database(dbConfig.CreateDatabaseConnectionObject());
            //        try
            //        {
            //            database.RunDataPatch("Import_Employee.sql");
            //            //WebUtils.ClearTempTable(dbConfig.CreateDatabaseConnectionObject(), string.Empty);
            //        }
            //        catch (Exception ex)
            //        {
            //            System.Diagnostics.Debug.WriteLine(ex.Message);
            //        }
            //    }
            //}
        }
Esempio n. 12
0
    protected void Save_Click(object sender, EventArgs e)
    {
        HROne.CommonLib.RSACrypto rsa = null;
        if (cbxEncryptedDataBy.SelectedValue.Equals("buildin", StringComparison.CurrentCultureIgnoreCase))
        {
            rsa = new HROne.CommonLib.RSACrypto("HROneSaaS");
        }
        //else
        //{
        //    rsa = new HROne.CommonLib.RSACrypto();
        //    rsa.FromXMLString(txtPublicKeyXMLString.Text);
        //}
        string          encryptedString = rsa.Encrypting(txtPasspharse.Text);
        HROneSaaSConfig SaaSconfig      = HROneSaaSConfig.GetCurrentConfig();
        HROneConfig     config          = new HROneConfig(SaaSconfig.HROneConfigFullPath);

        config.databaseEncryptKey = encryptedString;
        config.Save();
    }
Esempio n. 13
0
        protected void Application_Start(Object sender, EventArgs e)
        {
            Application["ActiveUsers"] = 0;

            HROneConfig configure = HROneConfig.GetCurrentHROneConfig();

            // Start 0000134, Ricky So, 2014-11-21
            HROne.DataAccess.DBAESEncryptStringFieldAttribute.skipEncryptionToDB = configure.SkipEncryptionToDB;
            // End 0000134, Ricky So, 2014-11-21
            HROne.DataAccess.DBAESEncryptStringFieldAttribute.RSAEncryptedKeyString = configure.databaseEncryptKey;
            if (configure.MasterDatabaseConfig != null)
            {
                Application["MasterDBConfig"] = configure.MasterDatabaseConfig;
                DatabaseConnection MasterDBConn = configure.MasterDatabaseConfig.CreateDatabaseConnectionObject();
                AppUtils.DefaultDocumentUploadFolder = HROne.SaaS.Entities.ESystemParameter.getParameter(MasterDBConn, HROne.SaaS.Entities.ESystemParameter.PARAM_CODE_DEFAULT_DOCUMENT_FOLDER);
                //  force RSA mode on SaaS
                if (string.IsNullOrEmpty(configure.databaseEncryptKey))
                {
                    HROne.DataAccess.DBAESEncryptStringFieldAttribute.RSAEncryptedKeyString = "0123456789abcdef";
                }
            }
        }
Esempio n. 14
0
        protected void Session_End(Object sender, EventArgs e)
        {
            HROne.Common.Folder.GetOrCreateSessionTempFolder(Session.SessionID).Delete(true);
            DatabaseConnection dbConn = HROne.Common.WebUtility.GetDatabaseConnection(Session);

            if (dbConn != null)
            {
                WebUtils.ClearTempTable(dbConn, Session.SessionID);
            }

            Application.Lock();
            Application["ActiveUsers"] = (int)Application["ActiveUsers"] - 1;
            if ((int)Application["ActiveUsers"] == 0)
            {
                HROneConfig config = HROneConfig.GetCurrentHROneConfig();
                if (config.ShutDownDomainAfterUsed)
                {
                    HttpRuntime.UnloadAppDomain();
                }
            }
            Application.UnLock();
        }
Esempio n. 15
0
    protected void btnGenerate_Click(object sender, EventArgs e)
    {
        PageErrors errors = PageErrors.getErrors(EPayrollGroup.db, Page.Master);

        DateTime dtPeriodFrom        = new DateTime();
        DateTime dtPeriodTo          = new DateTime();
        int      intHierarchyLevelID = 0;

        if (!string.IsNullOrEmpty(PayPeriodFr.Value))
        {
            if (!DateTime.TryParse(PayPeriodFr.Value, out dtPeriodFrom))
            {
                errors.addError(HROne.Translation.PageErrorMessage.ERROR_DATE_FORMAT);
                return;
            }
        }
        if (!string.IsNullOrEmpty(PayPeriodTo.Value))
        {
            if (!DateTime.TryParse(PayPeriodTo.Value, out dtPeriodTo))
            {
                errors.addError(HROne.Translation.PageErrorMessage.ERROR_DATE_FORMAT);
                return;
            }
        }
        if (!int.TryParse(HLevelID.SelectedValue, out intHierarchyLevelID))
        {
            errors.addError("Invalid Hierarchy Level");
        }

        // Start 0000185, KuangWei, 2015-05-05
        ArrayList empList = WebUtils.SelectedRepeaterItemToBaseObjectList(db, Repeater, "ItemSelect");

        if (empList.Count <= 0)
        {
            errors.addError("No Employees selected");
        }

        if (errors.isEmpty())
        {
            HROne.Reports.Payroll.PaymentAllocationListProcess reportProcess = new HROne.Reports.Payroll.PaymentAllocationListProcess(dbConn, ci, dtPeriodFrom, dtPeriodTo, intHierarchyLevelID, WebUtils.GetCurUser(Session), empList);
            // End 0000185, KuangWei, 2015-05-05

            if (Response.IsClientConnected)
            {
                HROneConfig config = HROneConfig.GetCurrentHROneConfig();
                if (config.GenerateReportAsInbox)
                {
                    if (EInboxAttachment.GetTotalSize(dbConn, 0) < WebUtils.productLicense(Session).MaxInboxSizeMB * 1000 * 1000)
                    {
                        HROne.TaskService.GenericExcelReportTaskFactory reportTask = new HROne.TaskService.GenericExcelReportTaskFactory(dbConn, user, lblReportHeader.Text, reportProcess, "PaymentAllocationList");
                        AppUtils.reportTaskQueueService.AddTask(reportTask);
                        errors.addError(HROne.Translation.PageMessage.REPORT_GENERATING_TO_INBOX);
                    }
                    else
                    {
                        errors.addError(HROne.Translation.PageMessage.INBOX_SIZE_EXCEEDED);
                    }
                }
                else
                {
                    System.IO.FileInfo excelFile = reportProcess.GenerateExcelReport();
                    WebUtils.TransmitFile(Response, excelFile.FullName, "PaymentAllocationList_" + AppUtils.ServerDateTime().ToString("yyyyMMddHHmmss") + ".xls", true);
                }
            }
        }
        //{
        //    string hierarchyLevelName = string.Empty;

        //    DataSet dataSet = new DataSet();

        //    DataTable empInfoTable = new DataTable("EmpInfo");
        //    DataTable payrollTable = new DataTable("Payment");

        //    dataSet.Tables.Add(empInfoTable);
        //    dataSet.Tables.Add(payrollTable);

        //    payrollTable.Columns.Add("EmpPayrollID", typeof(string));
        //    int firstDetailColumnPos = payrollTable.Columns.Count;


        //    empInfoTable.Columns.Add("EmployeeID", typeof(string));
        //    empInfoTable.Columns.Add("EmpPayrollID", typeof(int));
        //    empInfoTable.Columns.Add("EnglishName", typeof(string));
        //    empInfoTable.Columns.Add("Alias", typeof(string));

        //    empInfoTable.Columns.Add("Company", typeof(string));
        //    DBFilter hierarchyLevelFilter = new DBFilter();
        //    Hashtable hierarchyLevelHashTable = new Hashtable();
        //    hierarchyLevelFilter.add("HLevelSeqNo", true);
        //    ArrayList hierarchyLevelList = EHierarchyLevel.db.select(dbConn, hierarchyLevelFilter);
        //    foreach (EHierarchyLevel hlevel in hierarchyLevelList)
        //    {

        //        if (hlevel.HLevelID.Equals(intHierarchyLevelID))
        //            hierarchyLevelName = hlevel.HLevelDesc;
        //        empInfoTable.Columns.Add(hlevel.HLevelDesc, typeof(string));
        //        hierarchyLevelHashTable.Add(hlevel.HLevelID, hlevel);
        //    }
        //    empInfoTable.Columns.Add("Payroll Group", typeof(string));

        //    empInfoTable.Columns.Add("Date Join", typeof(DateTime));
        //    empInfoTable.Columns.Add("Date Left", typeof(DateTime));
        //    empInfoTable.Columns.Add("Net Payable", typeof(double));
        //    empInfoTable.Columns.Add("MCEE", typeof(double));
        //    empInfoTable.Columns.Add("MCER", typeof(double));
        //    empInfoTable.Columns.Add("VCEE", typeof(double));
        //    empInfoTable.Columns.Add("VCER", typeof(double));
        //    empInfoTable.Columns.Add("PFundEE", typeof(double));
        //    empInfoTable.Columns.Add("PFundER", typeof(double));

        //    DBFilter payPeriodFilter = new DBFilter();
        //    if (!dtPeriodFrom.Ticks.Equals(0))
        //        payPeriodFilter.add(new Match("PayPeriodTo", ">=", dtPeriodFrom));
        //    if (!dtPeriodTo.Ticks.Equals(0))
        //        payPeriodFilter.add(new Match("PayPeriodTo", "<=", dtPeriodTo));


        //    ArrayList payPeriodList = EPayrollPeriod.db.select(dbConn, payPeriodFilter);
        //    if (payPeriodList.Count > 0)
        //    {
        //        // reset period
        //        dtPeriodFrom = new DateTime();
        //        dtPeriodTo = new DateTime();
        //    }
        //    foreach (EPayrollPeriod payPeriod in payPeriodList)
        //    {
        //        if (dtPeriodFrom > payPeriod.PayPeriodFr || dtPeriodFrom.Ticks.Equals(0))
        //            dtPeriodFrom = payPeriod.PayPeriodFr;
        //        if (dtPeriodTo < payPeriod.PayPeriodTo || dtPeriodTo.Ticks.Equals(0))
        //            dtPeriodTo = payPeriod.PayPeriodTo;



        //        DBFilter empPayrollFilter = new DBFilter();
        //        empPayrollFilter.add(new Match("PayPeriodID", payPeriod.PayPeriodID));
        //        ArrayList empPayrollList = EEmpPayroll.db.select(dbConn, empPayrollFilter);

        //        foreach (EEmpPayroll empPayroll in empPayrollList)
        //        {
        //            EEmpPersonalInfo empInfo = new EEmpPersonalInfo();
        //            empInfo.EmpID = empPayroll.EmpID;
        //            EEmpPersonalInfo.db.select(dbConn, empInfo);

        //            DataRow row = empInfoTable.NewRow();
        //            DataRow paymentRow = payrollTable.NewRow();

        //            row["EmployeeID"] = empInfo.EmpNo;
        //            row["EmpPayrollID"] = empPayroll.EmpPayrollID;
        //            paymentRow["EmpPayrollID"] = empPayroll.EmpPayrollID;
        //            row["EnglishName"] = empInfo.EmpEngFullName;
        //            row["Alias"] = empInfo.EmpAlias;

        //            row["Date Join"] = empInfo.EmpDateOfJoin;
        //            DBFilter empTerminationFilter = new DBFilter();
        //            empTerminationFilter.add(new Match("EmpID", empInfo.EmpID));
        //            ArrayList empTerminationList = EEmpTermination.db.select(dbConn, empTerminationFilter);
        //            if (empTerminationList.Count > 0)
        //                row["Date Left"] = ((EEmpTermination)empTerminationList[0]).EmpTermLastDate;

        //            DBFilter empPosFilter = new DBFilter();

        //            EEmpPositionInfo empPos = AppUtils.GetLastPositionInfo(dbConn, payPeriod.PayPeriodTo, empInfo.EmpID);
        //            if (empPos != null)
        //            {
        //                ECompany company = new ECompany();
        //                company.CompanyID = empPos.CompanyID;
        //                if (ECompany.db.select(dbConn, company))
        //                    row["Company"] = company.CompanyName;

        //                EPayrollGroup payrollGroup = new EPayrollGroup();
        //                payrollGroup.PayGroupID = empPos.PayGroupID;
        //                if (EPayrollGroup.db.select(dbConn, payrollGroup))
        //                    row["Payroll Group"] = payrollGroup.PayGroupDesc;
        //                DBFilter empHierarchyFilter = new DBFilter();
        //                empHierarchyFilter.add(new Match("EmpPosID", empPos.EmpPosID));
        //                ArrayList empHierarchyList = EEmpHierarchy.db.select(dbConn, empHierarchyFilter);
        //                foreach (EEmpHierarchy empHierarchy in empHierarchyList)
        //                {
        //                    EHierarchyLevel hierarchyLevel = (EHierarchyLevel)hierarchyLevelHashTable[empHierarchy.HLevelID];
        //                    if (hierarchyLevel != null)
        //                    {
        //                        EHierarchyElement hierarchyElement = new EHierarchyElement();
        //                        hierarchyElement.HElementID = empHierarchy.HElementID;
        //                        if (EHierarchyElement.db.select(dbConn, hierarchyElement))
        //                            row[hierarchyLevel.HLevelDesc] = hierarchyElement.HElementDesc;
        //                    }
        //                }
        //            }


        //            double netAmount = 0, releventIncome = 0, nonRelevantIncome = 0, MCEE = 0, MCER = 0, VCEE=0, VCER=0, PFUNDEE = 0, PFUNDER = 0;

        //            DBFilter paymentRecordFilter = new DBFilter();
        //            paymentRecordFilter.add(new Match("EmpPayrollID", empPayroll.EmpPayrollID));
        //            paymentRecordFilter.add(new Match("PayRecStatus", "A"));
        //            ArrayList paymentRecords = EPaymentRecord.db.select(dbConn, paymentRecordFilter);

        //            foreach (EPaymentRecord paymentRecord in paymentRecords)
        //            {
        //                EPaymentCode payCode = new EPaymentCode();
        //                payCode.PaymentCodeID = paymentRecord.PaymentCodeID;
        //                EPaymentCode.db.select(dbConn, payCode);
        //                string fieldName = payCode.PaymentCodeDesc;
        //                if (payrollTable.Columns[fieldName] == null)
        //                    payrollTable.Columns.Add(new DataColumn(fieldName, typeof(double)));
        //                if (paymentRow[fieldName] == null || paymentRow[fieldName] == DBNull.Value)
        //                    paymentRow[fieldName] = 0;
        //                paymentRow[fieldName] = (double)paymentRow[fieldName] + paymentRecord.PayRecActAmount;


        //                netAmount += paymentRecord.PayRecActAmount;
        //                if (payCode.PaymentCodeIsMPF)
        //                    releventIncome += paymentRecord.PayRecActAmount;
        //                else
        //                    nonRelevantIncome += paymentRecord.PayRecActAmount;

        //            }

        //            row["Net Payable"] = HROne.CommonLib.GenericRoundingFunctions.RoundingTo(netAmount, ExchangeCurrency.DefaultCurrencyDecimalPlaces(), ExchangeCurrency.DefaultCurrencyDecimalPlaces());
        //            //row["Relevant Income"] = HROne.CommonLib.GenericRoundingFunctions.RoundingTo(releventIncome, ExchangeCurrency.DefaultCurrencyDecimalPlaces(), ExchangeCurrency.DefaultCurrencyDecimalPlaces());
        //            //row["Non-Relevant Income"] = HROne.CommonLib.GenericRoundingFunctions.RoundingTo(nonRelevantIncome, ExchangeCurrency.DefaultCurrencyDecimalPlaces(), ExchangeCurrency.DefaultCurrencyDecimalPlaces());

        //            DBFilter mpfRecordFilter = new DBFilter();
        //            mpfRecordFilter.add(new Match("EmpPayrollID", empPayroll.EmpPayrollID));
        //            ArrayList mpfRecords = EMPFRecord.db.select(dbConn, mpfRecordFilter);
        //            foreach (EMPFRecord mpfRecord in mpfRecords)
        //            {
        //                VCER += mpfRecord.MPFRecActVCER;
        //                MCER += mpfRecord.MPFRecActMCER;
        //                VCEE += mpfRecord.MPFRecActVCEE;
        //                MCEE += mpfRecord.MPFRecActMCEE;
        //            }
        //            row["MCEE"] = MCEE;
        //            row["VCEE"] = VCEE;
        //            row["MCER"] = MCER;
        //            row["VCER"] = VCER;
        //            ArrayList orsoRecords = EORSORecord.db.select(dbConn, mpfRecordFilter);
        //            foreach (EORSORecord orsoRecord in orsoRecords)
        //            {
        //                PFUNDER += orsoRecord.ORSORecActER;
        //                PFUNDEE += orsoRecord.ORSORecActEE;
        //            }
        //            row["PFundEE"] = PFUNDEE;
        //            row["PFundER"] = PFUNDER;

        //            empInfoTable.Rows.Add(row);
        //            payrollTable.Rows.Add(paymentRow);
        //        }
        //    }
        //    DBFilter paymentCodeFilter = new DBFilter();
        //    paymentCodeFilter.add("PaymentCodeDisplaySeqNo", false);
        //    paymentCodeFilter.add("PaymentCode", false);
        //    ArrayList paymentCodeList = EPaymentCode.db.select(dbConn, paymentCodeFilter);
        //    foreach (EPaymentCode paymentCode in paymentCodeList)
        //    {
        //        if (payrollTable.Columns.Contains(paymentCode.PaymentCodeDesc))
        //            payrollTable.Columns[paymentCode.PaymentCodeDesc].SetOrdinal(firstDetailColumnPos);
        //    }
        //    GenerateReport(dataSet, dtPeriodFrom, dtPeriodTo, hierarchyLevelName);
        //    return;

        //}
    }
Esempio n. 16
0
    protected void btnGenerateFile_Click(object sender, EventArgs e)
    {
        PageErrors errors = PageErrors.getErrors(db, Page.Master);

        errors.clear();

        int taxFormID;

        if (!int.TryParse(TaxFormID.SelectedValue, out taxFormID))
        {
            errors.addError("Year Return is not selected");
        }
        else if (taxFormID <= 0)
        {
            errors.addError("Year Return is not selected");
        }

        string taxFileFormat = TaxFileFormat.SelectedValue;

        if (taxFileFormat == "")
        {
            errors.addError("File Format is not selected");
        }

        //if (errors.isEmpty())
        //{
        //    //  skip converting content to big5.
        //    //  It should be done inside HROne.Taxation.TaxationGeneration.GenerateTaxationFileData function
        //    System.Text.Encoding big5 = HROne.Taxation.TaxationGeneration.GetTaxationFileEncoding();
        //    //Encoding utf8 = System.Text.Encoding.GetEncoding("utf-8");
        //    string taxFileData = HROne.Taxation.TaxationGeneration.GenerateTaxationFileData(dbConn, taxFormID);
        //    //byte[] taxFileByteArray = utf8.GetBytes(taxFileData);
        //    //byte[] taxFileByteArrayBig5 = System.Text.Encoding.Convert(utf8, big5, taxFileByteArray);
        //    byte[] taxFileByteArrayBig5 = big5.GetBytes(taxFileData);

        //    char[] taxFileCharArrayBig5 = big5.GetChars(taxFileByteArrayBig5);

        //    Response.Clear();
        //    Response.ContentEncoding = big5;
        //    Response.AddHeader("Content-Type", "text/plain");
        //    Response.AddHeader("Content-Disposition", "attachment;filename=TaxationFile" + AppUtils.ServerDateTime().ToString("yyyyMMddHHmmss") + ".txt");
        //    Response.AppendHeader("Content-Length", taxFileByteArrayBig5.Length.ToString());
        //    Response.Expires = -1;
        //    Response.Write(taxFileCharArrayBig5, 0, taxFileCharArrayBig5.Length);
        //    Response.End();
        //}
        if (errors.isEmpty() && Response.IsClientConnected)
        {
            ESystemParameter.setParameter(dbConn, TAXATION_NAME_OF_SIGNATURE, txtNameOfSignature.Text);

            HROneConfig config = HROneConfig.GetCurrentHROneConfig();
            if (config.GenerateReportAsInbox)
            {
                if (EInboxAttachment.GetTotalSize(dbConn, 0) < WebUtils.productLicense(Session).MaxInboxSizeMB * 1000 * 1000)
                {
                    HROne.TaskService.TaxationDiskTaskFactory reportTask = new HROne.TaskService.TaxationDiskTaskFactory(dbConn, user, lblReportHeader.Text + " ( " + TaxFormID.SelectedItem.Text + " ) " + TaxFileFormat.SelectedItem.Text, taxFormID, txtNameOfSignature.Text, taxFileFormat);
                    AppUtils.reportTaskQueueService.AddTask(reportTask);
                    errors.addError(HROne.Translation.PageMessage.REPORT_GENERATING_TO_INBOX);
                }
                else
                {
                    errors.addError(HROne.Translation.PageMessage.INBOX_SIZE_EXCEEDED);
                }
            }
            else
            {
                HROne.Taxation.TaxationDiskProcess process = new HROne.Taxation.TaxationDiskProcess(dbConn, taxFormID);

                if (taxFileFormat.Equals("TEXT", StringComparison.CurrentCultureIgnoreCase))
                {
                    string outputFileName = "TaxationFile_" + AppUtils.ServerDateTime().ToString("yyyyMMddHHmmss") + ".txt";
                    WebUtils.TransmitFile(Response, process.GenerateToFile(), outputFileName, true);
                }
                else if (taxFileFormat.Equals("XML", StringComparison.CurrentCultureIgnoreCase))
                {
                    // generate taxation file in XML format
                    string outputFileName = "TaxationFile_" + AppUtils.ServerDateTime().ToString("yyyyMMddHHmmss") + ".xml";
                    WebUtils.TransmitFile(Response, process.GenerateToXML(), outputFileName, true);
                }
            }
        }
    }
Esempio n. 17
0
    protected void btnGenerate_Click(object sender, EventArgs e)
    {
        PageErrors errors = PageErrors.getErrors(db, Page.Master);

        string functionList = string.Empty;

        foreach (ListItem item in FunctionID.Items)
        {
            if (item.Selected)
            {
                if (item.Value.Equals(string.Empty))
                {
                    functionList = string.Empty;
                    break;
                }
                else
                {
                    if (string.IsNullOrEmpty(functionList))
                    {
                        functionList = item.Value;
                    }
                    else
                    {
                        functionList += "," + item.Value;
                    }
                }
            }
        }
        string userList = string.Empty;

        foreach (ListItem item in UserID.Items)
        {
            if (item.Selected)
            {
                if (item.Value.Equals(string.Empty))
                {
                    userList = null;
                    break;
                }
                else
                {
                    if (string.IsNullOrEmpty(userList))
                    {
                        userList = item.Value;
                    }
                    else
                    {
                        userList += "," + item.Value;
                    }
                }
            }
        }
        DateTime dtPeriodFr, dtPeriodTo;

        if (!DateTime.TryParse(CreateDateFrom.Value, out dtPeriodFr))
        {
            dtPeriodFr = new DateTime();
        }
        if (!DateTime.TryParse(CreateDateTo.Value, out dtPeriodTo))
        {
            dtPeriodTo = new DateTime();
        }

        HROneConfig config = HROneConfig.GetCurrentHROneConfig();

        if (config.GenerateReportAsInbox)
        {
            if (EInboxAttachment.GetTotalSize(dbConn, 0) < WebUtils.productLicense(Session).MaxInboxSizeMB * 1000 * 1000)
            {
                HROne.Lib.AuditTrailReportProcess       process = new HROne.Lib.AuditTrailReportProcess(dbConn, null, functionList, userList, dtPeriodFr, dtPeriodTo, EmpNo.Text.Trim(), chkShowHeaderOnly.Checked, chkShowKeyIDOnly.Checked, chkDoNotConvertID.Checked, chkShowWithoutDataUpdate.Checked);
                HROne.TaskService.AuditTrailTaskFactory task    = new HROne.TaskService.AuditTrailTaskFactory(dbConn, user, lblReportHeader.Text, process);
                AppUtils.reportTaskQueueService.AddTask(task);
                errors.addError(HROne.Translation.PageMessage.REPORT_GENERATING_TO_INBOX);
            }
            else
            {
                errors.addError(HROne.Translation.PageMessage.INBOX_SIZE_EXCEEDED);
            }
        }
        else
        {
            Response.ClearContent();
            Response.ClearHeaders();
            Response.ContentType = "application/download"; //Fixed download problem on https
            Response.AddHeader("Content-Disposition", "attachment;filename=AuditTrail_" + AppUtils.ServerDateTime().ToString("yyyyMMddHHmmss") + ".txt");
            Response.Expires = -1;

            HROne.Lib.AuditTrailReportProcess process = new HROne.Lib.AuditTrailReportProcess(dbConn, Response.Output, functionList, userList, dtPeriodFr, dtPeriodTo, EmpNo.Text.Trim(), chkShowHeaderOnly.Checked, chkShowKeyIDOnly.Checked, chkDoNotConvertID.Checked, chkShowWithoutDataUpdate.Checked);
            process.Updated += new EventHandler(OnProcessUpdated);
            process.GenerateToFile();

            Response.End();
        }
    }
Esempio n. 18
0
    //public bool ValidateUser(string username, string encryptedPassword)
    //{
    //    string message = string.Empty;
    //    DBFilter filter = new DBFilter();
    //    filter.add(new Match("LoginID", username));
    //    filter.add(new Match("UserAccountStatus", "<>", "D"));
    //    ArrayList list = EUser.db.select(dbConn, filter);
    //    if (list.Count == 0)
    //    {
    //        message = "Invalid User Name or Password";
    //        throw new Exception(message);
    //        return;
    //    }
    //    EUser user = (EUser)list[0];
    //    if (user.UserPassword == null)
    //        user.UserPassword = "";
    //    if (!(user.UserAccountStatus == "A"))
    //    {
    //        message = "Account is Inactive/Locked";
    //        throw new Exception(message);
    //        return;
    //    }

    //    if (!user.UserPassword.Equals(encryptedPassword))
    //    {
    //        message = "Invalid User Name or Password";
    //        user.FailCount++;
    //        string maxFailCountParameterString = ESystemParameter.getParameter(ESystemParameter.PARAM_CODE_LOGIN_MAX_FAIL_COUNT);
    //        if (!maxFailCountParameterString.Equals(string.Empty))
    //        {
    //            int MaxFailCount = 0;
    //            if (int.TryParse(maxFailCountParameterString, out MaxFailCount))
    //                if (MaxFailCount > 0)
    //                    if (user.FailCount >= MaxFailCount)
    //                    {
    //                        user.UserAccountStatus = "I";
    //                        user.FailCount = 0;
    //                    }
    //                    else if (user.FailCount - MaxFailCount == 1)
    //                    {
    //                        message += "\r\n" + "The account will be locked if you fail to login 1 more time";
    //                    }

    //        }
    //        EUser.db.update(dbConn, user);
    //        throw new Exception(message);
    //        return;
    //    }

    //    Session["User"] = user;

    //    WebUtils.SetSessionLanguage(Session, user);

    //    user.FailCount = 0;
    //    EUser.db.update(dbConn, user);
    //    //WebUtils.RefreshPermission(Session);
    //    bool isForceChangePassword = false;

    //    if (user.UserChangePasswordUnit == "D")
    //    {
    //        if (AppUtils.ServerDateTime() < user.UserChangePasswordDate.AddDays(user.UserChangePasswordPeriod))
    //            isForceChangePassword = false;
    //        else
    //            isForceChangePassword = true;
    //    }
    //    else if (user.UserChangePasswordUnit == "M")
    //    {
    //        if (AppUtils.ServerDateTime() < user.UserChangePasswordDate.AddMonths(user.UserChangePasswordPeriod))
    //            isForceChangePassword = false;
    //        else
    //            isForceChangePassword = true;
    //    }
    //    else if (user.UserChangePasswordUnit == "Y")
    //    {
    //        if (AppUtils.ServerDateTime() < user.UserChangePasswordDate.AddYears(user.UserChangePasswordPeriod))
    //            isForceChangePassword = false;
    //        else
    //            isForceChangePassword = true;
    //    }
    //    else
    //        isForceChangePassword = false;
    //    if (user.UserChangePassword)
    //        isForceChangePassword = true;

    //    //EInbox.GenerateInboxMessage(user.UserID);
    //    if (isForceChangePassword)
    //        Session["ForceChangePassword"] = true;
    //    if (Session["LastURL"] != null)
    //        Response.Redirect(Session["LastURL"].ToString());
    //    else
    //        HROne.Common.WebUtility.RedirectURLwithEncryptedQueryString(Response, Session, "Emp_List.aspx");

    //}

    protected void Login_Click(object sender, EventArgs e)
    {
        HROne.Lib.Entities.EUser user = null;

        Session.Clear();

        HROne.DataAccess.DatabaseConnection  mainDBConn = null;
        HROne.SaaS.Entities.ECompanyDatabase companyDB  = null;
        bool   hasError = false;
        string message  = string.Empty;

        // always check whether companyDB exists after click
        if (Application["MasterDBConfig"] != null)
        {
            DatabaseConfig masterDBConfig = (DatabaseConfig)Application["MasterDBConfig"];
            HROne.DataAccess.DatabaseConnection masterDBConn = masterDBConfig.CreateDatabaseConnectionObject();
            DBFilter companyDatabaseFilter = new DBFilter();
            companyDatabaseFilter.add(new Match("CompanyDBClientCode", txtCustomerID.Text));
            ArrayList companyDatabaseList = HROne.SaaS.Entities.ECompanyDatabase.db.select(masterDBConn, companyDatabaseFilter);
            if (companyDatabaseList.Count > 0)
            {
                companyDB = (HROne.SaaS.Entities.ECompanyDatabase)companyDatabaseList[0];

                DatabaseConfig tempDBConfig = new DatabaseConfig();
                tempDBConfig.ConnectionString = companyDB.getConnectionString(masterDBConn);
                tempDBConfig.DBType           = WebUtils.DBTypeEmun.MSSQL;

                if (tempDBConfig.TestConnection())
                {
                    mainDBConn = tempDBConfig.CreateDatabaseConnectionObject();

                    HROne.Lib.Entities.ESystemParameter.setParameter(mainDBConn, HROne.Lib.Entities.ESystemParameter.PARAM_CODE_PRODUCTKEY, companyDB.CompanyDBProductKey);
                    HROne.Lib.Entities.ESystemParameter.setParameter(mainDBConn, HROne.Lib.Entities.ESystemParameter.PARAM_CODE_PRODUCTFEATURECODE, companyDB.getProductFeatureCode(masterDBConn));

                    string[] smtpParameterList = new string[]
                    {
                        HROne.Lib.Entities.ESystemParameter.PARAM_CODE_SMTP_SERVER_NAME,
                        HROne.Lib.Entities.ESystemParameter.PARAM_CODE_SMTP_PORT,
                        HROne.Lib.Entities.ESystemParameter.PARAM_CODE_SMTP_USERNAME,
                        HROne.Lib.Entities.ESystemParameter.PARAM_CODE_SMTP_ENABLE_SSL,
                        HROne.Lib.Entities.ESystemParameter.PARAM_CODE_SMTP_SMTP_OUTGOING_EMAIL_ADDRESS
                    };
                    foreach (string smptParameter in smtpParameterList)
                    {
                        HROne.Lib.Entities.ESystemParameter.setParameter(mainDBConn, smptParameter, HROne.SaaS.Entities.ESystemParameter.getParameter(masterDBConn, smptParameter));
                    }
                    HROne.Lib.Entities.ESystemParameter.setParameterWithEncryption(mainDBConn, HROne.Lib.Entities.ESystemParameter.PARAM_CODE_SMTP_PASSWORD
                                                                                   , HROne.SaaS.Entities.ESystemParameter.getParameterWithEncryption(masterDBConn, HROne.SaaS.Entities.ESystemParameter.PARAM_CODE_SMTP_PASSWORD));
                }
                else
                {
                    if (HROne.DataAccess.DBAESEncryptStringFieldAttribute.InvalidRSAKey)
                    {
                        HttpRuntime.UnloadAppDomain();
                    }
                }
            }
        }
        else
        {
            mainDBConn = WebUtils.GetDatabaseConnection();
            if (mainDBConn == null)
            {
                if (multiDBRow.Visible)
                {
                    int idx;
                    if (int.TryParse(cboDatabase.SelectedValue, out idx))
                    {
                        HROneConfig    config   = HROneConfig.GetCurrentHROneConfig();
                        DatabaseConfig dbconfig = config.DatabaseConfigList[idx];
                        if (dbconfig.TestConnection())
                        {
                            mainDBConn = dbconfig.CreateDatabaseConnectionObject();
                        }
                        else
                        {
                            ScriptManager.RegisterStartupScript(this, this.GetType(), "errorMessage", "alert(\"Fail to connect database\");", true);
                            return;
                        }
                    }
                }
            }
        }
        if (mainDBConn != null)
        {
            WebUtils.SetSessionDatabaseConnection(Session, mainDBConn);
        }

        HROne.ProductLicense productLicense = WebUtils.productLicense(Session);
        if (productLicense != null)
        {
            if (companyDB == null && productLicense.ProductType == HROne.ProductLicense.ProductLicenseType.HROneSaaS)
            {
                productLicense.LoadProductKey(string.Empty);
            }
        }

        if (mainDBConn == null && companyDB != null)
        {
            hasError = true;
            message  = "Fail to connect to database. Please contact to customer service.";
        }
        if (!hasError)
        {
            try
            {
                WebUtils.ValidateUser(mainDBConn, Username.Text, HROne.CommonLib.Hash.PasswordHash(Password.Text), true, true, out user);
            }
            catch (Exception ex)
            {
                hasError = true;
                message  = ex.Message;
            }
            // Check the database status after login is verified
            if (companyDB != null && !hasError)
            {
                if (!companyDB.CompanyDBIsActive)
                {
                    hasError = true;
                    message  = "Subscribed service has been expired; please contact customer service hotline for assistant.";
                }
            }

            if (!hasError)
            {
                //  Create Login Audit for successfully login
                HROne.Lib.Entities.ELoginAudit.CreateLoginAudit(mainDBConn, user.UserID, Username.Text, Request, AppUtils.ServerDateTime(), false, string.Empty);
                Session["LoginID"]           = user.LoginID;
                Session["PasswordEncrypted"] = user.UserPassword;
                if (companyDB != null)
                {
                    Session["CompanyDBID"] = companyDB.CompanyDBID;
                }

                if (mainDBConn is HROne.DataAccess.DatabaseConnectionWithAudit)
                {
                    ((HROne.DataAccess.DatabaseConnectionWithAudit)mainDBConn).UserID = user.UserID;
                }
                WebUtils.SetSessionLanguage(Session, user);

                //WebUtils.RefreshPermission(Session);
                bool isForceChangePassword = false;

                if (user.UserChangePasswordUnit == "D")
                {
                    if (AppUtils.ServerDateTime() < user.UserChangePasswordDate.AddDays(user.UserChangePasswordPeriod))
                    {
                        isForceChangePassword = false;
                    }
                    else
                    {
                        isForceChangePassword = true;
                    }
                }
                else if (user.UserChangePasswordUnit == "M")
                {
                    if (AppUtils.ServerDateTime() < user.UserChangePasswordDate.AddMonths(user.UserChangePasswordPeriod))
                    {
                        isForceChangePassword = false;
                    }
                    else
                    {
                        isForceChangePassword = true;
                    }
                }
                else if (user.UserChangePasswordUnit == "Y")
                {
                    if (AppUtils.ServerDateTime() < user.UserChangePasswordDate.AddYears(user.UserChangePasswordPeriod))
                    {
                        isForceChangePassword = false;
                    }
                    else
                    {
                        isForceChangePassword = true;
                    }
                }
                else
                {
                    isForceChangePassword = false;
                }
                if (user.UserChangePassword)
                {
                    isForceChangePassword = true;
                }

                //EInbox.GenerateInboxMessage(user.UserID);
                if (isForceChangePassword)
                {
                    Session["ForceChangePassword"] = true;
                }

                WebUtils.SetSessionLanguage(Session, WebUtils.GetCurUser(Session));
                //RegenerateSessionId();
                HROne.Lib.Entities.EInbox.DeleteAllDeletedUserID(mainDBConn);
                HROne.Common.WebUtility.RedirectURLwithEncryptedQueryString(Response, Session, "~/Default.aspx?LastURL=" + DecryptedRequest["LastURL"]);
            }
        }
        //  Remove all item for release session
        Session.Clear();
        Request.Cookies.Remove(HROne.Common.WebUtility.getDefaultSessionCookieName());
        //if (companyDB != null)
        //{
        //    Session.Remove("DatabaseConnection");
        //}
        {
            //  Create Login Audit for fail login
            if (user != null)
            {
                HROne.Lib.Entities.ELoginAudit.CreateLoginAudit(mainDBConn, user.UserID, Username.Text, Request, AppUtils.ServerDateTime(), true, message);
            }
            else
            {
                HROne.Lib.Entities.ELoginAudit.CreateLoginAudit(mainDBConn, 0, Username.Text, Request, AppUtils.ServerDateTime(), true, message);
            }

            message = message.Replace("\\", "\\\\").Replace("\r", "\\r").Replace("\n", "\\n").Replace("\"", "\\\"");
            message = message.Replace(HROne.Common.WebUtility.GetLocalizedString("validate.prompt"), "");
            ScriptManager.RegisterStartupScript(this, this.GetType(), "errorMessage", "alert(\"" + message + "\");", true);
            System.Threading.Thread.Sleep(1000);
        }
    }
    protected void btnGenerate_Click(object sender, EventArgs e)
    {
        PageErrors errors = PageErrors.getErrors(db, Page.Master);

        errors.clear();

        ArrayList empList = new ArrayList();

        foreach (RepeaterItem i in empRepeater.Items)
        {
            CheckBox cb = (CheckBox)i.FindControl("ItemSelect");
            if (cb.Checked)
            {
                EEmpPersonalInfo o = (EEmpPersonalInfo)EEmpPersonalInfo.db.createObject();
                WebFormUtils.GetKeys(EEmpPersonalInfo.db, o, cb);
                empList.Add(o);
            }
        }


        string   strEmpList          = string.Empty;
        string   strPayBatchList     = string.Empty;
        string   strPayPeriodRequest = string.Empty;
        DateTime dtPayPeriodFr       = new DateTime();
        DateTime dtPayPeriodTo       = new DateTime();

        if (empList.Count > 0)
        {
            foreach (EEmpPersonalInfo o in empList)
            {
                if (strEmpList == string.Empty)
                {
                    strEmpList = ((EEmpPersonalInfo)o).EmpID.ToString();
                }
                else
                {
                    strEmpList += "_" + ((EEmpPersonalInfo)o).EmpID.ToString();
                }
            }
            if (DateTime.TryParse(PayPeriodFr.Value, out dtPayPeriodFr) && DateTime.TryParse(PayPeriodTo.Value, out dtPayPeriodTo))
            {
                strPayPeriodRequest = "&PayPeriodFr=" + dtPayPeriodFr.Ticks + "&PayPeriodTo=" + dtPayPeriodTo.Ticks;
            }
            else
            {
                errors.addError("Invalid Date Format");
            }


            //            errors.addError("Complete");
            //Response.Write("<script>alert('Completed'); </script>");
        }
        else
        {
            errors.addError("Employee or Payroll Batch not selected");
        }

        if (errors.isEmpty())
        {
            GenericMPFFile mpfFileProcess = getMPFFileObject();
            if (mpfFileProcess == null)
            {
                errors.addError("Generate MPF File is not available for that MPF Scheme");
                return;
            }
            if (mpfFileProcess is HSBCMPFGatewayFileEncrypted)
            {
                string keyFolderPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "BankKey");

                string keyPath             = string.Empty;
                string HSBCKeyFileName     = "HSBC.pub";
                string HangSengKeyFileName = "HASE.pub";
                string password            = "******";

                int intMPFPlanID = 0;

                if (int.TryParse(MPFPlanID.SelectedValue, out intMPFPlanID))
                {
                    EMPFPlan mpfPlan = new EMPFPlan();
                    mpfPlan.MPFPlanID = intMPFPlanID;
                    if (EMPFPlan.db.select(dbConn, mpfPlan))
                    {
                        EMPFScheme mpfScheme = new EMPFScheme();
                        mpfScheme.MPFSchemeID = mpfPlan.MPFSchemeID;
                        if (EMPFScheme.db.select(dbConn, mpfScheme))
                        {
                            if (mpfScheme.MPFSchemeTrusteeCode.Equals("HSBC"))
                            {
                                keyPath = System.IO.Path.Combine(keyFolderPath, HSBCKeyFileName);
                                if (Application["MasterDBConfig"] != null)
                                {
                                    DatabaseConnection masterDBConn = ((DatabaseConfig)Application["MasterDBConfig"]).CreateDatabaseConnectionObject();
                                    string             HSBCKeyPath  = HROne.SaaS.Entities.ESystemParameter.getParameter(masterDBConn, HROne.SaaS.Entities.ESystemParameter.PARAM_CODE_BANKKEY_HSBC_PATH);
                                    string             HSBCPassword = HROne.SaaS.Entities.ESystemParameter.getParameterWithEncryption(masterDBConn, HROne.SaaS.Entities.ESystemParameter.PARAM_CODE_BANKKEY_HSBC_PASSWORD);
                                    if (!string.IsNullOrEmpty(HSBCKeyPath) && !string.IsNullOrEmpty(HSBCPassword))
                                    {
                                        keyPath  = HSBCKeyPath;
                                        password = HSBCPassword;
                                    }
                                }
                            }
                            else if (mpfScheme.MPFSchemeTrusteeCode.Equals("HangSeng"))
                            {
                                keyPath = System.IO.Path.Combine(keyFolderPath, HangSengKeyFileName);
                                if (Application["MasterDBConfig"] != null)
                                {
                                    DatabaseConnection masterDBConn = ((DatabaseConfig)Application["MasterDBConfig"]).CreateDatabaseConnectionObject();
                                    string             HASEKeyPath  = HROne.SaaS.Entities.ESystemParameter.getParameter(masterDBConn, HROne.SaaS.Entities.ESystemParameter.PARAM_CODE_BANKKEY_HASE_PATH);
                                    string             HASEPassword = HROne.SaaS.Entities.ESystemParameter.getParameterWithEncryption(masterDBConn, HROne.SaaS.Entities.ESystemParameter.PARAM_CODE_BANKKEY_HASE_PASSWORD);
                                    if (!string.IsNullOrEmpty(HASEKeyPath) && !string.IsNullOrEmpty(HASEPassword))
                                    {
                                        keyPath  = HASEKeyPath;
                                        password = HASEPassword;
                                    }
                                }
                            }
                        }
                    }
                }

                HSBCMPFGatewayFileEncrypted mpfFileEncrypted = (HSBCMPFGatewayFileEncrypted)mpfFileProcess;

                mpfFileEncrypted.publicKeyFile     = keyPath;
                mpfFileEncrypted.publicKeyPassword = password;
            }

            HROneConfig config = HROneConfig.GetCurrentHROneConfig();
            if (config.GenerateReportAsInbox)
            {
                if (EInboxAttachment.GetTotalSize(dbConn, 0) < WebUtils.productLicense(Session).MaxInboxSizeMB * 1000 * 1000)
                {
                    HROne.TaskService.GenerateMPFContributionFileTaskFactory reportTask = new HROne.TaskService.GenerateMPFContributionFileTaskFactory(dbConn, user, lblReportHeader.Text, mpfFileProcess, empList, int.Parse(MPFPlanID.SelectedValue), dtPayPeriodFr, dtPayPeriodTo, ci);
                    AppUtils.reportTaskQueueService.AddTask(reportTask);
                    errors.addError(HROne.Translation.PageMessage.REPORT_GENERATING_TO_INBOX);
                }
                else
                {
                    errors.addError(HROne.Translation.PageMessage.INBOX_SIZE_EXCEEDED);
                }
            }
            else
            {
                try
                {
                    mpfFileProcess.LoadMPFFileDetail(empList, int.Parse(MPFPlanID.SelectedValue), dtPayPeriodFr, dtPayPeriodTo);
                    FileInfo mpfFileInfo = mpfFileProcess.GenerateMPFFile();

                    string mpfFilename = mpfFileProcess.ActualMPFFileName();
                    WebUtils.TransmitFile(Response, mpfFileInfo.FullName, mpfFilename, true);
                }
                catch (Exception ex)
                {
                    errors.addError(ex.Message);
                }
            }
        }
//        emploadData(empInfo, EEmpPayroll.db, empRepeater);
    }
Esempio n. 20
0
    protected void Login_Click(object sender, EventArgs e)
    {
        EESSUser user = null;

        Session.Clear();

        HROne.DataAccess.DatabaseConnection  mainDBConn = null;
        HROne.SaaS.Entities.ECompanyDatabase companyDB  = null;
        bool   hasError = false;
        string message  = string.Empty;

        // always check whether companyDB exists after click
        if (Application["MasterDBConfig"] != null)
        {
            DatabaseConfig masterDBConfig = (DatabaseConfig)Application["MasterDBConfig"];
            HROne.DataAccess.DatabaseConnection masterDBConn = masterDBConfig.CreateDatabaseConnectionObject();
            DBFilter companyDatabaseFilter = new DBFilter();
            companyDatabaseFilter.add(new Match("CompanyDBClientCode", txtCustomerID.Text));
            ArrayList companyDatabaseList = HROne.SaaS.Entities.ECompanyDatabase.db.select(masterDBConn, companyDatabaseFilter);
            if (companyDatabaseList.Count > 0)
            {
                companyDB = (HROne.SaaS.Entities.ECompanyDatabase)companyDatabaseList[0];

                DatabaseConfig tempDBConfig = new DatabaseConfig();
                tempDBConfig.ConnectionString = companyDB.getConnectionString(masterDBConn);
                tempDBConfig.DBType           = WebUtils.DBTypeEmun.MSSQL;

                if (tempDBConfig.TestConnection())
                {
                    mainDBConn = tempDBConfig.CreateDatabaseConnectionObject();

                    HROne.Lib.Entities.ESystemParameter.setParameter(mainDBConn, HROne.Lib.Entities.ESystemParameter.PARAM_CODE_PRODUCTKEY, companyDB.CompanyDBProductKey);
                    HROne.Lib.Entities.ESystemParameter.setParameter(mainDBConn, HROne.Lib.Entities.ESystemParameter.PARAM_CODE_PRODUCTFEATURECODE, companyDB.getProductFeatureCode(masterDBConn));

                    string[] smtpParameterList = new string[]
                    {
                        HROne.Lib.Entities.ESystemParameter.PARAM_CODE_SMTP_SERVER_NAME,
                        HROne.Lib.Entities.ESystemParameter.PARAM_CODE_SMTP_PORT,
                        HROne.Lib.Entities.ESystemParameter.PARAM_CODE_SMTP_USERNAME,
                        HROne.Lib.Entities.ESystemParameter.PARAM_CODE_SMTP_ENABLE_SSL,
                        HROne.Lib.Entities.ESystemParameter.PARAM_CODE_SMTP_SMTP_OUTGOING_EMAIL_ADDRESS
                    };
                    foreach (string smptParameter in smtpParameterList)
                    {
                        HROne.Lib.Entities.ESystemParameter.setParameter(mainDBConn, smptParameter, ESystemParameter.getParameter(masterDBConn, smptParameter));
                    }
                    HROne.Lib.Entities.ESystemParameter.setParameterWithEncryption(mainDBConn, HROne.Lib.Entities.ESystemParameter.PARAM_CODE_SMTP_PASSWORD
                                                                                   , HROne.SaaS.Entities.ESystemParameter.getParameterWithEncryption(masterDBConn, HROne.SaaS.Entities.ESystemParameter.PARAM_CODE_SMTP_PASSWORD));
                }
                else
                {
                    if (HROne.DataAccess.DBAESEncryptStringFieldAttribute.InvalidRSAKey)
                    {
                        HttpRuntime.UnloadAppDomain();
                    }
                }
            }
        }
        else
        {
            mainDBConn = WebUtils.GetDatabaseConnection();
            if (mainDBConn == null)
            {
                if (multiDBRow.Visible)
                {
                    int idx;
                    if (int.TryParse(cboDatabase.SelectedValue, out idx))
                    {
                        HROneConfig    config   = HROneConfig.GetCurrentHROneConfig();
                        DatabaseConfig dbconfig = config.DatabaseConfigList[idx];
                        if (dbconfig.TestConnection())
                        {
                            mainDBConn = dbconfig.CreateDatabaseConnectionObject();
                        }
                        else
                        {
                            ScriptManager.RegisterStartupScript(this, this.GetType(), "errorMessage", "alert(\"Fail to connect database\");", true);
                            return;
                        }
                    }
                }
            }
        }
        if (mainDBConn != null)
        {
            WebUtils.SetSessionDatabaseConnection(Session, mainDBConn);
        }

        HROne.ProductLicense productLicense = WebUtils.productLicense(Session);
        if (productLicense != null)
        {
            if (companyDB == null && productLicense.ProductType == HROne.ProductLicense.ProductLicenseType.HROneSaaS)
            {
                productLicense.LoadProductKey(string.Empty);
            }
        }

        if (mainDBConn == null && companyDB != null)
        {
            hasError = true;
            message  = "Fail to connect to database. Please contact to customer service.";
        }
        if (!hasError)
        {
            bool ChangePassword = false;
            try
            {
                WebUtils.ValidateUser(mainDBConn, Username.Text, HROne.CommonLib.Hash.PasswordHash(Password.Text), true, out ChangePassword, out user);
            }
            catch (Exception ex)
            {
                hasError = true;
                message  = ex.Message;
            }
            // copy from GAP customization, checking Active Directory ID
            if (user != null)
            {
                DBFilter ADIDFilter = new DBFilter();
                ADIDFilter.add(new Match("EmpExtraFieldName", "AD ID"));
                DBFilter ADIDValueFilter = new DBFilter();
                ADIDValueFilter.add(new IN("EmpExtraFieldID", "Select EmpExtraFieldID from " + EEmpExtraField.db.dbclass.tableName, ADIDFilter));
                ADIDValueFilter.add(new Match("EmpID", user.EmpID));

                ArrayList ADIDList = EEmpExtraFieldValue.db.select(dbConn, ADIDValueFilter);
                if (ADIDList.Count > 0)
                {
                    string remoteUser = Request.ServerVariables["REMOTE_USER"].Trim();
                    string ADID       = ((EEmpExtraFieldValue)ADIDList[0]).EmpExtraFieldValue.Trim();

                    if (!remoteUser.Equals(ADID, StringComparison.CurrentCultureIgnoreCase) && !remoteUser.EndsWith("\\" + ADID, StringComparison.CurrentCultureIgnoreCase) && !remoteUser.EndsWith("/" + ADID, StringComparison.CurrentCultureIgnoreCase))
                    {
                        hasError = true;
                        message  = "This PC is not logged with your network ID!";
                    }
                }
            }
            if (companyDB != null && !hasError)
            {
                if (!companyDB.CompanyDBIsActive)
                {
                    hasError = true;
                    message  = "Subscribed service has been expired; please contact customer service hotline for assistant.";
                }
                if (!productLicense.IsESS)
                {
                    hasError = true;
                    message  = "You are NOT subscribed the service.";
                }
            }

            if (!hasError)
            {
                HROne.Lib.Entities.EESSLoginAudit.CreateLoginAudit(mainDBConn, user.EmpID, Username.Text, Request, AppUtils.ServerDateTime(), false, string.Empty);

                // ADD the Session "User" Value is user
                Session["User"] = user;

                if (ChangePassword)
                {
                    Session.Add("ForceChangePassword", true);
                }
                WebUtils.SetSessionLanguage(Session, user);
                HROne.Common.WebUtility.RedirectURLwithEncryptedQueryString(Response, Session, "~/Default.aspx?LastURL=" + DecryptedRequest["LastURL"]);
            }
        }
        //  Remove all item for release session
        Session.Clear();
        Request.Cookies.Remove(HROne.Common.WebUtility.getDefaultSessionCookieName());
        //if (companyDB != null)
        //{
        //    Session.Remove("DatabaseConnection");
        //}
        {
            if (user != null)
            {
                HROne.Lib.Entities.EESSLoginAudit.CreateLoginAudit(mainDBConn, user.EmpID, Username.Text, Request, AppUtils.ServerDateTime(), true, message);
            }
            else
            {
                HROne.Lib.Entities.EESSLoginAudit.CreateLoginAudit(mainDBConn, 0, Username.Text, Request, AppUtils.ServerDateTime(), true, message);
            }

            //message = message.Replace("\\", "\\\\").Replace("\r", "\\r").Replace("\n", "\\n").Replace("\"", "\\\"");
            //message = message.Replace(HROne.Common.WebUtility.GetLocalizedString("validate.prompt"), "");
            //ScriptManager.RegisterStartupScript(this, this.GetType(), "errorMessage", "alert(\"" + message + "\");", true);
            Prompt.Text = message;
            System.Threading.Thread.Sleep(1000);
        }
    }
Esempio n. 21
0
    private void GenerateEmployeeExcel(ArrayList employeeList, ArrayList functionList)
    {
        PageErrors errors = PageErrors.getErrors(db, Page.Master);

        errors.clear();

        HROne.Import.EmployeeInformationExportProcess reportProcess = new HROne.Import.EmployeeInformationExportProcess(dbConn, ci, employeeList, functionList, IncludedEmployeeNameHierarchy.Checked, DisplayCodeOnly.Checked, ShowInternalID.Checked);

        if (Response.IsClientConnected)
        {
            HROneConfig config = HROneConfig.GetCurrentHROneConfig();
            if (config.GenerateReportAsInbox)
            {
                if (EInboxAttachment.GetTotalSize(dbConn, 0) < WebUtils.productLicense(Session).MaxInboxSizeMB * 1000 * 1000)
                {
                    HROne.TaskService.GenericExcelReportTaskFactory reportTask = new HROne.TaskService.GenericExcelReportTaskFactory(dbConn, user, lblReportHeader.Text, reportProcess, "EmployeeExport");
                    AppUtils.reportTaskQueueService.AddTask(reportTask);
                    errors.addError(HROne.Translation.PageMessage.REPORT_GENERATING_TO_INBOX);
                }
                else
                {
                    errors.addError(HROne.Translation.PageMessage.INBOX_SIZE_EXCEEDED);
                }
            }
            else
            {
                System.IO.FileInfo excelFile = reportProcess.GenerateExcelReport();
                WebUtils.TransmitFile(Response, excelFile.FullName, "EmployeeExport_" + AppUtils.ServerDateTime().ToString("yyyyMMddHHmmss") + ".xls", true);
            }
        }

        //DataSet excelDataSet= new DataSet();

        //foreach (string functionCode in functionList)
        //{
        //    if (functionCode.Equals("PER001"))
        //        excelDataSet.Tables.Add(HROne.Import.ImportEmpPersonalInfoProcess.Export(dbConn, employeeList, IncludedEmployeeNameHierarchy.Checked));
        //    if (functionCode.Equals("PER002"))
        //        excelDataSet.Tables.Add(HROne.Import.ImportEmpBankAccountProcess.Export(dbConn, employeeList, IncludedEmployeeNameHierarchy.Checked));
        //    if (functionCode.Equals("PER003"))
        //    {
        //        excelDataSet.Tables.Add(HROne.Import.ImportEmpSpouseProcess.Export(dbConn, employeeList, IncludedEmployeeNameHierarchy.Checked));
        //        excelDataSet.Tables.Add(HROne.Import.ImportEmpDependantProcess.Export(dbConn, employeeList, IncludedEmployeeNameHierarchy.Checked));
        //    }
        //    if (functionCode.Equals("PER004"))
        //    {
        //        excelDataSet.Tables.Add(HROne.Import.ImportEmpQualificationProcess.Export(dbConn, employeeList, IncludedEmployeeNameHierarchy.Checked, !DisplayCodeOnly.Checked));
        //        excelDataSet.Tables.Add(HROne.Import.ImportEmpSkillProcess.Export(dbConn, employeeList, IncludedEmployeeNameHierarchy.Checked, !DisplayCodeOnly.Checked));
        //    }
        //    if (functionCode.Equals("PER005"))
        //        excelDataSet.Tables.Add(HROne.Import.ImportEmpPlaceOfResidenceProcess.Export(dbConn, employeeList, IncludedEmployeeNameHierarchy.Checked));
        //    if (functionCode.Equals("PER006"))
        //        excelDataSet.Tables.Add(HROne.Import.ImportEmpContractTermsProcess.Export(dbConn, employeeList, IncludedEmployeeNameHierarchy.Checked));
        //    if (functionCode.Equals("PER007"))
        //        excelDataSet.Tables.Add(HROne.Import.ImportEmpPositionInfoProcess.Export(dbConn, employeeList, IncludedEmployeeNameHierarchy.Checked, !DisplayCodeOnly.Checked));
        //    if (functionCode.Equals("PER007_1"))
        //        excelDataSet.Tables.Add(HROne.Import.ImportEmpRecurringPaymentProcess.Export(dbConn, employeeList, IncludedEmployeeNameHierarchy.Checked, !DisplayCodeOnly.Checked));
        //    if (functionCode.Equals("PER008"))
        //    {
        //        excelDataSet.Tables.Add(HROne.Import.ImportEmpMPFPlanProcess.Export(dbConn, employeeList, IncludedEmployeeNameHierarchy.Checked, !DisplayCodeOnly.Checked));
        //        excelDataSet.Tables.Add(HROne.Import.ImportEmpAVCPlanProcess.Export(dbConn, employeeList, IncludedEmployeeNameHierarchy.Checked, !DisplayCodeOnly.Checked));
        //        excelDataSet.Tables.Add(HROne.Import.ImportEmpORSOPlanProcess.Export(dbConn, employeeList, IncludedEmployeeNameHierarchy.Checked, !DisplayCodeOnly.Checked));
        //    }
        //    if (functionCode.Equals("PER009"))
        //        excelDataSet.Tables.Add(HROne.Import.ImportLeaveApplicationProcess.Export(dbConn, employeeList, IncludedEmployeeNameHierarchy.Checked, !DisplayCodeOnly.Checked));
        //    if (functionCode.Equals("PER011"))
        //    {
        //        excelDataSet.Tables.Add(HROne.Import.ImportEmpTerminationProcess.Export(dbConn, employeeList, IncludedEmployeeNameHierarchy.Checked, !DisplayCodeOnly.Checked));
        //        excelDataSet.Tables.Add(HROne.Import.ImportEmpFinalPaymentProcess.Export(dbConn, employeeList, IncludedEmployeeNameHierarchy.Checked, !DisplayCodeOnly.Checked));
        //    }
        //    if (functionCode.Equals("PER012"))
        //        excelDataSet.Tables.Add(HROne.Import.ImportEmpCostCenterProcess.Export(dbConn, employeeList, IncludedEmployeeNameHierarchy.Checked, !DisplayCodeOnly.Checked));
        //    if (functionCode.Equals("PER013"))
        //        excelDataSet.Tables.Add(HROne.Import.ImportEmpPermitProcess.Export(dbConn, employeeList, IncludedEmployeeNameHierarchy.Checked, !DisplayCodeOnly.Checked));
        //    if (functionCode.Equals("PER015"))
        //        excelDataSet.Tables.Add(HROne.Import.ImportEmpEmergencyContactProcess.Export(dbConn, employeeList, IncludedEmployeeNameHierarchy.Checked));
        //    if (functionCode.Equals("PER016"))
        //        excelDataSet.Tables.Add(HROne.Import.ImportEmpWorkExpProcess.Export(dbConn, employeeList, IncludedEmployeeNameHierarchy.Checked, !DisplayCodeOnly.Checked));
        //    if (functionCode.Equals("PER017"))
        //        excelDataSet.Tables.Add(HROne.Import.ImportEmpWorkInjuryRecordProcess.Export(dbConn, employeeList, IncludedEmployeeNameHierarchy.Checked));

        //}

        //string exportFileName = System.IO.Path.GetTempFileName();
        //System.IO.File.Delete(exportFileName);
        //exportFileName += ".xls";
        //HROne.Export.ExcelExport excelExport = new HROne.Export.ExcelExport(exportFileName);
        //excelExport.Update(excelDataSet);
        //WebUtils.TransmitFile(Response, exportFileName, "EmployeeExport_" + AppUtils.ServerDateTime().ToString("yyyyMMddHHmmss") + ".xls", true);
        //return;
    }
Esempio n. 22
0
    protected void btnGenerate_Click(object sender, EventArgs e)
    {
        PageErrors errors = PageErrors.getErrors(db, Page.Master);

        errors.clear();

        ArrayList list = WebUtils.SelectedRepeaterItemToBaseObjectList(EEmpPersonalInfo.db, Repeater, "ItemSelect");

        if (list.Count > 0)
        {
            HROne.Reports.Payroll.PaymentSummaryListProcess reportProcess;
            if (Payroll_PeriodSelectionList1.SelectedPayrollStatus.Equals("T"))
            {
                reportProcess = new HROne.Reports.Payroll.PaymentSummaryListProcess(dbConn, ci, list, HROne.Reports.Payroll.PaymentSummaryListProcess.ReportType.TrialRun, Payroll_PeriodSelectionList1.GetTrialRunPayPeriodList(), null);
            }
            else
            {
                reportProcess = new HROne.Reports.Payroll.PaymentSummaryListProcess(dbConn, ci, list, HROne.Reports.Payroll.PaymentSummaryListProcess.ReportType.History, null, Payroll_PeriodSelectionList1.GetPayBatchList());
            }

            if (Response.IsClientConnected)
            {
                HROneConfig config = HROneConfig.GetCurrentHROneConfig();
                if (config.GenerateReportAsInbox)
                {
                    if (EInboxAttachment.GetTotalSize(dbConn, 0) < WebUtils.productLicense(Session).MaxInboxSizeMB * 1000 * 1000)
                    {
                        HROne.TaskService.GenericExcelReportTaskFactory reportTask = new HROne.TaskService.GenericExcelReportTaskFactory(dbConn, user, lblReportHeader.Text, reportProcess, "PaymentList");
                        AppUtils.reportTaskQueueService.AddTask(reportTask);
                        errors.addError(HROne.Translation.PageMessage.REPORT_GENERATING_TO_INBOX);
                    }
                    else
                    {
                        errors.addError(HROne.Translation.PageMessage.INBOX_SIZE_EXCEEDED);
                    }
                }
                else
                {
                    System.IO.FileInfo excelFile = reportProcess.GenerateExcelReport();
                    WebUtils.TransmitFile(Response, excelFile.FullName, "PaymentList_" + AppUtils.ServerDateTime().ToString("yyyyMMddHHmmss") + ".xls", true);
                }
            }

//            const string PAYMENTCODE_PREFIX = "[Payment] ";
//            string exportFileName = System.IO.Path.GetTempFileName();
//            System.IO.File.Delete(exportFileName);
//            exportFileName += ".xls";
//            //System.IO.File.Copy(Server.MapPath("~/template/HistoryList_Template.xls"), exportFileName, true);
//            HROne.Export.ExcelExport export = new HROne.Export.ExcelExport(exportFileName);
//            DataSet dataSet = new DataSet(); //export.GetDataSet();
//            DataTable dataTable = new DataTable("Payroll$");
//            dataSet.Tables.Add(dataTable);
//            dataTable.Columns.Add("Company", typeof(string));

//            DBFilter hierarchyLevelFilter = new DBFilter();
//            Hashtable hierarchyLevelHashTable = new Hashtable();
//            hierarchyLevelFilter.add("HLevelSeqNo", true);
//            ArrayList hierarchyLevelList = EHierarchyLevel.db.select(dbConn, hierarchyLevelFilter);
//            foreach (EHierarchyLevel hlevel in hierarchyLevelList)
//            {
//                dataTable.Columns.Add(hlevel.HLevelDesc, typeof(string));
//                hierarchyLevelHashTable.Add(hlevel.HLevelID, hlevel);
//            }
//            dataTable.Columns.Add("Payroll Group", typeof(string));
//            dataTable.Columns.Add("Position", typeof(string));
//            dataTable.Columns.Add("EmpNo", typeof(string));
//            dataTable.Columns.Add("English Name", typeof(string));
//            dataTable.Columns.Add("Chinese Name", typeof(string));
//            dataTable.Columns.Add("HKID", typeof(string));
//            dataTable.Columns.Add("From", typeof(DateTime));
//            dataTable.Columns.Add("To", typeof(DateTime));
//            int firstSummaryColumnPos = dataTable.Columns.Count;
//            dataTable.Columns.Add("Net Payment", typeof(double));
//            dataTable.Columns.Add("Relevant Income", typeof(double));
//            dataTable.Columns.Add("Non-Relevant Income", typeof(double));
//            dataTable.Columns.Add("Wages Payable for Min Wages", typeof(double));
//            dataTable.Columns.Add("Total Hours Worked", typeof(double));
//            dataTable.Columns.Add("Min Wages Required", typeof(double));
//            dataTable.Columns.Add("Employer Mandatory Contribution", typeof(double));
////            dataTable.Columns.Add("Employee Mandatory Contribution", typeof(double));
//            dataTable.Columns.Add("Employer Voluntary Contribution", typeof(double));
////            dataTable.Columns.Add("Employee Voluntary Contribution", typeof(double));
//            dataTable.Columns.Add("Employer P-Fund Contribution", typeof(double));
////            dataTable.Columns.Add("Employee P-Fund Contribution", typeof(double));
//            dataTable.Columns.Add("Total Employer Contribution", typeof(double));
//            dataTable.Columns.Add("Total Employee Contribution", typeof(double));
//            dataTable.Columns.Add("Total Taxable Payment", typeof(double));
//            dataTable.Columns.Add("Total Non-Taxable Payment", typeof(double));
//            int firstDetailColumnPos = dataTable.Columns.Count;


//            foreach (EEmpPersonalInfo empInfo in list)
//            {
//                EEmpPersonalInfo.db.select(dbConn, empInfo);



//                DBFilter empPayrollFilterForPayrollPeriod = new DBFilter();
//                empPayrollFilterForPayrollPeriod.add(new Match("ep.EmpID", empInfo.EmpID));
//                empPayrollFilterForPayrollPeriod.add(Payroll_PeriodSelectionList1.GetEmpPayrollDBTerm());

//                DBFilter payPeriodFilter = new DBFilter();
//                payPeriodFilter.add(new IN("PayPeriodID", "SELECT PayPeriodID from " + EEmpPayroll.db.dbclass.tableName + " ep", empPayrollFilterForPayrollPeriod));
//                ArrayList payPeriodList = EPayrollPeriod.db.select(dbConn, payPeriodFilter);

//                foreach (EPayrollPeriod payPeriod in payPeriodList)
//                {
//                    if (EPayrollPeriod.db.select(dbConn, payPeriod))
//                    {

//                        EPayrollGroup payrollGroup = new EPayrollGroup();
//                        payrollGroup.PayGroupID = payPeriod.PayGroupID;
//                        EPayrollGroup.db.select(dbConn, payrollGroup);

//                        DataRow row = dataTable.NewRow();
//                        row["EmpNo"] = empInfo.EmpNo;
//                        row["English Name"] = empInfo.EmpEngFullName;
//                        row["Chinese Name"] = empInfo.EmpChiFullName;
//                        row["HKID"] = empInfo.EmpHKID;
//                        row["From"] = payPeriod.PayPeriodFr;
//                        row["To"] = payPeriod.PayPeriodTo;
//                        row["Payroll Group"] = payrollGroup.PayGroupDesc;
//                        DBFilter empPosFilter = new DBFilter();

//                        EEmpPositionInfo empPos = AppUtils.GetLastPositionInfo(dbConn, payPeriod.PayPeriodTo, empInfo.EmpID);
//                        if (empPos != null)
//                        {
//                            ECompany company = new ECompany();
//                            company.CompanyID = empPos.CompanyID;
//                            if (ECompany.db.select(dbConn, company))
//                                row["Company"] = company.CompanyCode;

//                            DBFilter empHierarchyFilter = new DBFilter();
//                            empHierarchyFilter.add(new Match("EmpPosID", empPos.EmpPosID));
//                            ArrayList empHierarchyList = EEmpHierarchy.db.select(dbConn, empHierarchyFilter);
//                            foreach (EEmpHierarchy empHierarchy in empHierarchyList)
//                            {
//                                EHierarchyLevel hierarchyLevel = (EHierarchyLevel)hierarchyLevelHashTable[empHierarchy.HLevelID];
//                                if (hierarchyLevel != null)
//                                {
//                                    EHierarchyElement hierarchyElement = new EHierarchyElement();
//                                    hierarchyElement.HElementID = empHierarchy.HElementID;
//                                    if (EHierarchyElement.db.select(dbConn, hierarchyElement))
//                                        row[hierarchyLevel.HLevelDesc] = hierarchyElement.HElementDesc;
//                                }
//                            }
//                            EPosition position = new EPosition();
//                            position.PositionID = empPos.PositionID;
//                            if (EPosition.db.select(dbConn, position))
//                                row["Position"] = position.PositionDesc;


//                        }

//                        double netAmount = 0, releventIncome = 0, nonRelevantIncome = 0, taxableAmount = 0, nonTaxableAmount = 0;
//                        double mcER = 0, mcEE = 0;
//                        double vcER = 0, vcEE = 0;
//                        double pFundER = 0, pFundEE = 0;

//                        DBFilter empPayrollFilterForPaymentRecord = new DBFilter(empPayrollFilterForPayrollPeriod);
//                        empPayrollFilterForPaymentRecord.add(new Match("PayPeriodID", payPeriod.PayPeriodID));
//                        DBFilter paymentRecordFilter = new DBFilter();
//                        paymentRecordFilter.add(new IN("EmpPayrollID", "Select EmpPayrollID from " + EEmpPayroll.db.dbclass.tableName + " ep ", empPayrollFilterForPaymentRecord));
//                        paymentRecordFilter.add(new Match("PayRecStatus", "A"));
//                        ArrayList paymentRecords = EPaymentRecord.db.select(dbConn, paymentRecordFilter);

//                        foreach (EPaymentRecord paymentRecord in paymentRecords)
//                        {
//                            EPaymentCode payCode = new EPaymentCode();
//                            payCode.PaymentCodeID = paymentRecord.PaymentCodeID;
//                            EPaymentCode.db.select(dbConn, payCode);
//                            //  Always Use Payment Code Description for grouping payment code with same description
//                            string fieldName = PAYMENTCODE_PREFIX + payCode.PaymentCodeDesc;
//                            if (dataTable.Columns[fieldName] == null)
//                                dataTable.Columns.Add(new DataColumn(fieldName, typeof(double)));
//                            if (row[fieldName] == null || row[fieldName] == DBNull.Value)
//                                row[fieldName] = 0;
//                            row[fieldName] = (double)row[fieldName] + paymentRecord.PayRecActAmount;


//                            netAmount += paymentRecord.PayRecActAmount;
//                            if (payCode.PaymentCodeIsMPF)
//                                releventIncome += paymentRecord.PayRecActAmount;
//                            else
//                                nonRelevantIncome += paymentRecord.PayRecActAmount;

//                            DBFilter taxPaymentMapFilter = new DBFilter();
//                            taxPaymentMapFilter.add(new Match("PaymentCodeID", paymentRecord.PaymentCodeID));
//                            if (ETaxPaymentMap.db.count(dbConn, taxPaymentMapFilter) > 0)
//                                taxableAmount += paymentRecord.PayRecActAmount;
//                            else
//                                nonTaxableAmount += paymentRecord.PayRecActAmount;

//                        }

//                        row["Net Payment"] = HROne.CommonLib.GenericRoundingFunctions.RoundingTo(netAmount, ExchangeCurrency.DefaultCurrencyDecimalPlaces(), ExchangeCurrency.DefaultCurrencyDecimalPlaces());
//                        row["Relevant Income"] = HROne.CommonLib.GenericRoundingFunctions.RoundingTo(releventIncome, ExchangeCurrency.DefaultCurrencyDecimalPlaces(), ExchangeCurrency.DefaultCurrencyDecimalPlaces());
//                        row["Non-Relevant Income"] = HROne.CommonLib.GenericRoundingFunctions.RoundingTo(nonRelevantIncome, ExchangeCurrency.DefaultCurrencyDecimalPlaces(), ExchangeCurrency.DefaultCurrencyDecimalPlaces());
//                        row["Wages Payable for Min Wages"] = PayrollProcess.GetTotalWagesWithoutRestDayPayment(dbConn, empInfo.EmpID, payPeriod.PayPeriodFr, payPeriod.PayPeriodTo, null);
//                        row["Total Hours Worked"] = PayrollProcess.GetTotalEmpPayrollWorkingHours(dbConn, empInfo.EmpID, payPeriod.PayPeriodID);
//                        row["Min Wages Required"] = (double)row["Total Hours Worked"] * PayrollProcess.GetMinimumWages(dbConn, empInfo.EmpID, payPeriod.PayPeriodTo);
//                        row["Total Taxable Payment"] = HROne.CommonLib.GenericRoundingFunctions.RoundingTo(taxableAmount, ExchangeCurrency.DefaultCurrencyDecimalPlaces(), ExchangeCurrency.DefaultCurrencyDecimalPlaces());
//                        row["Total Non-Taxable Payment"] = HROne.CommonLib.GenericRoundingFunctions.RoundingTo(nonTaxableAmount, ExchangeCurrency.DefaultCurrencyDecimalPlaces(), ExchangeCurrency.DefaultCurrencyDecimalPlaces());

//                        DBFilter mpfRecordFilter = new DBFilter();
//                        mpfRecordFilter.add(new IN("EmpPayrollID", "Select EmpPayrollID from " + EEmpPayroll.db.dbclass.tableName + " ep ", empPayrollFilterForPaymentRecord));
//                        ArrayList mpfRecords = EMPFRecord.db.select(dbConn, mpfRecordFilter);
//                        foreach (EMPFRecord mpfRecord in mpfRecords)
//                        {
//                            vcER += mpfRecord.MPFRecActVCER;
//                            mcER += +mpfRecord.MPFRecActMCER;
//                            vcEE += mpfRecord.MPFRecActVCEE;
//                            mcEE += mpfRecord.MPFRecActMCEE;
//                        }
//                        ArrayList orsoRecords = EORSORecord.db.select(dbConn, mpfRecordFilter);
//                        foreach (EORSORecord orsoRecord in orsoRecords)
//                        {
//                            pFundER += orsoRecord.ORSORecActER;
//                            pFundEE += orsoRecord.ORSORecActEE;
//                        }
//                        row["Employer Mandatory Contribution"] = mcER;
//                        //                        row["Employee Mandatory Contribution"] = mcEE;
//                        row["Employer Voluntary Contribution"] = vcER;
//                        //                        row["Employee Voluntary Contribution"] = vcEE;
//                        row["Employer P-Fund Contribution"] = pFundER;
//                        //                        row["Employee P-Fund Contribution"] = pFundEE;

//                        row["Total Employer Contribution"] = mcER + vcER + pFundER;
//                        row["Total Employee Contribution"] = mcEE + vcEE + pFundEE;
//                        dataTable.Rows.Add(row);
//                    }
//                }
//            }

//            DBFilter paymentCodeFilter = new DBFilter();
//            paymentCodeFilter.add("PaymentCodeDisplaySeqNo", false);
//            paymentCodeFilter.add("PaymentCode", false);
//            ArrayList paymentCodeList = EPaymentCode.db.select(dbConn, paymentCodeFilter);
//            foreach (EPaymentCode paymentCode in paymentCodeList)
//            {
//                if (dataTable.Columns.Contains(PAYMENTCODE_PREFIX + paymentCode.PaymentCodeDesc))
//                {
//                    DataColumn paymentColumn = dataTable.Columns[PAYMENTCODE_PREFIX + paymentCode.PaymentCodeDesc];
//                    paymentColumn.SetOrdinal(firstDetailColumnPos);
//                    if (!dataTable.Columns.Contains(paymentCode.PaymentCodeDesc))
//                        paymentColumn.ColumnName = paymentCode.PaymentCodeDesc;
//                    else
//                    {
//                        System.Diagnostics.Debug.Write("System reserved payment column is used");
//                    }
//                }
//            }
//            for (int i = 0; i < firstDetailColumnPos; i++)
//                dataTable.Columns[i].ColumnName = HROne.Common.WebUtility.GetLocalizedString(dataTable.Columns[i].ColumnName);

//            for (int i = firstSummaryColumnPos; i < firstDetailColumnPos; i++)
//                dataTable.Columns[firstSummaryColumnPos].SetOrdinal(dataTable.Columns.Count - 1);


//            export.Update(dataSet);
//            WebUtils.TransmitFile(Response, exportFileName, "PaymentList_" + AppUtils.ServerDateTime().ToString("yyyyMMddHHmmss") + ".xls", true);
//            return;
        }
        else
        {
            errors.addError("Employee not selected");
        }
    }
    protected void btnGenerate_Click(object sender, EventArgs e)
    {
        PageErrors errors = PageErrors.getErrors(EPayrollGroup.db, Page.Master);

        DateTime dtPeriodFrom        = new DateTime();
        DateTime dtPeriodTo          = new DateTime();
        int      intHierarchyLevelID = 0;
        int      m_companyID         = int.Parse(CompanyID.SelectedValue);

        //if (!string.IsNullOrEmpty(PayPeriodFr.Value))
        if (!DateTime.TryParse(PayPeriodFr.Value, out dtPeriodFrom))
        {
            errors.addError(HROne.Translation.PageErrorMessage.ERROR_DATE_FORMAT);
            return;
        }

        //if (!string.IsNullOrEmpty(PayPeriodTo.Value))
        if (!DateTime.TryParse(PayPeriodTo.Value, out dtPeriodTo))
        {
            errors.addError(HROne.Translation.PageErrorMessage.ERROR_DATE_FORMAT);
            return;
        }

        if ((dtPeriodTo.Year * 12 + dtPeriodTo.Month) - (dtPeriodFrom.Year * 12 + dtPeriodFrom.Month) >= 36)
        {
            errors.addError("Payroll period exceed maximum (36 months)");
            return;
        }

        if (!int.TryParse(HLevelID.SelectedValue, out intHierarchyLevelID))
        {
            errors.addError("Invalid Hierarchy Level");
            return;
        }

        // Start 0000185, KuangWei, 2015-05-05
        ArrayList empList = WebUtils.SelectedRepeaterItemToBaseObjectList(db, Repeater, "ItemSelect");

        if (empList.Count <= 0)
        {
            errors.addError("No Employees are selected");
            return;
        }

        HROne.Reports.Payroll.PayrollAllocationReport_Detail_Process reportProcess = new HROne.Reports.Payroll.PayrollAllocationReport_Detail_Process(dbConn, ci, dtPeriodFrom, dtPeriodTo, intHierarchyLevelID, chkShowIndividuals.Checked, WebUtils.GetCurUser(Session), m_companyID, empList);
        // End 0000185, KuangWei, 2015-05-05

        if (Response.IsClientConnected)
        {
            HROneConfig config = HROneConfig.GetCurrentHROneConfig();
            if (config.GenerateReportAsInbox)
            {
                if (EInboxAttachment.GetTotalSize(dbConn, 0) < WebUtils.productLicense(Session).MaxInboxSizeMB * 1000 * 1000)
                {
                    HROne.TaskService.GenericExcelReportTaskFactory reportTask = new HROne.TaskService.GenericExcelReportTaskFactory(dbConn, user, lblReportHeader.Text, reportProcess, "PFundContributionSummary");
                    AppUtils.reportTaskQueueService.AddTask(reportTask);
                    errors.addError(HROne.Translation.PageMessage.REPORT_GENERATING_TO_INBOX);
                }
                else
                {
                    errors.addError(HROne.Translation.PageMessage.INBOX_SIZE_EXCEEDED);
                }
            }
            else
            {
                System.IO.FileInfo excelFile = reportProcess.GenerateExcelReport();
                WebUtils.TransmitFile(Response, excelFile.FullName, "PFundContributionSummary_" + AppUtils.ServerDateTime().ToString("yyyyMMddHHmmss") + ".xls", true);
            }
        }
    }