private double MathTimeWorkMorningDuration(string timeCheck, DateTime processDate, TruongGiaoDich workTimeMonday, TruongGiaoDich workTimeDaily, TruongGiaoDich workTimeApprove, TruongGiaoDich middleStart, TruongGiaoDich middleEnd) { double result = 0; var timeCheckList = timeCheck.Split('~')?.Select(x => x.ToTimeSpan()); if (middleStart != null && middleEnd != null && workTimeApprove != null && timeCheckList != null && timeCheckList.Count() > 1 && (timeCheckList.Last() - timeCheckList.First()).TotalMinutes > 5 && IsWorkStartMorning(timeCheckList, middleStart)) { if (processDate.DayOfWeek == DayOfWeek.Monday) { var workStart = timeCheckList.First() >= workTimeMonday.Value.ToTimeSpan() ? timeCheckList.First() : workTimeMonday.Value.ToTimeSpan(); var workEnd = timeCheckList.Last() >= middleStart.Value.ToTimeSpan() ? middleStart.Value.ToTimeSpan() : timeCheckList.Last(); var totalMorning = (workEnd - workStart).TotalMinutes; result = totalMorning > 0 && totalMorning > Convert.ToDouble(workTimeApprove.Value) ? totalMorning : 0; } else { var workStart = timeCheckList.First() >= workTimeDaily.Value.ToTimeSpan() ? timeCheckList.First() : workTimeDaily.Value.ToTimeSpan(); var workEnd = timeCheckList.Last() >= middleStart.Value.ToTimeSpan() ? middleStart.Value.ToTimeSpan() : timeCheckList.Last(); var totalMorning = (workEnd - workStart).TotalMinutes; result = totalMorning > 0 && totalMorning > Convert.ToDouble(workTimeApprove.Value) ? totalMorning : 0; } } return(result); }
private double MathTimeOTDurationDaily(string timeCheck, TruongGiaoDich workTimeEnd) { double result = 0; var timeCheckList = timeCheck.Split('~')?.Select(x => x.ToTimeSpan()); if (workTimeEnd != null && timeCheckList != null && timeCheckList.Count() > 1 && (timeCheckList.Last() - timeCheckList.First()).TotalMinutes > 5) { double minutesLast = (timeCheckList.Last() - workTimeEnd.Value.ToTimeSpan()).TotalMinutes; result += minutesLast > 0 ? minutesLast : 0; } return(result); }
private double MathTimeViolatingRuleDurationLast(string timeCheck, TruongGiaoDich middleEnd, TruongGiaoDich workTimeEnd) { double result = 0; var timeCheckList = timeCheck.Split('~')?.Select(x => x.ToTimeSpan()); if (workTimeEnd != null && timeCheckList != null && timeCheckList.Count() > 1 && (timeCheckList.Last() - timeCheckList.First()).TotalMinutes > 5 && IsWorkAfternoon(timeCheckList, middleEnd)) { double minutesLast = (workTimeEnd.Value.ToTimeSpan() - timeCheckList.Last()).TotalMinutes; result = minutesLast > 0 ? minutesLast : 0; } return(result); }
private double MathTimeWorkAfternoonDuration(string timeCheck, TruongGiaoDich workTimeEnd, TruongGiaoDich workTimeApprove, TruongGiaoDich middleStart, TruongGiaoDich middleEnd) { double result = 0; var timeCheckList = timeCheck.Split('~')?.Select(x => x.ToTimeSpan()); if (middleStart != null && middleEnd != null && workTimeApprove != null && workTimeEnd != null && timeCheckList != null && timeCheckList.Count() > 1 && (timeCheckList.Last() - timeCheckList.First()).TotalMinutes > 5 && IsWorkAfternoon(timeCheckList, middleEnd)) { var workStart = timeCheckList.First() >= middleEnd.Value.ToTimeSpan() ? timeCheckList.First() : middleEnd.Value.ToTimeSpan(); var workEnd = timeCheckList.Last() <= workTimeEnd.Value.ToTimeSpan() ? timeCheckList.Last() : workTimeEnd.Value.ToTimeSpan(); var totalAfternoon = (workEnd - workStart).TotalMinutes; result = totalAfternoon > 0 && totalAfternoon > Convert.ToDouble(workTimeApprove.Value) ? totalAfternoon : 0; } return(result); }
private bool IsWorkAfternoon(IEnumerable <TimeSpan> timeCheckList, TruongGiaoDich middleEnd) { return(timeCheckList.Last() > middleEnd.Value.ToTimeSpan()); }
private bool IsWorkStartAfternoon(IEnumerable <TimeSpan> timeCheckList, TruongGiaoDich middleStart, TruongGiaoDich middleEnd) { return(timeCheckList.First() > middleStart.Value.ToTimeSpan() && timeCheckList.First() < middleEnd.Value.ToTimeSpan()); }
private bool IsWorkStartMorning(IEnumerable <TimeSpan> timeCheckList, TruongGiaoDich middleStart) { return(timeCheckList.First() < middleStart.Value.ToTimeSpan()); }
private double MathTimeViolatingRuleDurationFirst(DateTime processDate, string timeCheck, TruongGiaoDich workTimeMonday, TruongGiaoDich workTimeDaily, TruongGiaoDich middleStart, TruongGiaoDich middleEnd) { double result = 0; var timeCheckList = timeCheck.Split('~')?.Select(x => x.ToTimeSpan()); if (IsWorkStartMorning(timeCheckList, middleStart)) { switch (processDate.DayOfWeek) { case DayOfWeek.Monday: if (workTimeMonday != null && timeCheckList != null && timeCheckList.Count() > 0) { double minutesFirst = (timeCheckList.First() - workTimeMonday.Value.ToTimeSpan()).TotalMinutes; result = minutesFirst > 0 ? minutesFirst : 0; } break; default: if (workTimeDaily != null && timeCheckList != null && timeCheckList.Count() > 0) { double minutesFirst = (timeCheckList.First() - workTimeDaily.Value.ToTimeSpan()).TotalMinutes; result = minutesFirst > 0 ? minutesFirst : 0; } break; } } if (IsWorkStartAfternoon(timeCheckList, middleStart, middleEnd)) { if (middleEnd != null && timeCheckList != null && timeCheckList.Count() > 0) { double minutesFirst = (timeCheckList.First() - middleEnd.Value.ToTimeSpan()).TotalMinutes; result = minutesFirst > 0 ? minutesFirst : 0; } } return(result); }