示例#1
0
        public static ERequestOTClaim CreateDummyRequestOTClaim(EOTClaim OTClaim)
        {
            ERequestOTClaim requestOTClaim = new ERequestOTClaim();

            requestOTClaim.EmpID = OTClaim.EmpID;
            requestOTClaim.RequestOTClaimPeriodFrom = OTClaim.OTClaimDateFrom;
            requestOTClaim.RequestOTClaimPeriodTo   = OTClaim.OTClaimDateTo;
            requestOTClaim.RequestOTHours           = OTClaim.OTClaimHours;
            requestOTClaim.RequestOTClaimRemark     = OTClaim.OTClaimRemark;
            requestOTClaim.RequestOTClaimHourFrom   = OTClaim.OTClaimTimeFrom;
            requestOTClaim.RequestOTClaimHourTo     = OTClaim.OTClaimTimeTo;
            return(requestOTClaim);
        }
示例#2
0
        public bool IsOverlapOTClaim(DatabaseConnection dbConn, out ArrayList OverlapOTClaimList)
        {
            OverlapOTClaimList = new ArrayList();

            DBFilter overlapCheckingFilter = new DBFilter();

            overlapCheckingFilter.add(new Match("EmpID", EmpID));
            overlapCheckingFilter.add(new Match("RequestOTClaimID", "<>", RequestOTClaimID));
            overlapCheckingFilter.add(new Match("RequestOTClaimPeriodFrom", "<=", RequestOTClaimPeriodTo));
            overlapCheckingFilter.add(new Match("RequestOTClaimPeriodTo", ">=", RequestOTClaimPeriodFrom));
            ArrayList overlapDailyOTClaimList = db.select(dbConn, overlapCheckingFilter);

            if (overlapDailyOTClaimList.Count > 0)
            {
                foreach (ERequestOTClaim previousRequestOTClaim in overlapDailyOTClaimList)
                {
                    //------------------------------------------------------
                    //Check record status from the EmpRequest table
                    DBFilter filterStatus = new DBFilter();

                    filterStatus.add(new Match("EmpID", EmpID));
                    filterStatus.add(new Match("EmpRequestRecordID", previousRequestOTClaim.RequestOTClaimID));
                    filterStatus.add(new Match("EmpRequestType", EEmpRequest.TYPE_EEOTCLAIM));

                    filterStatus.add(new Match("EmpRequestStatus", "<>", EEmpRequest.STATUS_CANCELLED));
                    filterStatus.add(new Match("EmpRequestStatus", "<>", EEmpRequest.STATUS_REJECTED));
                    filterStatus.add(new Match("EmpRequestStatus", "<>", EEmpRequest.STATUS_APPROVED));

                    if (EEmpRequest.db.count(dbConn, filterStatus) > 0)
                    {
                        OverlapOTClaimList.Add(previousRequestOTClaim);
                    }
                    //------------------------------------------------------
                }
            }
            DateTime newOTClaimTimeFrom = RequestOTClaimPeriodFrom.Date.Add(new TimeSpan(RequestOTClaimHourFrom.Hour, RequestOTClaimHourFrom.Minute, RequestOTClaimHourFrom.Second));
            DateTime newOTClaimTimeTo   = RequestOTClaimPeriodTo.Date.Add(new TimeSpan(RequestOTClaimHourTo.Hour, RequestOTClaimHourTo.Minute, RequestOTClaimHourTo.Second));

            while (newOTClaimTimeFrom > newOTClaimTimeTo)
            {
                newOTClaimTimeTo = newOTClaimTimeTo.AddDays(1);
            }

            overlapCheckingFilter = new DBFilter();
            overlapCheckingFilter.add(new Match("EmpID", EmpID));
            overlapCheckingFilter.add(new Match("RequestOTClaimID", "<>", RequestOTClaimID));
            overlapCheckingFilter.add(new Match("RequestOTClaimPeriodFrom", "<=", RequestOTClaimPeriodTo));
            overlapCheckingFilter.add(new Match("RequestOTClaimPeriodTo", ">=", RequestOTClaimPeriodFrom));
            ArrayList OTClaimList = db.select(dbConn, overlapCheckingFilter);

            foreach (ERequestOTClaim previousRequestOTClaim in OTClaimList)
            {
                //------------------------------------------------------
                //Check record status from the EmpRequest table
                DBFilter filterStatus = new DBFilter();

                filterStatus.add(new Match("EmpID", EmpID));
                filterStatus.add(new Match("EmpRequestRecordID", previousRequestOTClaim.RequestOTClaimID));
                filterStatus.add(new Match("EmpRequestType", EEmpRequest.TYPE_EEOTCLAIM));
                filterStatus.add(new Match("EmpRequestStatus", "<>", EEmpRequest.STATUS_CANCELLED));
                filterStatus.add(new Match("EmpRequestStatus", "<>", EEmpRequest.STATUS_REJECTED));
                filterStatus.add(new Match("EmpRequestStatus", "<>", EEmpRequest.STATUS_APPROVED));

                if (EEmpRequest.db.count(dbConn, filterStatus) > 0)
                {
                    DateTime oldOTClaimTimeFrom = previousRequestOTClaim.RequestOTClaimPeriodFrom.Date.Add(new TimeSpan(previousRequestOTClaim.RequestOTClaimHourFrom.Hour, previousRequestOTClaim.RequestOTClaimHourFrom.Minute, previousRequestOTClaim.RequestOTClaimHourFrom.Second));
                    DateTime oldOTClaimTimeTo   = previousRequestOTClaim.RequestOTClaimPeriodTo.Date.Add(new TimeSpan(previousRequestOTClaim.RequestOTClaimHourTo.Hour, previousRequestOTClaim.RequestOTClaimHourTo.Minute, previousRequestOTClaim.RequestOTClaimHourTo.Second));
                    while (oldOTClaimTimeFrom > oldOTClaimTimeTo)
                    {
                        oldOTClaimTimeTo = oldOTClaimTimeTo.AddDays(1);
                    }

                    if (!newOTClaimTimeFrom.Equals(newOTClaimTimeTo) && !oldOTClaimTimeFrom.Equals(oldOTClaimTimeTo))
                    {
                        //  Only check if the following case exists
                        // Time A From------- Time B From ---------- Time B To ------------Time A To
                        if (newOTClaimTimeFrom <= oldOTClaimTimeFrom && oldOTClaimTimeTo <= newOTClaimTimeTo || oldOTClaimTimeFrom <= newOTClaimTimeFrom && newOTClaimTimeTo <= oldOTClaimTimeTo)
                        {
                            OverlapOTClaimList.Add(previousRequestOTClaim);
                        }
                    }
                }
            }
            //  Also Check CL Requisition
            ArrayList OverlapOutstandardOTClaimList;
            EOTClaim  OTClaim = new EOTClaim();

            OTClaim.EmpID           = EmpID;
            OTClaim.OTClaimDateFrom = RequestOTClaimPeriodFrom;
            OTClaim.OTClaimDateTo   = RequestOTClaimPeriodTo;
            OTClaim.OTClaimTimeFrom = RequestOTClaimHourFrom;
            OTClaim.OTClaimTimeTo   = RequestOTClaimHourTo;
            if (OTClaim.IsOverlapOTClaim(dbConn, out OverlapOutstandardOTClaimList))
            {
                OverlapOTClaimList.AddRange(OverlapOutstandardOTClaimList);
            }

            if (OverlapOTClaimList.Count > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }