protected override void afterUpdate(DatabaseConnection dbConn, DBManager db) { int oldLeaveCodeID = 0; int newLeaveCodeID = m_LeaveCodeID; DateTime oldLeaveDateFrom = new DateTime(); DateTime newLeaveDateFrom = m_LeaveAppDateFrom; if (oldValueObject != null) { ELeaveApplication oldLeaveApp = (ELeaveApplication)oldValueObject; oldLeaveCodeID = oldLeaveApp.LeaveCodeID; oldLeaveDateFrom = oldLeaveApp.LeaveAppDateFrom; } { ELeaveCode leaveCode = new ELeaveCode(); leaveCode.LeaveCodeID = oldLeaveCodeID; if (ELeaveCode.db.select(dbConn, leaveCode)) { ELeaveBalance.DeleteLeaveBalanceAfter(dbConn, this.EmpID, leaveCode.LeaveTypeID, oldLeaveDateFrom); } leaveCode.LeaveCodeID = newLeaveCodeID; if (ELeaveCode.db.select(dbConn, leaveCode)) { ELeaveBalance.DeleteLeaveBalanceAfter(dbConn, this.EmpID, leaveCode.LeaveTypeID, newLeaveDateFrom); } } base.afterUpdate(dbConn, db); }
public static ELeaveApplication GetOrCreateSingleDayLeaveApplicationObject(DatabaseConnection dbConn, int EmpID, int LeaveCodeID, DateTime LeaveDate) { DBFilter leaveFilter = new DBFilter(); leaveFilter.add(new Match("EmpID", EmpID)); leaveFilter.add(new Match("LeaveAppDateFrom", "<=", LeaveDate)); leaveFilter.add(new Match("LeaveAppDateTo", ">=", LeaveDate)); leaveFilter.add(new Match("LeaveAppDays", ">=", 1)); leaveFilter.add(new Match("LeaveCodeID", LeaveCodeID)); ArrayList oldLeaveAppList = ELeaveApplication.db.select(dbConn, leaveFilter); if (oldLeaveAppList.Count > 0) { return((ELeaveApplication)oldLeaveAppList[0]); } else { ELeaveApplication leaveApp = new ELeaveApplication(); leaveApp.LeaveAppDateFrom = LeaveDate; leaveApp.LeaveAppDateTo = LeaveDate; leaveApp.LeaveAppDays = 1; leaveApp.LeaveAppUnit = "D"; leaveApp.LeaveCodeID = LeaveCodeID; leaveApp.EmpID = EmpID; return(leaveApp); } }
private static void DeleteLeaveApplication(DatabaseConnection dbConn, ERosterTable rosterTable) { if (rosterTable.LeaveAppID > 0) { DBFilter attendanceRecordFilter = new DBFilter(); attendanceRecordFilter.add(new Match("LeaveAppID", rosterTable.LeaveAppID)); // do not delete leave application if the attendance record use that leave application if (EAttendanceRecord.db.count(dbConn, attendanceRecordFilter) > 0) { return; } ERosterCode rosterCode = new ERosterCode(); rosterCode.RosterCodeID = rosterTable.RosterCodeID; if (ERosterCode.db.select(dbConn, rosterCode)) { ELeaveApplication leaveApp = new ELeaveApplication(); leaveApp.LeaveAppID = rosterTable.LeaveAppID; if (ELeaveApplication.db.select(dbConn, leaveApp)) { if (leaveApp.EmpPayrollID <= 0 && rosterCode.LeaveCodeID.Equals(leaveApp.LeaveCodeID) && rosterTable.RosterTableDate.Equals(leaveApp.LeaveAppDateFrom) && rosterTable.RosterTableDate.Equals(leaveApp.LeaveAppDateTo) ) { ELeaveCode leaveCode = new ELeaveCode(); leaveCode.LeaveCodeID = leaveApp.LeaveCodeID; if (ELeaveCode.db.select(dbConn, leaveCode)) { ELeaveApplication.db.delete(dbConn, leaveApp); } } } } } if (rosterTable.RosterCodeID > 0 && rosterTable.LeaveAppID <= 0) { ERosterCode rosterCode = new ERosterCode(); rosterCode.RosterCodeID = rosterTable.RosterCodeID; if (ERosterCode.db.select(dbConn, rosterCode)) { if (rosterCode.RosterCodeType.Equals(ERosterCode.ROSTERTYPE_CODE_RESTDAY)) { ELeaveBalance.DeleteLeaveBalanceAfter(dbConn, rosterTable.EmpID, ELeaveType.RESTDAY_LEAVE_TYPE(dbConn).LeaveTypeID, rosterTable.RosterTableDate); } else if (rosterCode.RosterCodeType.Equals(ERosterCode.ROSTERTYPE_CODE_STATUTORYHOLIDAY)) { ELeaveBalance.DeleteLeaveBalanceAfter(dbConn, rosterTable.EmpID, ELeaveType.STATUTORYHOLIDAY_LEAVE_TYPE(dbConn).LeaveTypeID, rosterTable.RosterTableDate); } else if (rosterCode.RosterCodeType.Equals(ERosterCode.ROSTERTYPE_CODE_PUBLICHOLIDAY)) { ELeaveBalance.DeleteLeaveBalanceAfter(dbConn, rosterTable.EmpID, ELeaveType.PUBLICHOLIDAY_LEAVE_TYPE(dbConn).LeaveTypeID, rosterTable.RosterTableDate); } } } }
private static void CreateLeaveApplication(DatabaseConnection dbConn, EAttendanceRecord attendanceRecord) { if (attendanceRecord.LeaveAppID > 0) { ELeaveApplication leaveApp = new ELeaveApplication(); leaveApp.LeaveAppID = attendanceRecord.LeaveAppID; if (!ELeaveApplication.db.select(dbConn, leaveApp)) { attendanceRecord.LeaveAppID = 0; } } // Check LeaveAppID <= 0 To prevent override LeaveAppID created by external function if (attendanceRecord.RosterCodeID > 0 && attendanceRecord.LeaveAppID <= 0) { ERosterCode rosterCode = new ERosterCode(); rosterCode.RosterCodeID = attendanceRecord.RosterCodeID; if (ERosterCode.db.select(dbConn, rosterCode)) { if (rosterCode.RosterCodeType.Equals(ERosterCode.ROSTERTYPE_CODE_LEAVE) && rosterCode.LeaveCodeID > 0) { ELeaveCode leaveCode = new ELeaveCode(); leaveCode.LeaveCodeID = rosterCode.LeaveCodeID; if (ELeaveCode.db.select(dbConn, leaveCode)) { ELeaveApplication leaveApp = ELeaveApplication.GetOrCreateSingleDayLeaveApplicationObject(dbConn, attendanceRecord.EmpID, rosterCode.LeaveCodeID, attendanceRecord.AttendanceRecordDate); if (leaveApp != null) { if (leaveApp.LeaveAppID <= 0) { ELeaveApplication.db.insert(dbConn, leaveApp); attendanceRecord.LeaveAppID = leaveApp.LeaveAppID; } } } } else if (rosterCode.RosterCodeType.Equals(ERosterCode.ROSTERTYPE_CODE_RESTDAY)) { ELeaveBalance.DeleteLeaveBalanceAfter(dbConn, attendanceRecord.EmpID, ELeaveType.RESTDAY_LEAVE_TYPE(dbConn).LeaveTypeID, attendanceRecord.AttendanceRecordDate); } else if (rosterCode.RosterCodeType.Equals(ERosterCode.ROSTERTYPE_CODE_STATUTORYHOLIDAY)) { ELeaveBalance.DeleteLeaveBalanceAfter(dbConn, attendanceRecord.EmpID, ELeaveType.STATUTORYHOLIDAY_LEAVE_TYPE(dbConn).LeaveTypeID, attendanceRecord.AttendanceRecordDate); } else if (rosterCode.RosterCodeType.Equals(ERosterCode.ROSTERTYPE_CODE_PUBLICHOLIDAY)) { ELeaveBalance.DeleteLeaveBalanceAfter(dbConn, attendanceRecord.EmpID, ELeaveType.PUBLICHOLIDAY_LEAVE_TYPE(dbConn).LeaveTypeID, attendanceRecord.AttendanceRecordDate); } } } }
private static void DeleteLeaveApplication(DatabaseConnection dbConn, EAttendanceRecord attendanceRecord) { if (attendanceRecord.LeaveAppID > 0) { ERosterCode rosterCode = new ERosterCode(); rosterCode.RosterCodeID = attendanceRecord.RosterCodeID; if (ERosterCode.db.select(dbConn, rosterCode)) { ELeaveApplication leaveApp = new ELeaveApplication(); leaveApp.LeaveAppID = attendanceRecord.LeaveAppID; if (ELeaveApplication.db.select(dbConn, leaveApp)) { if (leaveApp.EmpPayrollID <= 0 && rosterCode.LeaveCodeID.Equals(leaveApp.LeaveCodeID) && attendanceRecord.AttendanceRecordDate.Equals(leaveApp.LeaveAppDateFrom) && attendanceRecord.AttendanceRecordDate.Equals(leaveApp.LeaveAppDateTo) ) { //ELeaveCode leaveCode = new ELeaveCode(); //leaveCode.LeaveCodeID = leaveApp.LeaveCodeID; //if (ELeaveCode.db.select(dbConn, leaveCode)) ELeaveApplication.db.delete(dbConn, leaveApp); } } } } if (attendanceRecord.RosterCodeID > 0 && attendanceRecord.LeaveAppID <= 0) { ERosterCode rosterCode = new ERosterCode(); rosterCode.RosterCodeID = attendanceRecord.RosterCodeID; if (ERosterCode.db.select(dbConn, rosterCode)) { if (rosterCode.RosterCodeType.Equals(ERosterCode.ROSTERTYPE_CODE_RESTDAY)) { ELeaveBalance.DeleteLeaveBalanceAfter(dbConn, attendanceRecord.EmpID, ELeaveType.RESTDAY_LEAVE_TYPE(dbConn).LeaveTypeID, attendanceRecord.AttendanceRecordDate); } else if (rosterCode.RosterCodeType.Equals(ERosterCode.ROSTERTYPE_CODE_STATUTORYHOLIDAY)) { ELeaveBalance.DeleteLeaveBalanceAfter(dbConn, attendanceRecord.EmpID, ELeaveType.STATUTORYHOLIDAY_LEAVE_TYPE(dbConn).LeaveTypeID, attendanceRecord.AttendanceRecordDate); } else if (rosterCode.RosterCodeType.Equals(ERosterCode.ROSTERTYPE_CODE_PUBLICHOLIDAY)) { ELeaveBalance.DeleteLeaveBalanceAfter(dbConn, attendanceRecord.EmpID, ELeaveType.PUBLICHOLIDAY_LEAVE_TYPE(dbConn).LeaveTypeID, attendanceRecord.AttendanceRecordDate); } } } }
public static ERequestLeaveApplication CreateDummyRequestLeaveAppliction(ELeaveApplication leaveApp) { ERequestLeaveApplication requestLeaveApp = new ERequestLeaveApplication(); requestLeaveApp.EmpID = leaveApp.EmpID; requestLeaveApp.RequestLeaveAppDateFrom = leaveApp.LeaveAppDateFrom; requestLeaveApp.RequestLeaveAppDateTo = leaveApp.LeaveAppDateTo; requestLeaveApp.RequestLeaveAppHasMedicalCertificate = leaveApp.LeaveAppHasMedicalCertificate; requestLeaveApp.RequestLeaveDays = leaveApp.LeaveAppDays; requestLeaveApp.RequestLeaveAppHours = leaveApp.LeaveAppHours; requestLeaveApp.RequestLeaveAppRemark = leaveApp.LeaveAppRemark; requestLeaveApp.RequestLeaveAppTimeFrom = leaveApp.LeaveAppTimeFrom; requestLeaveApp.RequestLeaveAppTimeTo = leaveApp.LeaveAppTimeTo; requestLeaveApp.RequestLeaveAppUnit = leaveApp.LeaveAppUnit; requestLeaveApp.RequestLeaveCodeID = leaveApp.LeaveCodeID; requestLeaveApp.RequestLeaveAppRemark = leaveApp.LeaveAppRemark; return(requestLeaveApp); }
private static void CreateLeaveApplication(DatabaseConnection dbConn, ERosterTable rosterTable) { if (rosterTable.LeaveAppID == 0) { DBFilter attendanceRecordFilter = new DBFilter(); attendanceRecordFilter.add(new Match("EmpID", rosterTable.EmpID)); attendanceRecordFilter.add(new Match("AttendanceRecordDate", rosterTable.RosterTableDate)); attendanceRecordFilter.add(new Match("RosterCodeID", rosterTable.RosterCodeID)); attendanceRecordFilter.add(new Match("LeaveAppID", ">", 0)); System.Collections.ArrayList existingAttendanceRecordList = EAttendanceRecord.db.select(dbConn, attendanceRecordFilter); // do not create leave application if the attendance record for that day exists if (existingAttendanceRecordList.Count > 0) { rosterTable.LeaveAppID = ((EAttendanceRecord)existingAttendanceRecordList[0]).LeaveAppID; return; } } if (rosterTable.LeaveAppID == 0) { DBFilter attendanceRecordFilter = new DBFilter(); attendanceRecordFilter.add(new Match("EmpID", rosterTable.EmpID)); attendanceRecordFilter.add(new Match("AttendanceRecordDate", rosterTable.RosterTableDate)); attendanceRecordFilter.add(new Match("RosterCodeID", "<>", rosterTable.RosterCodeID)); // do not create leave application if the attendance record for that day exists if (EAttendanceRecord.db.count(dbConn, attendanceRecordFilter) > 0) { return; } } if (rosterTable.LeaveAppID > 0) { ELeaveApplication leaveApp = new ELeaveApplication(); leaveApp.LeaveAppID = rosterTable.LeaveAppID; if (!ELeaveApplication.db.select(dbConn, leaveApp)) { rosterTable.LeaveAppID = 0; } } // Check LeaveAppID <= 0 To prevent override LeaveAppID created by external function if (rosterTable.RosterCodeID > 0 && rosterTable.LeaveAppID <= 0) { ERosterCode rosterCode = new ERosterCode(); rosterCode.RosterCodeID = rosterTable.RosterCodeID; if (ERosterCode.db.select(dbConn, rosterCode)) { if (rosterCode.RosterCodeType.Equals(ERosterCode.ROSTERTYPE_CODE_LEAVE) && rosterCode.LeaveCodeID > 0) { ELeaveCode leaveCode = new ELeaveCode(); leaveCode.LeaveCodeID = rosterCode.LeaveCodeID; if (ELeaveCode.db.select(dbConn, leaveCode)) { ELeaveApplication leaveApp = ELeaveApplication.GetOrCreateSingleDayLeaveApplicationObject(dbConn, rosterTable.EmpID, rosterCode.LeaveCodeID, rosterTable.RosterTableDate); if (leaveApp != null) { if (leaveApp.LeaveAppID <= 0) { ELeaveApplication.db.insert(dbConn, leaveApp); rosterTable.LeaveAppID = leaveApp.LeaveAppID; } } } } else if (rosterCode.RosterCodeType.Equals(ERosterCode.ROSTERTYPE_CODE_RESTDAY)) { ELeaveBalance.DeleteLeaveBalanceAfter(dbConn, rosterTable.EmpID, ELeaveType.RESTDAY_LEAVE_TYPE(dbConn).LeaveTypeID, rosterTable.RosterTableDate); } else if (rosterCode.RosterCodeType.Equals(ERosterCode.ROSTERTYPE_CODE_STATUTORYHOLIDAY)) { ELeaveBalance.DeleteLeaveBalanceAfter(dbConn, rosterTable.EmpID, ELeaveType.STATUTORYHOLIDAY_LEAVE_TYPE(dbConn).LeaveTypeID, rosterTable.RosterTableDate); } else if (rosterCode.RosterCodeType.Equals(ERosterCode.ROSTERTYPE_CODE_PUBLICHOLIDAY)) { ELeaveBalance.DeleteLeaveBalanceAfter(dbConn, rosterTable.EmpID, ELeaveType.PUBLICHOLIDAY_LEAVE_TYPE(dbConn).LeaveTypeID, rosterTable.RosterTableDate); } } } }
public bool IsOverlapLeaveApplication(DatabaseConnection dbConn, out ArrayList OverlapLeaveApplicationList) { OverlapLeaveApplicationList = new ArrayList(); DBFilter overlapCheckingFilter = new DBFilter(); overlapCheckingFilter.add(new Match("EmpID", EmpID)); overlapCheckingFilter.add(new Match("RequestLeaveAppID", "<>", RequestLeaveAppID)); overlapCheckingFilter.add(new Match("RequestLeaveAppDateFrom", "<=", RequestLeaveAppDateTo)); overlapCheckingFilter.add(new Match("RequestLeaveAppDateTo", ">=", RequestLeaveAppDateFrom)); if (RequestLeaveAppUnit.Equals("H")) { overlapCheckingFilter.add(new Match("RequestLeaveAppUnit", "D")); } //// Start 0000201, Ricky S0, 2015-06-01 //else if (RequestLeaveAppUnit.Equals("D")) //{ // if (RequestLeaveAppDateToAM == "AM") // { // OR m_orFrom = new OR(); // m_orFrom.add(new Match("RequestLeaveAppDateFromAM", "AM")); // m_orFrom.add(new NullTerm("RequestLeaveAppDateFrom")); // overlapCheckingFilter.add(m_orFrom); // } // else if (RequestLeaveAppDateFromAM == "PM") // { // OR m_orTo = new OR(); // m_orFrom.add(new Match("RequestLeaveAppDateToAM", "PM")); // m_orFrom.add(new NullTerm("RequestLeaveAppDateTo")); // overlapCheckingFilter.add(m_orTo); // } //} //// End 0000201, Ricky S0, 2015-06-01 else if (RequestLeaveAppUnit.Equals("A")) { // AM Leave Application OR orLeaveAppUnit = new OR(); orLeaveAppUnit.add(new Match("RequestLeaveAppUnit", "D")); orLeaveAppUnit.add(new Match("RequestLeaveAppUnit", "A")); overlapCheckingFilter.add(orLeaveAppUnit); } else if (RequestLeaveAppUnit.Equals("P")) { // PM Leave Application OR orLeaveAppUnit = new OR(); orLeaveAppUnit.add(new Match("RequestLeaveAppUnit", "D")); orLeaveAppUnit.add(new Match("RequestLeaveAppUnit", "P")); overlapCheckingFilter.add(orLeaveAppUnit); } // Start 0000201, Ricky So, 2015-06-01 // remove those are not classified as overlap //ArrayList overlapDailyLeaveAppList = db.select(dbConn, overlapCheckingFilter); ArrayList overlapDailyLeaveAppList = new ArrayList(); ArrayList potentialOverlapLeaveAppList = db.select(dbConn, overlapCheckingFilter); foreach (ERequestLeaveApplication potentialOverlapLeaveApp in potentialOverlapLeaveAppList) { if (this.RequestLeaveAppDateFrom == potentialOverlapLeaveApp.RequestLeaveAppDateTo) { if (this.RequestLeaveAppDateFromAM == "PM" || this.RequestLeaveAppUnit == "P") { if (potentialOverlapLeaveApp.RequestLeaveAppDateToAM == "AM") { continue; } else if (potentialOverlapLeaveApp.RequestLeaveAppUnit == "A") { continue; } } else if (this.RequestLeaveAppUnit == "A") { //if (potentialOverlapLeaveApp.RequestLeaveAppDateToAM == "PM") // continue; //else if (potentialOverlapLeaveApp.RequestLeaveAppUnit == "P") // continue; } //else if (this.RequestLeaveAppUnit == "") //{ //} } if (this.RequestLeaveAppDateTo == potentialOverlapLeaveApp.RequestLeaveAppDateFrom) { if (this.RequestLeaveAppDateToAM == "AM") { if (potentialOverlapLeaveApp.RequestLeaveAppDateFromAM == "PM") { continue; } else if (potentialOverlapLeaveApp.RequestLeaveAppUnit == "P") { continue; } } else if (this.RequestLeaveAppUnit == "P") { } //else if (this.RequestLeaveAppUnit == "") //{ //} } if (this.RequestLeaveAppDateFrom == potentialOverlapLeaveApp.RequestLeaveAppDateFrom) { if (this.RequestLeaveAppUnit == "A") { if (potentialOverlapLeaveApp.RequestLeaveAppUnit == "P" || potentialOverlapLeaveApp.RequestLeaveAppDateFromAM == "PM") { continue; } } else if (this.RequestLeaveAppUnit == "P") { if (potentialOverlapLeaveApp.RequestLeaveAppUnit == "A") { continue; } } else if (this.RequestLeaveAppUnit == "D") { if (this.RequestLeaveAppDateFromAM == "PM" && (potentialOverlapLeaveApp.RequestLeaveAppDateFromAM == "AM" || potentialOverlapLeaveApp.RequestLeaveAppUnit == "A")) { continue; } } } overlapDailyLeaveAppList.Add(potentialOverlapLeaveApp); } // End 0000201, Ricky So, 2015-06-01 if (overlapDailyLeaveAppList.Count > 0) { foreach (ERequestLeaveApplication previousRequestLeaveApp in overlapDailyLeaveAppList) { //------------------------------------------------------ //Check record status from the EmpRequest table DBFilter filterStatus = new DBFilter(); filterStatus.add(new Match("EmpID", EmpID)); filterStatus.add(new Match("EmpRequestRecordID", previousRequestLeaveApp.RequestLeaveAppID)); filterStatus.add(new Match("EmpRequestType", EEmpRequest.TYPE_EELEAVEAPP)); //filterStatus.add(new Match("EmpRequestStatus", "<>", EEmpRequest.STATUS_USRCANCEL)); //filterStatus.add(new Match("EmpRequestStatus", "<>", EEmpRequest.STATUS_FSTREJ)); //filterStatus.add(new Match("EmpRequestStatus", "<>", EEmpRequest.STATUS_SNDREJ)); //filterStatus.add(new Match("EmpRequestStatus", "<>", EEmpRequest.STATUS_SNDAPP)); 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) { OverlapLeaveApplicationList.Add(previousRequestLeaveApp); } //------------------------------------------------------ } //OverlapLeaveApplicationList.AddRange(overlapDailyLeaveAppList); } if (!RequestLeaveAppUnit.Equals("D")) { DateTime newLeaveAppTimeFrom = RequestLeaveAppDateFrom.Date.Add(new TimeSpan(RequestLeaveAppTimeFrom.Hour, RequestLeaveAppTimeFrom.Minute, RequestLeaveAppTimeFrom.Second)); DateTime newLeaveAppTimeTo = RequestLeaveAppDateTo.Date.Add(new TimeSpan(RequestLeaveAppTimeTo.Hour, RequestLeaveAppTimeTo.Minute, RequestLeaveAppTimeTo.Second)); while (newLeaveAppTimeFrom > newLeaveAppTimeTo) { newLeaveAppTimeTo = newLeaveAppTimeTo.AddDays(1); } overlapCheckingFilter = new DBFilter(); overlapCheckingFilter.add(new Match("EmpID", EmpID)); overlapCheckingFilter.add(new Match("RequestLeaveAppID", "<>", RequestLeaveAppID)); overlapCheckingFilter.add(new Match("RequestLeaveAppDateFrom", "<=", RequestLeaveAppDateTo)); overlapCheckingFilter.add(new Match("RequestLeaveAppDateTo", ">=", RequestLeaveAppDateFrom)); overlapCheckingFilter.add(new Match("RequestLeaveAppUnit", "<>", "D")); ArrayList leaveAppList = db.select(dbConn, overlapCheckingFilter); foreach (ERequestLeaveApplication previousRequestLeaveApp in leaveAppList) { //------------------------------------------------------ //Check record status from the EmpRequest table DBFilter filterStatus = new DBFilter(); filterStatus.add(new Match("EmpID", EmpID)); filterStatus.add(new Match("EmpRequestRecordID", previousRequestLeaveApp.RequestLeaveAppID)); filterStatus.add(new Match("EmpRequestType", EEmpRequest.TYPE_EELEAVEAPP)); //filterStatus.add(new Match("EmpRequestStatus", "<>", EEmpRequest.STATUS_USRCANCEL)); //filterStatus.add(new Match("EmpRequestStatus", "<>", EEmpRequest.STATUS_FSTREJ)); //filterStatus.add(new Match("EmpRequestStatus", "<>", EEmpRequest.STATUS_SNDREJ)); //filterStatus.add(new Match("EmpRequestStatus", "<>", EEmpRequest.STATUS_SNDAPP)); 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 oldLeaveAppTimeFrom = previousRequestLeaveApp.RequestLeaveAppDateFrom.Date.Add(new TimeSpan(previousRequestLeaveApp.RequestLeaveAppTimeFrom.Hour, previousRequestLeaveApp.RequestLeaveAppTimeFrom.Minute, previousRequestLeaveApp.RequestLeaveAppTimeFrom.Second)); DateTime oldLeaveAppTimeTo = previousRequestLeaveApp.RequestLeaveAppDateTo.Date.Add(new TimeSpan(previousRequestLeaveApp.RequestLeaveAppTimeTo.Hour, previousRequestLeaveApp.RequestLeaveAppTimeTo.Minute, previousRequestLeaveApp.RequestLeaveAppTimeTo.Second)); while (oldLeaveAppTimeFrom > oldLeaveAppTimeTo) { oldLeaveAppTimeTo = oldLeaveAppTimeTo.AddDays(1); } if (!newLeaveAppTimeFrom.Equals(newLeaveAppTimeTo) && !oldLeaveAppTimeFrom.Equals(oldLeaveAppTimeTo)) { // Only check if the following case exists // Time A From------- Time B From ---------- Time B To ------------Time A To if (newLeaveAppTimeFrom <= oldLeaveAppTimeFrom && oldLeaveAppTimeTo <= newLeaveAppTimeTo || oldLeaveAppTimeFrom <= newLeaveAppTimeFrom && newLeaveAppTimeTo <= oldLeaveAppTimeTo) { OverlapLeaveApplicationList.Add(previousRequestLeaveApp); } } } } } // Also Check Leave Application ArrayList OverlapOutstandardLeaveApplicationList; ELeaveApplication leaveApp = new ELeaveApplication(); leaveApp.EmpID = EmpID; leaveApp.LeaveAppDateFrom = RequestLeaveAppDateFrom; leaveApp.LeaveAppDateFromAM = RequestLeaveAppDateFromAM; leaveApp.LeaveAppDateTo = RequestLeaveAppDateTo; leaveApp.LeaveAppDateToAM = RequestLeaveAppDateToAM; leaveApp.LeaveAppDays = RequestLeaveDays; leaveApp.LeaveAppTimeFrom = RequestLeaveAppTimeFrom; leaveApp.LeaveAppTimeTo = RequestLeaveAppTimeTo; leaveApp.LeaveAppUnit = RequestLeaveAppUnit; leaveApp.LeaveCodeID = RequestLeaveCodeID; if (leaveApp.IsOverlapLeaveApplication(dbConn, out OverlapOutstandardLeaveApplicationList)) { // Start 0000233, Miranda, 2015-07-05 if (RequestLeaveAppUnit.Equals("D")) { OverlapLeaveApplicationList.AddRange(OverlapOutstandardLeaveApplicationList); } // End 0000233, Miranda, 2015-07-05 } if (OverlapLeaveApplicationList.Count > 0) { return(true); } else { return(false); } }