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); }
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); } }