コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }
コード例 #5
0
 private bool IsWorkAfternoon(IEnumerable <TimeSpan> timeCheckList, TruongGiaoDich middleEnd)
 {
     return(timeCheckList.Last() > middleEnd.Value.ToTimeSpan());
 }
コード例 #6
0
 private bool IsWorkStartAfternoon(IEnumerable <TimeSpan> timeCheckList, TruongGiaoDich middleStart, TruongGiaoDich middleEnd)
 {
     return(timeCheckList.First() > middleStart.Value.ToTimeSpan() && timeCheckList.First() < middleEnd.Value.ToTimeSpan());
 }
コード例 #7
0
 private bool IsWorkStartMorning(IEnumerable <TimeSpan> timeCheckList, TruongGiaoDich middleStart)
 {
     return(timeCheckList.First() < middleStart.Value.ToTimeSpan());
 }
コード例 #8
0
        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);
        }