Int64 IHREmployeeLoanApplicationDataAccess.Add(HREmployeeLoanApplicationEntity hREmployeeLoanApplicationEntity, DatabaseOperationType option, TransactionRequired reqTran)
        {
            try
            {
                long retValues = -99;

                switch (reqTran)
                {
                case TransactionRequired.No:
                {
                    retValues = Add(hREmployeeLoanApplicationEntity, option);
                    break;
                }

                case TransactionRequired.Yes:
                {
                    retValues = AddTran(hREmployeeLoanApplicationEntity, option);
                    break;
                }

                default:
                {
                    retValues = -99;
                    break;
                }
                }

                return(retValues);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private Int64 UpdateTran(HREmployeeLoanApplicationEntity hREmployeeLoanApplicationEntity, String filterExpression, DatabaseOperationType option)
        {
            long         returnCode = -99;
            const string SP         = "dbo.HREmployeeLoanApplication_SET";

            Database db = DatabaseFactory.CreateDatabase();

            using (DbCommand cmd = db.GetStoredProcCommand(SP))
            {
                AddOptionParameter(cmd, option, db);
                AddOutputParameter(cmd, db);
                AddFilterExpressionParameter(cmd, filterExpression, db);

                db.AddInParameter(cmd, "@EmployeeLoanApplicationID", DbType.Int64, hREmployeeLoanApplicationEntity.EmployeeLoanApplicationID);
                db.AddInParameter(cmd, "@EmployeeID", DbType.Int64, hREmployeeLoanApplicationEntity.EmployeeID);
                db.AddInParameter(cmd, "@LoanCategoryID", DbType.Int64, hREmployeeLoanApplicationEntity.LoanCategoryID);
                db.AddInParameter(cmd, "@AppliedLoanAmount", DbType.Decimal, hREmployeeLoanApplicationEntity.AppliedLoanAmount);
                db.AddInParameter(cmd, "@CurrencyID", DbType.Int64, hREmployeeLoanApplicationEntity.CurrencyID);
                db.AddInParameter(cmd, "@LoanPaymentStartDate", DbType.DateTime, hREmployeeLoanApplicationEntity.LoanPaymentStartDate);
                db.AddInParameter(cmd, "@LoanPaymentEndDate", DbType.DateTime, hREmployeeLoanApplicationEntity.LoanPaymentEndDate);
                db.AddInParameter(cmd, "@NumberOfInstallment", DbType.Decimal, hREmployeeLoanApplicationEntity.NumberOfInstallment);
                db.AddInParameter(cmd, "@Description", DbType.String, hREmployeeLoanApplicationEntity.Description);
                db.AddInParameter(cmd, "@EmployeeLoanApprovalStatusID", DbType.Int64, hREmployeeLoanApplicationEntity.EmployeeLoanApprovalStatusID);
                db.AddInParameter(cmd, "@Remarks", DbType.String, hREmployeeLoanApplicationEntity.Remarks);

                DbConnection connection = db.CreateConnection();
                connection.Open();
                DbTransaction transaction = connection.BeginTransaction();

                try
                {
                    using (IDataReader reader = db.ExecuteReader(cmd, transaction))
                    {
                        returnCode = GetReturnCodeFromParameter(cmd);
                    }

                    if (returnCode > 0)
                    {
                        transaction.Commit();
                    }
                    else
                    {
                        throw new ArgumentException("Error Code." + returnCode.ToString());
                    }
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
                finally
                {
                    transaction.Dispose();
                    connection.Close();
                    connection = null;
                }
            }

            return(returnCode);
        }
        private void PrepareEditView()
        {
            HREmployeeLoanApplicationEntity hREmployeeLoanApplicationEntity = CurrentHREmployeeLoanApplicationEntity;


            if (!hREmployeeLoanApplicationEntity.IsNew)
            {
                if (ddlLoanCategoryID.Items.Count > 0 && hREmployeeLoanApplicationEntity.LoanCategoryID != null)
                {
                    ddlLoanCategoryID.SelectedValue = hREmployeeLoanApplicationEntity.LoanCategoryID.ToString();
                }

                txtAppliedLoanAmount.Text = hREmployeeLoanApplicationEntity.AppliedLoanAmount.ToString();
                if (ddlCurrencyID.Items.Count > 0 && hREmployeeLoanApplicationEntity.CurrencyID != null)
                {
                    ddlCurrencyID.SelectedValue = hREmployeeLoanApplicationEntity.CurrencyID.ToString();
                }

                txtLoanPaymentStartDate.Text = hREmployeeLoanApplicationEntity.LoanPaymentStartDate.ToStringDefault();
                txtLoanPaymentEndDate.Text   = hREmployeeLoanApplicationEntity.LoanPaymentEndDate.ToStringDefault();
                txtNumberOfInstallment.Text  = hREmployeeLoanApplicationEntity.NumberOfInstallment.ToString();
                txtDescription.Text          = hREmployeeLoanApplicationEntity.Description.ToString();
                if (ddlEmployeeLoanApprovalStatusID.Items.Count > 0 && hREmployeeLoanApplicationEntity.EmployeeLoanApprovalStatusID != null)
                {
                    ddlEmployeeLoanApprovalStatusID.SelectedValue = hREmployeeLoanApplicationEntity.EmployeeLoanApprovalStatusID.ToString();
                }

                txtLoanRemarks.Text = hREmployeeLoanApplicationEntity.Remarks.ToString();

                btnSubmit.Text = "Update";
            }
        }
        private void SaveHREmployeeLoanApplicationEntity()
        {
            if (IsValid)
            {
                try
                {
                    HREmployeeLoanApplicationEntity hREmployeeLoanApplicationEntity = BuildHREmployeeLoanApplicationEntity();

                    Int64 result = -1;

                    if (hREmployeeLoanApplicationEntity.IsNew)
                    {
                        result = FCCHREmployeeLoanApplication.GetFacadeCreate().Add(hREmployeeLoanApplicationEntity, DatabaseOperationType.Add, TransactionRequired.No);
                    }
                    else
                    {
                        String filterExpression = SqlExpressionBuilder.PrepareFilterExpression(HREmployeeLoanApplicationEntity.FLD_NAME_EmployeeLoanApplicationID, hREmployeeLoanApplicationEntity.EmployeeLoanApplicationID.ToString(), SQLMatchType.Equal);
                        result = FCCHREmployeeLoanApplication.GetFacadeCreate().Update(hREmployeeLoanApplicationEntity, filterExpression, DatabaseOperationType.Update, TransactionRequired.No);
                    }

                    if (result > 0)
                    {
                        _EmployeeLoanApplicationID       = 0;
                        _HREmployeeLoanApplicationEntity = new HREmployeeLoanApplicationEntity();
                        PrepareInitialView();
                        BindHREmployeeLoanApplicationList();

                        if (hREmployeeLoanApplicationEntity.IsNew)
                        {
                            MiscUtil.ShowMessage(lblMessage, "Employee Loan Application Information has been added successfully.", false);
                        }
                        else
                        {
                            MiscUtil.ShowMessage(lblMessage, "Employee Loan Application Information has been updated successfully.", false);
                        }
                    }
                    else
                    {
                        if (hREmployeeLoanApplicationEntity.IsNew)
                        {
                            MiscUtil.ShowMessage(lblMessage, "Failed to add Employee Loan Application Information.", false);
                        }
                        else
                        {
                            MiscUtil.ShowMessage(lblMessage, "Failed to update Employee Loan Application Information.", false);
                        }
                    }
                }
                catch (Exception ex)
                {
                    MiscUtil.ShowMessage(lblMessage, ex.Message, true);
                }
            }
        }
        protected void lvHREmployeeLoanApplication_ItemCommand(object sender, ListViewCommandEventArgs e)
        {
            Int64 EmployeeLoanApplicationID;

            Int64.TryParse(e.CommandArgument.ToString(), out EmployeeLoanApplicationID);

            if (EmployeeLoanApplicationID > 0)
            {
                if (string.Equals(e.CommandName, "EditItem"))
                {
                    _EmployeeLoanApplicationID = EmployeeLoanApplicationID;

                    PrepareEditView();

                    cpeEditor.Collapsed   = false;
                    cpeEditor.ClientState = "false";
                }
                else if (string.Equals(e.CommandName, "DeleteItem"))
                {
                    try
                    {
                        Int64 result = -1;

                        String fe = SqlExpressionBuilder.PrepareFilterExpression(HREmployeeLoanApplicationEntity.FLD_NAME_EmployeeLoanApplicationID, EmployeeLoanApplicationID.ToString(), SQLMatchType.Equal);

                        HREmployeeLoanApplicationEntity hREmployeeLoanApplicationEntity = new HREmployeeLoanApplicationEntity();


                        result = FCCHREmployeeLoanApplication.GetFacadeCreate().Delete(hREmployeeLoanApplicationEntity, fe, DatabaseOperationType.Delete, TransactionRequired.No);

                        if (result == 0)
                        {
                            _EmployeeLoanApplicationID       = 0;
                            _HREmployeeLoanApplicationEntity = new HREmployeeLoanApplicationEntity();
                            PrepareInitialView();
                            BindHREmployeeLoanApplicationList();

                            MiscUtil.ShowMessage(lblMessage, "Employee Loan Application has been successfully deleted.", true);
                        }
                        else
                        {
                            MiscUtil.ShowMessage(lblMessage, "Failed to delete Employee Loan Application.", true);
                        }
                    }
                    catch (Exception ex)
                    {
                        MiscUtil.ShowMessage(lblMessage, ex.Message, true);
                    }
                }
            }
        }
        private Int64 DeleteTran(HREmployeeLoanApplicationEntity hREmployeeLoanApplicationEntity, String filterExpression, DatabaseOperationType option)
        {
            long         returnCode = -99;
            const string SP         = "dbo.HREmployeeLoanApplication_SET";

            Database db = DatabaseFactory.CreateDatabase();


            using (DbCommand cmd = db.GetStoredProcCommand(SP))
            {
                AddOptionParameter(cmd, option);
                AddOutputParameter(cmd, db);
                AddFilterExpressionParameter(cmd, filterExpression, db);


                DbConnection connection = db.CreateConnection();
                connection.Open();
                DbTransaction transaction = connection.BeginTransaction();

                try
                {
                    using (IDataReader reader = db.ExecuteReader(cmd, transaction))
                    {
                        returnCode = GetReturnCodeFromParameter(cmd);
                    }

                    if (returnCode >= 0)
                    {
                        transaction.Commit();
                    }
                    else
                    {
                        throw new ArgumentException("Error Code." + returnCode.ToString());
                    }
                }
                catch (Exception ex)
                {
                    transaction.Rollback();
                    throw ex;
                }
                finally
                {
                    transaction.Dispose();
                    connection.Close();
                    connection = null;
                }
            }

            return(returnCode);
        }
        private Int64 Update(HREmployeeLoanApplicationEntity hREmployeeLoanApplicationEntity, String filterExpression, DatabaseOperationType option)
        {
            long         returnCode = -99;
            const string SP         = "dbo.HREmployeeLoanApplication_SET";

            using (DbCommand cmd = Database.GetStoredProcCommand(SP))
            {
                AddOptionParameter(cmd, option);
                AddOutputParameter(cmd);
                AddFilterExpressionParameter(cmd, filterExpression);

                Database.AddInParameter(cmd, "@EmployeeLoanApplicationID", DbType.Int64, hREmployeeLoanApplicationEntity.EmployeeLoanApplicationID);
                Database.AddInParameter(cmd, "@EmployeeID", DbType.Int64, hREmployeeLoanApplicationEntity.EmployeeID);
                Database.AddInParameter(cmd, "@LoanCategoryID", DbType.Int64, hREmployeeLoanApplicationEntity.LoanCategoryID);
                Database.AddInParameter(cmd, "@AppliedLoanAmount", DbType.Decimal, hREmployeeLoanApplicationEntity.AppliedLoanAmount);
                Database.AddInParameter(cmd, "@CurrencyID", DbType.Int64, hREmployeeLoanApplicationEntity.CurrencyID);
                Database.AddInParameter(cmd, "@LoanPaymentStartDate", DbType.DateTime, hREmployeeLoanApplicationEntity.LoanPaymentStartDate);
                Database.AddInParameter(cmd, "@LoanPaymentEndDate", DbType.DateTime, hREmployeeLoanApplicationEntity.LoanPaymentEndDate);
                Database.AddInParameter(cmd, "@NumberOfInstallment", DbType.Decimal, hREmployeeLoanApplicationEntity.NumberOfInstallment);
                Database.AddInParameter(cmd, "@Description", DbType.String, hREmployeeLoanApplicationEntity.Description);
                Database.AddInParameter(cmd, "@EmployeeLoanApprovalStatusID", DbType.Int64, hREmployeeLoanApplicationEntity.EmployeeLoanApprovalStatusID);
                Database.AddInParameter(cmd, "@Remarks", DbType.String, hREmployeeLoanApplicationEntity.Remarks);

                using (IDataReader reader = Database.ExecuteReader(cmd))
                {
                    returnCode = GetReturnCodeFromParameter(cmd);

                    switch (returnCode)
                    {
                    case SqlConstants.DB_STATUS_CODE_DATAALREADYEXIST:
                    {
                        throw new ArgumentException("HREmployeeLoanApplicationEntity already exists. Please specify another HREmployeeLoanApplicationEntity.");
                    }

                    case SqlConstants.DB_STATUS_CODE_DATAUPDATEDFROMOTHERSESSION:
                    {
                        throw new ArgumentException("HREmployeeLoanApplicationEntity data already updated from different session.");
                    }

                    case SqlConstants.DB_STATUS_CODE_FAIL_OPERATION:
                    {
                        throw new ArgumentException("HREmployeeLoanApplicationEntity already exists. Please specify another HREmployeeLoanApplicationEntity.");
                    }
                    }
                }
            }

            return(returnCode);
        }
        private Int64 Delete(HREmployeeLoanApplicationEntity hREmployeeLoanApplicationEntity, String filterExpression, DatabaseOperationType option)
        {
            long         returnCode = -99;
            const string SP         = "dbo.HREmployeeLoanApplication_SET";

            using (DbCommand cmd = Database.GetStoredProcCommand(SP))
            {
                AddOptionParameter(cmd, option);
                AddOutputParameter(cmd);
                AddFilterExpressionParameter(cmd, filterExpression);


                using (IDataReader reader = Database.ExecuteReader(cmd))
                {
                    returnCode = GetReturnCodeFromParameter(cmd);

                    switch (returnCode)
                    {
                    case SqlConstants.DB_STATUS_CODE_DATAALREADYEXIST:
                    {
                        throw new ArgumentException("HREmployeeLoanApplicationEntity already exists. Please specify another HREmployeeLoanApplicationEntity.");
                    }

                    case SqlConstants.DB_STATUS_CODE_DATAUPDATEDFROMOTHERSESSION:
                    {
                        throw new ArgumentException("HREmployeeLoanApplicationEntity data already updated from different session.");
                    }

                    case SqlConstants.DB_STATUS_CODE_FAIL_OPERATION:
                    {
                        throw new ArgumentException("HREmployeeLoanApplicationEntity already exists. Please specify another HREmployeeLoanApplicationEntity.");
                    }
                    }
                }
            }

            return(returnCode);
        }
        private HREmployeeLoanApplicationEntity BuildHREmployeeLoanApplicationEntity()
        {
            HREmployeeLoanApplicationEntity hREmployeeLoanApplicationEntity = CurrentHREmployeeLoanApplicationEntity;

            if (ddlLoanCategoryID.Items.Count > 0)
            {
                if (ddlLoanCategoryID.SelectedValue == "0")
                {
                }
                else
                {
                    hREmployeeLoanApplicationEntity.LoanCategoryID = Int64.Parse(ddlLoanCategoryID.SelectedValue);
                }
            }

            if (!txtAppliedLoanAmount.Text.Trim().IsNullOrEmpty())
            {
                hREmployeeLoanApplicationEntity.AppliedLoanAmount = Decimal.Parse(txtAppliedLoanAmount.Text.Trim());
            }

            if (ddlCurrencyID.Items.Count > 0)
            {
                if (ddlCurrencyID.SelectedValue == "0")
                {
                }
                else
                {
                    hREmployeeLoanApplicationEntity.CurrencyID = Int64.Parse(ddlCurrencyID.SelectedValue);
                }
            }

            if (txtLoanPaymentStartDate.Text.Trim().IsNotNullOrEmpty())
            {
                hREmployeeLoanApplicationEntity.LoanPaymentStartDate = MiscUtil.ParseToDateTime(txtLoanPaymentStartDate.Text);
            }
            else
            {
                hREmployeeLoanApplicationEntity.LoanPaymentStartDate = null;
            }

            if (txtLoanPaymentEndDate.Text.Trim().IsNotNullOrEmpty())
            {
                hREmployeeLoanApplicationEntity.LoanPaymentEndDate = MiscUtil.ParseToDateTime(txtLoanPaymentEndDate.Text);
            }
            else
            {
                hREmployeeLoanApplicationEntity.LoanPaymentEndDate = null;
            }

            if (!txtNumberOfInstallment.Text.Trim().IsNullOrEmpty())
            {
                hREmployeeLoanApplicationEntity.NumberOfInstallment = Decimal.Parse(txtNumberOfInstallment.Text.Trim());
            }
            else
            {
                hREmployeeLoanApplicationEntity.NumberOfInstallment = null;
            }

            hREmployeeLoanApplicationEntity.Description = txtDescription.Text.Trim();
            if (ddlEmployeeLoanApprovalStatusID.Items.Count > 0)
            {
                if (ddlEmployeeLoanApprovalStatusID.SelectedValue == "0")
                {
                }
                else
                {
                    hREmployeeLoanApplicationEntity.EmployeeLoanApprovalStatusID = Int64.Parse(ddlEmployeeLoanApprovalStatusID.SelectedValue);
                }
            }

            hREmployeeLoanApplicationEntity.Remarks = txtRemarks.Text.Trim();

            return(hREmployeeLoanApplicationEntity);
        }
 protected void btnAddNew_Click(object sender, EventArgs e)
 {
     _EmployeeLoanApplicationID       = 0;
     _HREmployeeLoanApplicationEntity = new HREmployeeLoanApplicationEntity();
     PrepareInitialView();
 }
        private void SaveHREmployeeLoanApplicationEntity()
        {
            if (IsValid)
            {
                try
                {
                    HREmployeeLoanApplicationEntity hREmployeeLoanApplicationEntity = BuildHREmployeeLoanApplicationEntity();

                    Int64 result = -1;

                    if (hREmployeeLoanApplicationEntity.IsNew)
                    {
                        result = FCCHREmployeeLoanApplication.GetFacadeCreate().Add(hREmployeeLoanApplicationEntity, DatabaseOperationType.Add, TransactionRequired.No);
                    }
                    else
                    {
                        String filterExpression = SqlExpressionBuilder.PrepareFilterExpression(HREmployeeLoanApplicationEntity.FLD_NAME_EmployeeLoanApplicationID, hREmployeeLoanApplicationEntity.EmployeeLoanApplicationID.ToString(), SQLMatchType.Equal);
                        result = FCCHREmployeeLoanApplication.GetFacadeCreate().Update(hREmployeeLoanApplicationEntity, filterExpression, DatabaseOperationType.Update, TransactionRequired.No);
                    }

                    if (result > 0)
                    {
                        if (hREmployeeLoanApplicationEntity.IsNew)
                        {
                            #region Approval Process

                            if (ddlAPPanelID != null && ddlAPPanelID.SelectedValue != "0")
                            {
                                Boolean apResult = APRobot.CreateApprovalProcessForNewLoanApplication(result, Int64.Parse(ddlAPPanelID.SelectedValue.ToString()));

                                if (apResult == true)
                                {
                                    MiscUtil.ShowMessage(lblMessage, "Approval Process Submited successfully.", UIConstants.MessageType.GREEN);
                                }
                                else
                                {
                                    MiscUtil.ShowMessage(lblMessage, "Failed to Submit Approval Process.", UIConstants.MessageType.RED);
                                }
                            }
                        }

                        #endregion

                        _EmployeeLoanApplicationID       = 0;
                        _HREmployeeLoanApplicationEntity = new HREmployeeLoanApplicationEntity();
                        PrepareInitialView();
                        BindHREmployeeLoanApplicationList();

                        if (hREmployeeLoanApplicationEntity.IsNew)
                        {
                            MiscUtil.ShowMessage(lblMessage, "Employee Loan Application Information has been added successfully.", false);
                        }
                        else
                        {
                            MiscUtil.ShowMessage(lblMessage, "Employee Loan Application Information has been updated successfully.", false);
                        }
                    }
                    else
                    {
                        if (hREmployeeLoanApplicationEntity.IsNew)
                        {
                            MiscUtil.ShowMessage(lblMessage, "Failed to add Employee Loan Application Information.", false);
                        }
                        else
                        {
                            MiscUtil.ShowMessage(lblMessage, "Failed to update Employee Loan Application Information.", false);
                        }
                    }
                }
                catch (Exception ex)
                {
                    MiscUtil.ShowMessage(lblMessage, ex.Message, true);
                }
            }
        }
 Int64 IHREmployeeLoanApplicationFacade.Delete(HREmployeeLoanApplicationEntity hREmployeeLoanApplicationEntity, String filterExpression, DatabaseOperationType option, TransactionRequired reqTran)
 {
     return(DataAccessFactory.CreateHREmployeeLoanApplicationDataAccess().Delete(hREmployeeLoanApplicationEntity, filterExpression, option, reqTran));
 }
 Int64 IHREmployeeLoanApplicationFacade.Add(HREmployeeLoanApplicationEntity hREmployeeLoanApplicationEntity, DatabaseOperationType option, TransactionRequired reqTran)
 {
     return(DataAccessFactory.CreateHREmployeeLoanApplicationDataAccess().Add(hREmployeeLoanApplicationEntity, option, reqTran));
 }