コード例 #1
0
ファイル: POS.cs プロジェクト: kimykunjun/test
        private int UpgradePackage(ACMSDAL.ConnectionProvider connProvider, ACMSLogic.POS pos)
        {
            int OriginalCategoryID = 10 ;

            if (pos.NCategoryID == 10 && pos.WantToUpgradeMemberPackageTable.Rows.Count == 1)
            {
                int wantToUpgrade_nPackageID = ACMS.Convert.ToInt32(pos.WantToUpgradeMemberPackageRow["nPackageID"]);
                string oldStrPackageCode = pos.WantToUpgradeMemberPackageRow["strPackageCode"].ToString();

                foreach (DataRow r in pos.ReceiptItemsTable.Rows)
                {
                    pos.CheckPackageWhenSave(r["strCode"].ToString(), wantToUpgrade_nPackageID);
                }

                // from here, we can get a list of strClassCode that already been used by member
                //DataTable attendedClassCodetable = GetAttendedClassCode(ACMS.Convert.ToInt32(myWantToUpgradeMemberPackageTable.Rows[0]["nPackageID"]));

                // from here, we can get a list of strClassCode that already been used by member
                //DataTable attendedServiceCodetable = GetAttendedServiceCode(ACMS.Convert.ToInt32(myWantToUpgradeMemberPackageTable.Rows[0]["nPackageID"]));

                TblMemberPackage memberPackage = new TblMemberPackage();
                TblClassAttendance classAttendance = new TblClassAttendance();
                TblServiceSession serviceSession = new TblServiceSession();
                TblPackage freeSpaPackage = new TblPackage();

                memberPackage.MainConnectionProvider = connProvider;
                classAttendance.MainConnectionProvider = connProvider;
                serviceSession.MainConnectionProvider = connProvider;
                freeSpaPackage.MainConnectionProvider = connProvider;

                DataTable memberPackagetable = memberPackage.FillSchema("Select * from tblMemberPackage");

                //get old free spa package Code
                freeSpaPackage.StrPackageCode = oldStrPackageCode;
                DataTable OldFreePackageCode = freeSpaPackage.SelectSpaPackageFreebie();
                string strOldFreePackage = OldFreePackageCode.Rows[0]["strFreePkgCode"].ToString();

                foreach (DataRow r in pos.ReceiptItemsTable.Rows)
                {
                    int nQuantity = ACMS.Convert.ToInt32(r["nQuantity"]);

                    for (int i = 0; i < nQuantity; i++)
                    {
                        DataRow rowToAdd = memberPackagetable.NewRow();
                        MemberPackage.InitMemberPackageRowInPOS(rowToAdd, pos.StrReceiptNo, pos.StrMembershipID, r["strCode"].ToString(), "", false);
                        memberPackagetable.Rows.Add(rowToAdd);
                    }
                }
            //insert a new upgrade package to member package
                if (memberPackagetable.Rows.Count > 0)
                    memberPackage.SaveData(memberPackagetable);

                DataTable newAddMemberPackageTable = memberPackage.SelectAllWstrReceiptNo(pos.StrReceiptNo);
                DataRow[] rowNewAddMemberPackage = newAddMemberPackageTable.Select("fFree = 0");
                DataTable attendedClassTable = classAttendance.GetAllClassAttendancesBasePackageID(wantToUpgrade_nPackageID, pos.StrMembershipID, pos.StrBranchCode);

                DataTable serviceUsedTable = serviceSession.GetMemberServiceSessionBasePackageID(wantToUpgrade_nPackageID, pos.StrMembershipID, pos.StrBranchCode);

            //insert a new freebie package based on new added upgrade pacakge

                string newStrPackageCode = "";
                for( int i = 0; i<newAddMemberPackageTable.Rows.Count; i++)
                {
                    if (newAddMemberPackageTable.Rows[i]["fFree"].ToString() == "False")
                    {
                        if (newAddMemberPackageTable.Rows.Count > 1)
                            newStrPackageCode = newAddMemberPackageTable.Rows[newAddMemberPackageTable.Rows.Count - 1]["strPackageCode"].ToString();
                            else
                             newStrPackageCode = newAddMemberPackageTable.Rows[0]["strPackageCode"].ToString();

                    }
                }
                //get new free spa package Code

                    freeSpaPackage.StrPackageCode = newStrPackageCode;
                    DataTable NewFreePackageCode = freeSpaPackage.SelectSpaPackageFreebie();
                    string strNewFreePackage = NewFreePackageCode.Rows[0]["strFreePkgCode"].ToString();

                if (strNewFreePackage != "")
                {
                    DataTable FreememberPackagetable = memberPackage.FillSchema("Select * from tblMemberPackage");
                    DataRow rowToAdd2 = FreememberPackagetable.NewRow();
                    MemberPackage.InitMemberPackageRowInPOS(rowToAdd2, pos.StrReceiptNo, pos.StrMembershipID, strNewFreePackage, "", true);
                    FreememberPackagetable.Rows.Add(rowToAdd2);
                    if (FreememberPackagetable.Rows.Count > 0)
                        memberPackage.SaveData(FreememberPackagetable);

                    //move session from old freebie to new freebie
                    //find old free package ID,via wantToUpgrade_nPackageID
                    freeSpaPackage.NPackageID = wantToUpgrade_nPackageID;
                    freeSpaPackage.StrPackageCode = oldStrPackageCode;
                    DataTable OldFreePackageID = freeSpaPackage.SelectSpaPackageFreebieID();
                    int nOldFreePackageID;
                    if (OldFreePackageID.Rows.Count > 0)
                        nOldFreePackageID = ACMS.Convert.ToInt32(OldFreePackageID.Rows[OldFreePackageID.Rows.Count - 1]["nPackageID"]);
                    else
                        nOldFreePackageID = 0;

                    DataTable newFreeMemberPackageTable = memberPackage.SelectAllWstrReceiptNo(pos.StrReceiptNo);
                    DataRow[] rowNewFreeMemberPackage = newFreeMemberPackageTable.Select("fFree = 1");
                    DataTable freeserviceUsedTable = serviceSession.GetMemberServiceSessionBasePackageID(nOldFreePackageID, pos.StrMembershipID, pos.StrBranchCode);

                    //foreach (DataRow FmemberPackageRow in rowNewFreeMemberPackage)
                    //{
                    string strFreePackageCode ="";
                    if (rowNewFreeMemberPackage.Length > 0)
                        strFreePackageCode = rowNewFreeMemberPackage[rowNewFreeMemberPackage.Length - 1]["strPackageCode"].ToString();

                        DataRow[] tempRowList3 = freeserviceUsedTable.Select("nPackageID = '"+nOldFreePackageID+"'", "dtDate");

                        if (tempRowList3.Length > 0)
                        {
                            foreach (DataRow freeserviceUsedRow in tempRowList3)
                            {
                                freeserviceUsedRow["nPackageID"] = rowNewFreeMemberPackage[rowNewFreeMemberPackage.Length - 1]["nPackageID"];
                            }

                        }

                        if (tempRowList3.Length > 0)
                        {
                            //update the expiryDate

                            TblPackage package = new TblPackage();
                            package.MainConnectionProvider = connProvider;

                            package.StrPackageCode = strFreePackageCode;
                            DataTable tablePackage = package.SelectOne();

                            if (tablePackage == null && tablePackage.Rows.Count == 0)
                                throw new Exception("Package no found.");

                            if (tempRowList3.Length > 0)
                            {
                                rowNewFreeMemberPackage[rowNewFreeMemberPackage.Length - 1]["DtStartDate"] = ACMS.Convert.ToDateTime(tempRowList3[0]["dtDate"]);

                                rowNewFreeMemberPackage[rowNewFreeMemberPackage.Length - 1]["DtExpiryDate"] = ACMS.Convert.ToDateTime(
                                    rowNewFreeMemberPackage[rowNewFreeMemberPackage.Length - 1]["DtStartDate"]).AddMonths(ACMS.Convert.ToInt32(package.NPackageDuration.Value)).AddDays(-1);
                            }
                        }

                    //}

                    DataTable oldFreeMemberPackageTable = memberPackage.SelectPackageID(nOldFreePackageID);
                    oldFreeMemberPackageTable.Rows[0]["nStatusID"] = 2;
                    serviceSession.UpgradePackage(ACMS.Convert.ToInt32(rowNewFreeMemberPackage[rowNewFreeMemberPackage.Length - 1]["nPackageID"]), nOldFreePackageID, pos.StrMembershipID);
                    memberPackage.SaveData(oldFreeMemberPackageTable);
                    memberPackage.SaveData(newFreeMemberPackageTable);

                }

            //move session from old package to new package
                foreach (DataRow memberPackageRow in rowNewAddMemberPackage)
                {
                    string strPackageCode = memberPackageRow["strPackageCode"].ToString();

                    DataRow[] tempRowList = attendedClassTable.Select("nPackageID = '" + wantToUpgrade_nPackageID + "'", "dtDate");

                    if (tempRowList.Length > 0)
                    {
                        foreach (DataRow attendedClassRow in tempRowList)
                        {   // new packageID
                            attendedClassRow["nPackageID"] = memberPackageRow["nPackageID"];
                        }
                    }

                    DataRow[] tempRowList2 = serviceUsedTable.Select("nPackageID = '" + wantToUpgrade_nPackageID + "'", "dtDate");

                    if (tempRowList2.Length > 0)
                    {
                        foreach (DataRow serviceUsedRow in tempRowList2)
                        {
                        serviceUsedRow["nPackageID"] = memberPackageRow["nPackageID"];
                        }

                    }

                    if (tempRowList.Length > 0 ||
                        tempRowList2.Length > 0)
                    {
                        //update the expiryDate

                        TblPackage package = new TblPackage();
                        package.MainConnectionProvider = connProvider;

                        package.StrPackageCode = strPackageCode;
                        DataTable tablePackage = package.SelectOne();

                        TblPackageExtension PackExtension = new TblPackageExtension();
                        PackExtension.MainConnectionProvider = connProvider;

                        PackExtension.NPackageID = ACMS.Convert.ToInt32(rowNewAddMemberPackage[0]["nPackageID"]);
                        PackExtension.NPackageIDOld = wantToUpgrade_nPackageID;
                        int days = 0;
                        DataTable tblPkgExt = PackExtension.SelectExtensionDays();
                        if (PackExtension.NDaysExtended.IsNull == false)
                        days = System.Convert.ToInt32(PackExtension.NDaysExtended.Value);

                        if (tablePackage == null && tablePackage.Rows.Count == 0)
                            throw new Exception("Package no found.");

                        if (tempRowList.Length > 0 && tempRowList2.Length == 0)
                        {

                            ///07/11/2012 Jackie

                            DataTable  myDataTable1;
                            DateTime dtDate;
                            ACMSDAL.TblClassAttendance ClassAttendance = new ACMSDAL.TblClassAttendance();
                            myDataTable1 = ClassAttendance.LoadData("Select top 1 dtDate From tblClassAttendance where  nstatusid=1 and nPackageID= " + wantToUpgrade_nPackageID + " and  " +
                             " strMemberShipID = @strMembershipID order by dtDate",
                                new string[] { "@strMembershipID" },
                                new object[] { pos.StrMembershipID });
                            dtDate = DateTime.Now;
                            if (myDataTable1.Rows.Count > 0)
                                dtDate = System.Convert.ToDateTime(myDataTable1.Rows[0][0]);

                            memberPackageRow["DtStartDate"] = dtDate;
                           // Stop

                            memberPackageRow["DtExpiryDate"] =  ACMS.Convert.ToDateTime(
                                memberPackageRow["DtStartDate"]).AddMonths(ACMS.Convert.ToInt32(package.NPackageDuration.Value)).AddDays(days - 1);
                        }
                        else if (tempRowList2.Length > 0 &&
                            tempRowList.Length == 0)
                        {
                            memberPackageRow["DtStartDate"] = ACMS.Convert.ToDateTime(tempRowList2[0]["dtDate"]);

                            memberPackageRow["DtExpiryDate"] =  ACMS.Convert.ToDateTime(
                                memberPackageRow["DtStartDate"]).AddMonths(ACMS.Convert.ToInt32(package.NValidMonths.Value)).AddDays(days - 1);
                        }
                    }
                }
                OriginalCategoryID=  ACMS.Convert.ToDBInt32(pos.WantToUpgradeMemberPackageRow["nCategoryID"]) ;
                pos.WantToUpgradeMemberPackageRow["nStatusID"] = 2;

                serviceSession.UpgradePackage(ACMS.Convert.ToInt32(rowNewAddMemberPackage[0]["nPackageID"]), wantToUpgrade_nPackageID, pos.StrMembershipID);
                memberPackage.SaveData(pos.WantToUpgradeMemberPackageTable);
                memberPackage.SaveData(newAddMemberPackageTable);

                classAttendance.SaveData(wantToUpgrade_nPackageID,pos.StrMembershipID);

            }
            return OriginalCategoryID;
        }
コード例 #2
0
ファイル: POS.cs プロジェクト: kimykunjun/test
        private void ForgetCardTransaction(ACMSDAL.ConnectionProvider connProvider, ACMSLogic.POS pos)
        {
            if (pos.NCategoryID == 17 && pos.POSForgetCardAction == ACMSLogic.POS.ForgetCardAction.Refund)
            {
                TblClassAttendance classAttendance = new TblClassAttendance();
                classAttendance.MainConnectionProvider = connProvider;
                TblReceipt sqlReceipt = new TblReceipt();
                sqlReceipt.MainConnectionProvider = connProvider;

                foreach (DataRow row in pos.ReceiptItemsTable.Rows)
                {
                    DateTime dtDate = ACMS.Convert.ToDateTime(row["strReferenceNo"]);
                    DataTable classAttendanceTable = classAttendance.GetForgetCardClassAttendance(pos.StrMembershipID, dtDate);

                    foreach (DataRow r in classAttendanceTable.Rows)
                    {
                        r["fRefunded"] = true;
                    }

                    classAttendance.SaveData(classAttendanceTable);
            /*
                    string receiptToVoid = row["strCode"].ToString();

                    sqlReceipt.StrReceiptNo = receiptToVoid;
                    sqlReceipt.SelectOne();
                    sqlReceipt.FVoid = SqlBoolean.True;
                    sqlReceipt.Update();*/
                }
            }
        }
コード例 #3
0
ファイル: ClassAttendance.cs プロジェクト: kimykunjun/test
        public void CancelClassInstance(int nClassInstanceID, string remark)
        {
            myClassInstance.NClassInstanceID = nClassInstanceID;
            myClassInstance.SelectOne();
            myClassInstance.FCancelled = System.Data.SqlTypes.SqlBoolean.True;
            myClassInstance.StrRemarks = remark;
            TblAudit audit = new TblAudit();

            audit.DtDate = DateTime.Today;
            audit.NAuditTypeID = AuditTypeID.ClassAuditTypeID;
            audit.NEmployeeID = ACMSLogic.User.EmployeeID;
            audit.StrAuditEntry = "Cancel class instance " + nClassInstanceID.ToString();
            audit.StrReference = nClassInstanceID.ToString();

            TblClassAttendance classAttendance = new TblClassAttendance();
            classAttendance.NClassInstanceID = nClassInstanceID;
            DataTable classAttendanceTable = classAttendance.SelectAllWnClassInstanceIDLogic();

            if (classAttendanceTable != null && classAttendanceTable.Rows.Count > 0)
            {
                foreach (DataRow r in classAttendanceTable.Rows)
                {
                    r["nStatusID"] = 3;
                }
            }

            ACMSDAL.ConnectionProvider connProvider = new ConnectionProvider();

            try
            {
                myClassInstance.MainConnectionProvider = connProvider;
                audit.MainConnectionProvider = connProvider;
                classAttendance.MainConnectionProvider = connProvider;

                connProvider.OpenConnection();
                connProvider.BeginTransaction("CancelClassInstance");
                myClassInstance.Update();
                audit.Insert();
                classAttendance.SaveData(classAttendanceTable);
                connProvider.CommitTransaction();

                DataTable dtAttendance = new DataTable();
                dtAttendance = GetClassAttendanceReservedAndAttended(nClassInstanceID);

                DialogResult result1 = MessageBox.Show("Push Notification to Mobile app users? ", "Confirm", MessageBoxButtons.YesNo);
                if (result1 == DialogResult.Yes)
                {
                    foreach (DataRow row in dtAttendance.Rows)
                    {
                        string strMsgContent = row["strDescription"].ToString() + " at " + row["strBranchName"] + " at " + Convert.ToDateTime(myClassInstance.DtStartTime).ToString("h.mmtt") + " on " + Convert.ToDateTime(myClassInstance.DtStartTime).ToString("dd MMM") + " has been cancelled. Sorry for any inconvenience caused.";
                        PushNotification(row["strMembershipID"].ToString(), strMsgContent);
                    }
                }
            }
            catch (Exception)
            {
                connProvider.RollbackTransaction("CancelClassInstance");
                throw;
            }
            finally
            {
                if (connProvider.CurrentTransaction != null)
                    connProvider.CurrentTransaction.Dispose();
                if (connProvider.DBConnection != null)
                {
                    if (connProvider.DBConnection.State == ConnectionState.Open)
                        connProvider.DBConnection.Close();
                }
                myClassInstance.MainConnactionIsCreatedLocal = true;
            }
        }
コード例 #4
0
ファイル: MemberPackage.cs プロジェクト: kimykunjun/test
        public void TransferMemberPackage(int packageID, string currMemberID, string newMemberID, string remark)
        {
            TblClassAttendance classAttendance = new TblClassAttendance();
            TblServiceSession serviceSession = new TblServiceSession();

            classAttendance.NPackageID = packageID;
            DataTable tableClassAttendance = classAttendance.SelectAllWnPackageIDLogic();

            serviceSession.NPackageID = packageID;
            DataTable tableServiceSession = serviceSession.SelectAllWnPackageIDLogic();

            //classAttendance.nP
            ACMSDAL.ConnectionProvider connProvider = new ConnectionProvider();

            try
            {
                classAttendance.MainConnectionProvider = connProvider;
                serviceSession.MainConnectionProvider = connProvider;
                myMemberPackage.MainConnectionProvider = connProvider;
                myAudit.MainConnectionProvider = connProvider;

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

                if (tableClassAttendance != null && tableClassAttendance.Rows.Count > 0)
                {
                    foreach (DataRow r in tableClassAttendance.Rows)
                    {
                        r["strMembershipID"] = newMemberID;
                    }
                    //classAttendance.StrMembershipID = newMemberID;
                    //classAttendance.UpdateAllWnEmployeeIDLogic();
                }

                if (tableServiceSession != null && tableServiceSession.Rows.Count > 0)
                {
            //					serviceSession.StrMembershipID = newMemberID;
            //					serviceSession.UpdateAllWnPackageIDLogic();
                    foreach (DataRow r in tableServiceSession.Rows)
                    {
                        r["strMembershipID"] = newMemberID;
                    }
                }

                myMemberPackage.NPackageID = packageID;
                myMemberPackage.SelectOne();
                myMemberPackage.StrMembershipID = newMemberID;
                myMemberPackage.StrRemarks = remark;

                myAudit.DtDate = DateTime.Today;
                myAudit.NAuditTypeID = 1;
                myAudit.NEmployeeID = ACMSLogic.User.EmployeeID;
                myAudit.StrAuditEntry = "Transfer Member Package " + packageID.ToString() + "from " + currMemberID + "to " + newMemberID;
                myAudit.StrReference = packageID.ToString();

                classAttendance.SaveData(tableClassAttendance);
                serviceSession.SaveData(tableServiceSession);
                myMemberPackage.Update();
                myAudit.Insert();

                connProvider.CommitTransaction();
            }
            catch (Exception)
            {
                connProvider.RollbackTransaction("CancelMemberPackage");
                throw new Exception("Failed to transfer Member Package");
            }
            finally
            {
                if (connProvider.CurrentTransaction != null)
                    connProvider.CurrentTransaction.Dispose();
                if (connProvider.DBConnection != null)
                {
                    if (connProvider.DBConnection.State == ConnectionState.Open)
                        connProvider.DBConnection.Close();
                    //connProvider.DBConnection.Dispose();
                }
                myMemberPackage.MainConnactionIsCreatedLocal = true;
                myAudit.MainConnactionIsCreatedLocal = true;
                classAttendance.MainConnactionIsCreatedLocal = true;
                serviceSession.MainConnactionIsCreatedLocal = true;
            }
        }
コード例 #5
0
ファイル: ClassAttendance.cs プロジェクト: kimykunjun/test
        public bool VerifyIntructor(int nClassInstanceIDToBeVerified, int verifyUserID,string verifyUserPassword,
			int nStandingIntructorID, string remark)
        {
            TblEmployee verifyUser = new TblEmployee();

            verifyUser.NEmployeeID = verifyUserID;

            verifyUser.SelectOne();

            int [,] intArray = new int[50,2];

            int ArrayNo=1;

            if (verifyUser.StrPassword.Value != verifyUserPassword)

                return false;

            myClassInstance.NClassInstanceID = nClassInstanceIDToBeVerified;

            myClassInstance.SelectOne();

            if (myClassInstance.NActualInstructorID.IsNull)

                throw new Exception("Missing Intructor login info");

            if (myClassInstance.NActualInstructorID.Value == verifyUserID)

                throw new Exception("Instructor are not allowed to verfiy for the same class.");

            if (!myClassInstance.NVerifyID.IsNull)

                throw new Exception("This class have been verify by other staff with the employee ID : "+  myClassInstance.NVerifyID.Value.ToString());

            bool isLate =false;

            DateTime StartTime;

            DateTime LoginTime;

            myClassInstance.MInstructorDeduction=0;

            StartTime=ACMS.Convert.ToDBDateTime(myClassInstance.DtStartTime.Value.ToLongTimeString());

            LoginTime=ACMS.Convert.ToDBDateTime(myClassInstance.DtInstructorLogin.Value.ToLongTimeString());

            if (DateTime.Compare(LoginTime,StartTime)>0)

            {

                isLate=true;

            }

            bool haveStandingIntructor = nStandingIntructorID > 0;

            if (haveStandingIntructor)

                myClassInstance.NStandinInstructorID = nStandingIntructorID;

            if (isLate)

            {

                TblCompany company = new TblCompany();

                DataTable companyTable = company.SelectAll();

                decimal instructorLateDeductionFee = 0;

                if (companyTable.Rows.Count > 0)

                {

                    instructorLateDeductionFee =  ACMS.Convert.ToDecimal(companyTable.Rows[0]["mInstructorLateDeductionFee"]);

                }

                myClassInstance.MInstructorDeduction=instructorLateDeductionFee;

                if (nStandingIntructorID != 0)

                    myClassInstance.MStandinInstructorFees = instructorLateDeductionFee;

            }

            int nCommissionTypeID = myClassInstance.NCommissionTypeID.Value;

            TblEmployee actualInstructor = new TblEmployee();

            actualInstructor.NEmployeeID = myClassInstance.NActualInstructorID;

            actualInstructor.SelectOne();

            int nInstructorTypeID = ACMS.Convert.ToInt32(actualInstructor.NInstructorTypeID);

            myClassInstance.MInstructorFees = (GetCommission(nCommissionTypeID, nInstructorTypeID) - myClassInstance.MInstructorDeduction);

            TblClassAttendance classAttendance = new TblClassAttendance();

            classAttendance.NClassInstanceID = nClassInstanceIDToBeVerified;

            DataTable classAttendanceTable = classAttendance.SelectAllWnClassInstanceIDLogic();

            DataRow[] classAttendanceRowList = null;

            if (classAttendanceTable != null && classAttendanceTable.Rows.Count > 0)

            {

                classAttendanceRowList = classAttendanceTable.Select("nStatusID = 0", "nAttendanceID", DataViewRowState.CurrentRows);

                foreach (DataRow r in classAttendanceRowList)

                {

                    r["nStatusID"] = 2;
                    r["nTypeID"]=0;

                }

            }

            ACMSDAL.ConnectionProvider connProvider = new ConnectionProvider();

            try

            {

                myClassInstance.MainConnectionProvider = connProvider;

                classAttendance.MainConnectionProvider = connProvider;

                connProvider.OpenConnection();

                connProvider.BeginTransaction("VerifyClassInstance");

                myClassInstance.NVerifyID = verifyUserID;

                myClassInstance.StrRemarks = remark;

                myClassInstance.Update();

                classAttendance.SaveData(classAttendanceTable);

                TblMemberPackage sqlMemberPackage = new TblMemberPackage();

                sqlMemberPackage.MainConnectionProvider = connProvider;

                if (classAttendanceRowList != null)

                {

                    int nPackageID = -1;

                    foreach (DataRow r in classAttendanceRowList)

                    {

                        nPackageID = ACMS.Convert.ToInt32(r["nPackageID"]);

                        int nAttendanceID=ACMS.Convert.ToInt32(r["nAttendanceID"]);

                        DataTable memberPackageTable = sqlMemberPackage.GetMemberPackage(nPackageID);

                        if (memberPackageTable.Rows[0]["strPackageCode"].ToString() != "Unlinked")

                        {

                            #region test

                            //MemberPackage.CalculateMemberPackageBalance(memberPackageTable, connProvider);

                            if (ACMS.Convert.ToInt32(memberPackageTable.Rows[0]["Balance"]) > 0)

                            {

                                DateTime classDate = myClassInstance.DtDate.IsNull ? DateTime.Today.Date : myClassInstance.DtDate.Value;

                                DataRow masterRow = memberPackageTable.Rows[0];// Means new class Attendance gonna insert

                                if (masterRow["dtStartDate"] == DBNull.Value &&

                                    masterRow["dtExpiryDate"] == DBNull.Value)

                                {

                                    TblPackage package = new TblPackage();

                                    package.StrPackageCode = masterRow["strPackageCode"].ToString();

                                    package.SelectOne();

                                    if (package.NPackageDuration == 0 && package.NPackageDay > 0)
                                    {
                                        masterRow["dtStartDate"] = classDate;
                                        masterRow["dtExpiryDate"] = classDate.AddDays(package.NPackageDay.Value -1);
                                    }
                                    else
                                    {
                                        masterRow["dtStartDate"] = classDate;
                                        masterRow["dtExpiryDate"] = classDate.AddMonths(package.NPackageDuration.Value).AddDays(-1);
                                    }

                                }

                                else

                                {

                                    DateTime memberPackageStartDate =  ACMS.Convert.ToDateTime(masterRow["DtStartDate"]);

                                    DateTime memberPackageExpiryDate = ACMS.Convert.ToDateTime(masterRow["dtExpiryDate"]);

                                    if (memberPackageStartDate > classDate)

                                    {

                                        masterRow["dtExpiryDate"] = memberPackageExpiryDate.Subtract(memberPackageStartDate.Subtract(classDate));

                                    }

                                }

                            }

                            else if (ACMS.Convert.ToInt32(memberPackageTable.Rows[0]["Balance"]) <=0)

                            {

                                intArray[ArrayNo,0]=nPackageID;

                                intArray[ArrayNo,1]=nAttendanceID;

                                ArrayNo=ArrayNo+1;

                                MessageBox.Show("Package Balance of " + memberPackageTable.Rows[0]["strMembershipID"].ToString().TrimEnd() + " is Zero. Attendance will be cancel");

                            }

                            #endregion

                        }

                        if (ACMS.Convert.ToInt32(memberPackageTable.Rows[0]["nMaxSession"]) == 9999 && memberPackageTable.Rows[0]["fGIRO"].ToString() != "1")
                        {

                            DateTime dtExpiryDate = ACMS.Convert.ToDateTime(memberPackageTable.Rows[0]["dtExpiryDate"]);

                            DateTime dtStartDate = ACMS.Convert.ToDateTime(memberPackageTable.Rows[0]["dtStartDate"]);

                            if (dtExpiryDate != DateTime.MinValue)

                            {

                                memberPackageTable.Rows[0]["dtExpiryDate"] = dtExpiryDate.AddDays(-1);

                            }

                        }

                        sqlMemberPackage.SaveData(memberPackageTable);

                    }

                }

                connProvider.CommitTransaction();

            }

            catch (Exception)

            {

                connProvider.RollbackTransaction("VerifyClassInstance");

                throw;

            }

            finally

            {

                if (connProvider.CurrentTransaction != null)

                    connProvider.CurrentTransaction.Dispose();

                if (connProvider.DBConnection != null)

                {

                    if (connProvider.DBConnection.State == ConnectionState.Open)

                        connProvider.DBConnection.Close();

                }

                myClassInstance.MainConnactionIsCreatedLocal = true;

                classAttendance.MainConnactionIsCreatedLocal = true;

            }

            for (int j=1;j<=50;j++)

            {

                if (intArray[j,0]>0) DeleteClassAttendance(intArray[j,0],intArray[j,1],"");

                else if (intArray[j,0]<=0)

                {return true;}

            }

            return true;
        }