public WorkTypeInfo GetAdministrationWorkType(int id, int day)
        {
            WorkTypeInfo workTypeInfo = new WorkTypeInfo
            {
                Name         = mAdministrativeMemberNameList[id],
                ClockInTime  = GetClockInData(id, day),
                ClockOffTime = GetClockOffData(id, day)
            };

            var workAddress =
                GlobalDefine.Instance.Config.GetWorkAddress(WorkerType.Administration, WorkAddressType.None);

            if (workTypeInfo.ClockInTime != null && !workAddress.IsInAddressRange(workTypeInfo.ClockInTime.Address))
            {
                workTypeInfo.ClockInTime = null;
            }

            if (workTypeInfo.ClockOffTime != null && !workAddress.IsInAddressRange(workTypeInfo.ClockOffTime.Address))
            {
                workTypeInfo.ClockOffTime = null;
            }

            if (workTypeInfo.ClockInTime == null && workTypeInfo.ClockOffTime == null)
            {
                workTypeInfo.WorkTimeType = workAddress.IsWeekendTime(day) ? WorkTimeType.WorkRest : WorkTimeType.WorkUnClockInAndOff;
            }
            else if (workTypeInfo.ClockInTime == workTypeInfo.ClockOffTime)
            {
                workTypeInfo.WorkTimeType = workTypeInfo.ClockInTime.IsMorningSign() ? WorkTimeType.WorkUnClockOff : WorkTimeType.WorkUnClockIn;
                if (workTypeInfo.WorkTimeType == WorkTimeType.WorkUnClockIn)
                {
                    workTypeInfo.ClockInTime = null;
                }
                else
                {
                    workTypeInfo.ClockOffTime = null;
                }
            }
            else if (workTypeInfo.ClockInTime == null)
            {
                workTypeInfo.WorkTimeType = WorkTimeType.WorkUnClockIn;
            }
            else if (workTypeInfo.ClockOffTime == null)
            {
                workTypeInfo.WorkTimeType = WorkTimeType.WorkUnClockOff;
            }
            else if (workTypeInfo.ClockOffTime != workTypeInfo.ClockInTime)
            {
                if (workAddress.IsClockInDelay(workTypeInfo.ClockInTime.SignTime))
                {
                    workTypeInfo.WorkTimeType = WorkTimeType.WorkLate;
                }
                if (workAddress.IsClockOffDelay(workTypeInfo.ClockOffTime.SignTime))
                {
                    workTypeInfo.WorkTimeType = workTypeInfo.WorkTimeType == WorkTimeType.WorkLate ? WorkTimeType.WorkLateAndLeveaEarly : WorkTimeType.WorkLeaveEarly;
                }
            }
            return(workTypeInfo);
        }
        public WorkTypeInfo GetBusinessWorkType(int id, int day)
        {
            WorkTypeInfo workTypeInfo = new WorkTypeInfo
            {
                Name         = mBusinessMemberNameList[id],
                ClockInTime  = GetClockInData(id, day),
                ClockOffTime = GetClockOffData(id, day)
            };

            if (workTypeInfo.ClockInTime == null && workTypeInfo.ClockOffTime == null)
            {
                var workAdress =
                    GlobalDefine.Instance.Config.GetWorkAddress(WorkerType.Business, WorkAddressType.InCompany);
                workTypeInfo.WorkTimeType = workAdress.IsWeekendTime(day) ? WorkTimeType.WorkRest : WorkTimeType.WorkUnClockInAndOff;
            }
            else if (workTypeInfo.ClockInTime == workTypeInfo.ClockOffTime)
            {
                workTypeInfo.WorkTimeType = workTypeInfo.ClockInTime.IsMorningSign() ? WorkTimeType.WorkUnClockOff : WorkTimeType.WorkUnClockIn;
                if (workTypeInfo.WorkTimeType == WorkTimeType.WorkUnClockIn)
                {
                    workTypeInfo.ClockInTime = null;
                }
                else
                {
                    workTypeInfo.ClockOffTime = null;
                }
            }
            else if (workTypeInfo.ClockOffTime != workTypeInfo.ClockInTime)
            {
                WorkAddress workAddress =
                    AttendanceDataManager.Instance.GetBusinessWorkAddress(workTypeInfo.ClockInTime, workTypeInfo.ClockOffTime);
                if (workAddress.IsClockInDelay(workTypeInfo.ClockInTime.SignTime))
                {
                    workTypeInfo.WorkTimeType = WorkTimeType.WorkLate;
                }

                if (workAddress.IsClockOffDelay(workTypeInfo.ClockOffTime.SignTime))
                {
                    workTypeInfo.WorkTimeType = workTypeInfo.WorkTimeType == WorkTimeType.WorkLate ? WorkTimeType.WorkLateAndLeveaEarly : WorkTimeType.WorkLeaveEarly;
                }
            }
            return(workTypeInfo);
        }