コード例 #1
0
        private void simpleButtonOK_Click(object sender, System.EventArgs e)
        {
            //Must Select A Leave Type
            if (lkpEdtLeaveType.Text.Length == 0)
            {
                MessageBox.Show(this, "Please select a Leave Type.");
                this.DialogResult = DialogResult.None;
                return;
            }

            if (lkpEdtLeaveType.Text != "0")
            {
                //For Case Other Only, the End Date Selected must be later than the current Expiry Date
                if (lkpEdtLeaveType.Text == "OTHER")
                {
                    if (DateTime.Compare(dtEdtLeaveEndDate.DateTime.Date, ACMS.Convert.ToDBDateTime(myExpiryDate)) < 0)
                    {
                        MessageBox.Show(this, "New expiry date must be after current expiry date.", this.Text);
                        this.DialogResult = DialogResult.None;
                        return;
                    }

                    dtEdtLeaveStartDate.DateTime = ACMS.Convert.ToDBDateTime(myExpiryDate); //Need to Change this to refer to the expiry date passed in

                    //Remarks must not empty
                    if (txtOther.Text == "")
                    {
                        MessageBox.Show(this, "Remarks cannot be empty.", this.Text);
                        this.DialogResult = DialogResult.None;
                        return;
                    }
                }
                else
                {
                    //Empty remarks
                    txtOther.Text = "";
                }

                //Start Date Selected must be greater than the End Date Selected
                if (DateTime.Compare(dtEdtLeaveStartDate.DateTime.Date, dtEdtLeaveEndDate.DateTime.Date) > 0)
                {
                    MessageBox.Show(this, "Start Date must earlier than end date");
                    this.DialogResult = DialogResult.None;
                    return;
                }

                //Start Date Selected must be greater than Credit Package Start Date
                if ((DateTime.Compare(ACMS.Convert.ToDBDateTime(myStartDate), dtEdtLeaveStartDate.DateTime.Date) > 0 ||
                     DateTime.Compare(ACMS.Convert.ToDBDateTime(myStartDate), dtEdtLeaveStartDate.DateTime.Date) == 0) &&
                    lkpEdtLeaveType.Text != "OTHER")
                {
                    MessageBox.Show(this, "Leave start date must be after package start date");
                    this.DialogResult = DialogResult.None;
                    return;
                }

                //Start Date cannot be later than the current Credit package expiry Date
                if (DateTime.Compare(dtEdtLeaveStartDate.DateTime.Date, ACMS.Convert.ToDBDateTime(myExpiryDate)) > 0)
                {
                    MessageBox.Show(this, "Extension Start Date cannot be later than Member's Credit Package Expiry Date.");
                    this.DialogResult = DialogResult.None;
                    return;
                }

                //Minimum 3 days extension
                if ((dtEdtLeaveEndDate.DateTime.Date - dtEdtLeaveStartDate.DateTime.Date).TotalDays < 3)
                {
                    MessageBox.Show(this, "Minimum extension of 3 days is required.");
                    this.DialogResult = DialogResult.None;
                    return;
                }
            }

            //Get Extension history for current credit package
            TblCreditPackageExtension CreditPkgExtension = new TblCreditPackageExtension();

            CreditPkgExtension.NCreditPackageID = myMemberCreditPackageID;
            DataTable dtCreditPkgExtension = CreditPkgExtension.SelectAllWnCreditPackageIDLogic();

            DateTime ExtStartDate = dtEdtLeaveStartDate.DateTime.Date;
            DateTime ExtEndDate   = dtEdtLeaveEndDate.DateTime.Date;

            if (dtCreditPkgExtension != null && dtCreditPkgExtension.Rows.Count > 0)
            {
                int r;

                //Loop through the extension history for the selected credit package
                for (r = 0; r <= dtCreditPkgExtension.Rows.Count - 1; r++)
                {
                    //To See If Overlapped date in extension package
                    if (ExtStartDate < ACMS.Convert.ToDateTime(dtCreditPkgExtension.Rows[r]["dtEndDate"]) &&
                        ExtEndDate >= ACMS.Convert.ToDateTime(dtCreditPkgExtension.Rows[r]["dtStartDate"]) ||
                        (ExtEndDate < ExtStartDate))
                    {
                        MessageBox.Show(this, "Overlapped date in extension credit package.");
                        this.DialogResult = DialogResult.None;
                        return;
                    }
                }
            }

            try
            {
                //Create New Credit Package Extension
                TimeSpan nDaysExtend = Convert.ToDateTime(ExtEndDate).Subtract(Convert.ToDateTime(ExtStartDate));

                int      nDaysExtended    = Convert.ToInt32(nDaysExtend.TotalDays) + 1;
                DateTime dtOldExpiry      = Convert.ToDateTime(myExpiryDate);
                DateTime dtNewExpiry      = dtOldExpiry.AddDays(nDaysExtend.TotalDays + 1);
                DateTime dtCreateDate     = System.DateTime.Now;
                DateTime dtStartDate      = dtEdtLeaveStartDate.DateTime.Date;
                DateTime dtEndDate        = dtEdtLeaveEndDate.DateTime.Date;
                int      nStatusID        = 0;
                int      nReasonID        = Convert.ToInt32(lkpEdtLeaveType.EditValue);
                string   strRemarks       = txtOther.Text.ToString();
                int      nEmployeeID      = curEmployeeID;
                int      nCreditPackageID = myMemberCreditPackageID;



                SaveExtensionHistory(nCreditPackageID, curMembershipID, dtOldExpiry, dtNewExpiry, dtStartDate, dtEndDate,
                                     nDaysExtended, nStatusID, nReasonID, strRemarks, nEmployeeID, dtCreateDate);
            }
            catch (Exception ex)
            {
                this.DialogResult = DialogResult.None;

                MessageBox.Show(this, ex.Message);
            }
        }
コード例 #2
0
        public void DeleteLastCreditPackageExtensionHistory(int nCreditPackageID, int last_nExtensionID, string CurrentMembershipID)
        {
            ACMSDAL.ConnectionProvider connProvider = new ConnectionProvider();

            TblMemberCreditPackage    myMemberCreditPackage    = new TblMemberCreditPackage();
            TblCreditPackageExtension myCreditPackageExtension = new TblCreditPackageExtension();

            myMemberCreditPackage.MainConnectionProvider    = connProvider;
            myCreditPackageExtension.MainConnectionProvider = connProvider;

            connProvider.OpenConnection();
            connProvider.BeginTransaction("SaveCreditPackageExtension");

            myCreditPackageExtension.NCreditPackageID = nCreditPackageID;

            DataTable tblCreditPackageExtension = myCreditPackageExtension.SelectAllWnCreditPackageIDLogic();

            if (tblCreditPackageExtension == null)
            {
                throw new Exception("This extension row has been deleted by others");
            }
            else if (tblCreditPackageExtension.Rows.Count == 0)
            {
                throw new Exception("This extension row has been deleted by others");
            }

            if (tblCreditPackageExtension.Rows.Count > 0)
            {
                DataRow[] rowList = tblCreditPackageExtension.Select(" nStatusID = 0 AND nExtensionID > " + last_nExtensionID.ToString());

                if (rowList.Length > 0) // mean is not last package extension
                {
                    throw new Exception("Only the most recent package extension can be deleted.");
                }
            }

            DataRow[] deletedDataRowList = tblCreditPackageExtension.Select("nStatusID = 0 and nExtensionID = " + last_nExtensionID, "nExtensionID", DataViewRowState.CurrentRows);

            if (deletedDataRowList.Length == 0)
            {
                throw new Exception("This extension row has been deleted by others");
            }

            DateTime dtOldExpiry = Convert.ToDateTime(deletedDataRowList[0]["dtOldExpiry"]);

            int nCreditPackageStatusID = -1;

            if (DateTime.Compare(dtOldExpiry, DateTime.Now) < 0)
            {
                nCreditPackageStatusID = 1;
            }

            try
            {
                //Update Credit Package Extension set nStatusID = 1 => Deleted
                myCreditPackageExtension.MemberCreditPackage_ExtensionDelete(nCreditPackageID, last_nExtensionID);

                //Update Member Credit Package Expiry Date; nStatusID = 1 If Expired
                myMemberCreditPackage.MemberCreditPackage_ExtensionUpdate(nCreditPackageID, nCreditPackageStatusID, dtOldExpiry, CurrentMembershipID);

                connProvider.CommitTransaction();
            }
            catch (Exception)
            {
                connProvider.RollbackTransaction("SaveCreditPackageExtension");
                throw new Exception("Failed to Create New Extension");
            }
            finally
            {
                if (connProvider.CurrentTransaction != null)
                {
                    connProvider.CurrentTransaction.Dispose();
                }

                if (connProvider.DBConnection != null)
                {
                    if (connProvider.DBConnection.State == ConnectionState.Open)
                    {
                        connProvider.DBConnection.Close();
                    }
                }

                myMemberCreditPackage.MainConnactionIsCreatedLocal    = true;
                myCreditPackageExtension.MainConnactionIsCreatedLocal = true;
            }
        }