/// <summary>
        /// 取得上課時間列表
        /// </summary>
        /// <param name="token"></param>
        /// <returns></returns>
        public IEnumerable <Infrastructure.ViewModel.CourseManage.GetWeekBySemeResponse> APPGetWeekBySeme(string token)
        {
            var tokenService  = new TokenService();
            var memberService = new MemberService();
            var checkToken    = tokenService.GetTokenInfo(token).Result;

            if (checkToken == null)
            {
                return(null);
            }
            var memberInfo = memberService.UserIdToAccount(checkToken.MemberId);

            if (memberInfo == null)
            {
                return(null);
            }

            var db          = _uow.DbContext;
            var sectionData = db.Sections.FirstOrDefault(t => t.IsNowSeme == true && t.OrgId == memberInfo.OrgId);

            if (sectionData == null)
            {
                return(null);
            }

            var dateTimeTools = new Utility.DateTimeTools();
            var responseData  = dateTimeTools.GetIntervalDateList(sectionData.StartDate.ToLocalTime(), sectionData.EndDate.ToLocalTime(), 7);

            return(responseData.OrderBy(t => t.Start_date));
        }
Exemple #2
0
        public string GetPeriodWeek(DateTime targetStartDate, DateTime targetEndDate, int orgId)
        {
            var db          = _uow.DbContext;
            var sectionData = db.Sections.FirstOrDefault(t => t.IsNowSeme == true && t.OrgId == orgId);

            if (sectionData == null)
            {
                return(null);
            }
            var dateTimeTools = new Utility.DateTimeTools();
            var weekDatas     = dateTimeTools.GetIntervalDateList(sectionData.StartDate.ToLocalTime(), sectionData.EndDate.ToLocalTime(), 7);
            var responseData  = string.Empty;
            var index         = 1;

            foreach (var weekData in weekDatas)
            {
                if (
                    (weekData.Start_date.Date <= targetStartDate.Date &&
                     weekData.End_date.Date >= targetStartDate.Date) ||
                    (weekData.Start_date.Date <= targetEndDate.Date &&
                     weekData.End_date >= targetEndDate.Date) ||
                    (targetStartDate.Date <= weekData.Start_date.Date &&
                     targetEndDate >= weekData.End_date.Date)
                    )
                {
                    responseData = string.Format("{0},{1}", responseData, index.ToString());
                }

                index++;
            }
            responseData = responseData != string.Empty && responseData != null?responseData.Substring(1, responseData.Length - 1) : responseData;

            return(responseData);
        }
        /// <summary>
        /// 根據課程資訊建立每日課表
        /// </summary>
        /// <param name="circleKey"></param>
        /// <param name="classWeekType"></param>
        /// <returns></returns>
        public bool CreateByCircleKey(string circleKey, int?classWeekType = 0)
        {
            var learningcircleService = new LearningCircleService();
            var learningcircleInfo    = learningcircleService.GetDetailByOuterKey(circleKey);

            if (learningcircleInfo == null)
            {
                return(false);
            }

            var dateTimeTools = new Utility.DateTimeTools();
            var datas         = dateTimeTools.Getdata(learningcircleInfo.StartDate.Value.ToLocalTime(), learningcircleInfo.EndDate.Value.ToLocalTime(), circleKey, classWeekType);

            if (datas != null && datas.FirstOrDefault() != null)
            {
                var db = _uow.DbContext;
                db.TimeTable.AddRange(datas);
                db.SaveChanges();
            }
            return(true);
        }
        /// <summary>
        /// 取得使用者所有上課時間地點
        /// </summary>
        /// <param name="token"></param>
        /// <returns></returns>
        public IEnumerable <Infrastructure.ViewModel.CourseManage.GetMyCourseScheduleResponse> AppGetMyCourseRoomSchedule(string token)
        {
            var tokenService  = new TokenService();
            var memberService = new MemberService();
            var checkToken    = tokenService.GetTokenInfo(token).Result;

            if (checkToken == null)
            {
                return(null);
            }
            var memberInfo = memberService.UserIdToAccount(checkToken.MemberId);

            if (memberInfo == null)
            {
                return(null);
            }
            var db = _uow.DbContext;

            /*  var sqlData = (from ttb in db.TimeTable
             *               join lc in db.LearningCircle on ttb.Course_No equals lc.LearningOuterKey
             *               join wt in db.WeekTable on lc.Id equals wt.LearningCircleId
             *               join cm in db.CircleMemberRoleplay on lc.Id equals cm.CircleId
             *               orderby ttb.StartDate
             *               group ttb by new { ttb, lc.LearningOuterKey, lc.Name, wt.StartPeriod, wt.EndPeriod, wt.Place, cm.MemberId, wt.ClassWeekType, lc.Enable ,wt.Week} into g
             *               where g.Key.MemberId == memberInfo.Id && g.Key.Enable == true
             *               select new Infrastructure.ViewModel.CourseManage.GetMyCourseScheduleResponse
             *               {
             *                   Id=g.Key.ttb.Id,
             *                   RoomID = null,
             *                   RoomName = g.Key.Place,
             *                   ClassID = g.Key.LearningOuterKey,
             *                   ClassName = g.Key.Name,
             *                   StartDate = g.Key.ttb.StartDate.Value,
             *                   EndDate = g.Key.ttb.EndDate.Value,
             *                   StartPeriod = g.Key.StartPeriod.Value,
             *                   EndPeriod = g.Key.EndPeriod.Value,
             *                   NameOfWeekDay = g.Key.Week,
             *                   ClassWeekType = (Infrastructure.ViewModel.CourseManage.GetMyCourseScheduleResponse.enumClassWeekType)g.Key.ClassWeekType
             *               }).ToList();*/

            var sqlData = (from wt in db.WeekTable
                           join lc in db.LearningCircle on wt.LearningCircleId equals lc.Id
                           join cmr in db.CircleMemberRoleplay on lc.Id equals cmr.CircleId
                           group wt by new { wt, lc.LearningOuterKey, lc.Name, cmr.MemberId, lc.Enable, lc.Section, lc.StartDate, lc.EndDate } into g
                           where g.Key.MemberId == memberInfo.Id &&
                           g.Key.Enable == true
                           select new Infrastructure.ViewModel.CourseManage.GetMyCourseScheduleResponse
            {
                RoomID = null,
                RoomName = g.Key.wt.Place,
                ClassID = g.Key.LearningOuterKey.ToLower(),
                ClassName = g.Key.Name,
                StartDate = g.Key.wt.StartTime,
                EndDate = g.Key.wt.EndTime,
                StartPeriod = g.Key.wt.StartPeriod.Value,
                EndPeriod = g.Key.wt.EndPeriod.Value,
                NameOfWeekDay = g.Key.wt.Week,
                ClassWeekType = (Infrastructure.ViewModel.CourseManage.GetMyCourseScheduleResponse.enumClassWeekType)g.Key.wt.ClassWeekType
            }).ToList();

            if (sqlData.Count() <= 0)
            {
                return(null);
            }
            var response      = new List <Infrastructure.ViewModel.CourseManage.GetMyCourseScheduleResponse>();
            var dayOfWeek     = new Utility.DayOfWeekTools();
            var dateTimeTools = new Utility.DateTimeTools();

            //weekTable資料
            foreach (var data in sqlData)
            {
                var timeDatas = dateTimeTools.GetIntervalDateList(data.StartDate, data.EndDate, 7);
                //塞TimeTable資料
                foreach (var timeData in timeDatas)
                {
                    var endDate = timeData.Start_date.Date;
                    endDate = endDate.AddHours(timeData.End_date.ToLocalTime().Hour);
                    endDate = endDate.AddMinutes(timeData.End_date.ToLocalTime().Minute);
                    var responseData = new Infrastructure.ViewModel.CourseManage.GetMyCourseScheduleResponse()
                    {
                        ClassID         = data.ClassID,
                        ClassName       = data.ClassName,
                        ClassWeekType   = data.ClassWeekType,
                        EndDate         = endDate,
                        StartDate       = timeData.Start_date.ToLocalTime(),
                        StartPeriod     = data.StartPeriod,
                        EndPeriod       = data.EndPeriod,
                        RoomName        = data.RoomName,
                        WeekDay         = dayOfWeek.ChangeToDayOfWeek(data.NameOfWeekDay).Value,
                        NameOfWeekDay   = data.NameOfWeekDay,
                        StartPeriodTime = timeData.Start_date.ToLocalTime().ToString("yyyy-MM-ddTHH:mm:ss"),
                        EndPeriodTime   = endDate.ToString("yyyy-MM-ddTHH:mm:ss")
                    };
                    response.Add(responseData);
                }

                /*    data.EndDate = data.EndDate.ToLocalTime();
                 *  data.StartDate = data.StartDate.ToLocalTime();
                 *  if (data.StartDate.DayOfWeek == dayOfWeek.ChangeToDayOfWeek(data.NameOfWeekDay)) {
                 *      //data.ClassID = data.ClassID.ToLower();
                 *      data.StartPeriodTime = data.StartDate.ToString("yyyy-MM-ddTHH:mm:ss");
                 *      data.EndPeriodTime = data.EndDate.ToString("yyyy-MM-ddTHH:mm:ss");
                 *      data.WeekDay = data.StartDate.DayOfWeek;
                 *      data.NameOfWeekDay = dayOfWeek.ChangeToCht(data.StartDate.DayOfWeek);
                 *      response.Add(data);
                 *  }*/
            }
            return(response);
        }
        /// <summary>
        /// 修改開始結束日期資訊
        /// </summary>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <param name="circleKey"></param>
        /// <returns></returns>
        public bool UpdateByCircleKey(DateTime startDate, DateTime endDate, string circleKey)
        {
            var learningcircleService = new LearningCircleService();
            var learningcircleInfo    = learningcircleService.GetDetailByOuterKey(circleKey);

            if (learningcircleInfo == null)
            {
                return(false);
            }
            var dateTimeTools = new Utility.DateTimeTools();
            var datas         = dateTimeTools.Getdata(learningcircleInfo.StartDate.Value.ToLocalTime(), learningcircleInfo.EndDate.Value.ToLocalTime(), circleKey);
            //  var removeDatas   = datas.Where(t => t.StartDate.Value < startDate || t.EndDate.Value > endDate).ToList();
            var db          = _uow.DbContext;
            var dbData      = db.TimeTable.Where(t => t.Course_No == circleKey).ToList(); //取得DB目前所有上課時間地點資訊
            var allData     = dbData.Union(datas);                                        //聯集需求的日期
            var deleteDatas = allData.Except(datas);                                      //找出不是需求的日期 -與DB資料的差集
            //找出不是需求的日期
            var removeDatas = db.TimeTable.Where(t => t.Course_No == circleKey && (t.StartDate.Value <startDate || t.EndDate.Value> endDate)).ToList();

            removeDatas = removeDatas.Union(deleteDatas).ToList(); //聯集需要刪除的資料
            //刪除更新設定區間外的日期
            db.TimeTable.RemoveRange(removeDatas);
            //取得最初的開始日期
            var firstTimeTable = datas.OrderBy(t => t.StartDate).FirstOrDefault();
            //取得最後的結束日期
            var lastTimeTable    = datas.OrderByDescending(t => t.EndDate).FirstOrDefault();
            var weekTableService = new WeekTableService();
            var weekTableInfo    = weekTableService.GetByCirclekey(circleKey);
            var weekOfDays       = weekTableInfo.WeekTable.Select(t => t.StartTime.ToLocalTime().DayOfWeek.ToString()).OrderBy(t => t);

            //新增DB所沒有的startDate日期區塊
            if (firstTimeTable.StartDate.HasValue && (firstTimeTable.StartDate.Value >= startDate))
            {
                var insertStartDates = new List <TimeTable>();

                var diffStartDay = (firstTimeTable.StartDate.Value - startDate).Days + 1;
                for (var firstDay = 1; firstDay < diffStartDay; firstDay++)
                {
                    var lastEntity = new TimeTable()
                    {
                        ClassRoom = firstTimeTable.ClassRoom,
                        ClassTime = firstTimeTable.ClassTime,
                        Course_No = firstTimeTable.Course_No,
                        Course_Id = firstTimeTable.Course_Id,
                        EndDate   = firstTimeTable.EndDate,
                        StartDate = firstTimeTable.StartDate
                    };
                    var lastStartDate = lastEntity.StartDate.Value.AddDays(-(firstDay));
                    var lastEndDate   = lastEntity.EndDate.Value.AddDays(-(firstDay));
                    if (weekOfDays.FirstOrDefault(t => t == lastStartDate.DayOfWeek.ToString()) != null)
                    {
                        lastEntity.StartDate = lastStartDate;
                        lastEntity.EndDate   = lastEndDate;
                        db.TimeTable.Add(lastEntity);
                    }
                }
            }

            //新增DB所沒有的endDate日期 區塊
            if (lastTimeTable.EndDate.HasValue && (lastTimeTable.EndDate.Value >= endDate))
            {
                var insertStartDates = new List <TimeTable>();
                var diffEndDay       = (endDate - lastTimeTable.EndDate.Value).Days + 1;
                for (var endDay = 1; endDay <= diffEndDay; endDay++)
                {
                    var nextEntity = new TimeTable()
                    {
                        ClassRoom = lastTimeTable.ClassRoom,
                        ClassTime = lastTimeTable.ClassTime,
                        Course_No = lastTimeTable.Course_No,
                        Course_Id = lastTimeTable.Course_Id,
                        EndDate   = lastTimeTable.EndDate,
                        StartDate = lastTimeTable.StartDate
                    };;
                    var nextStartDate = nextEntity.StartDate.Value.AddDays(endDay);
                    var nextEndDate   = nextEntity.EndDate.Value.AddDays(endDay);
                    if (weekOfDays.FirstOrDefault(t => t == nextStartDate.DayOfWeek.ToString()) != null)
                    {
                        nextEntity.StartDate = nextStartDate;
                        nextEntity.EndDate   = nextEndDate;
                        db.TimeTable.Add(nextEntity);
                    }
                }
            }

            //補上新加入的weeks資料
            foreach (var data in datas)
            {
                var checkData = dbData.FirstOrDefault(t => t.StartDate.Value.Date == data.StartDate.Value.Date);
                if (checkData != null)
                {
                    continue;
                }

                db.TimeTable.Add(data);
            }


            db.SaveChanges();
            return(true);
        }
Exemple #6
0
        /// <summary>
        /// 處理資料
        /// </summary>
        /// <param name="requestData"></param>
        /// <returns></returns>
        public bool WeekTableDataProxy(WeekTablePostRequest requestData)
        {
            var tokenService = new TokenService();
            var tokenInfo    = tokenService.GetTokenInfo(requestData.Token).Result;

            if (tokenInfo == null)
            {
                return(false);
            }
            if (requestData.WeekTableData == null)
            {
                return(false);
            }
            var insertDatas           = requestData.WeekTableData.WeekTable.Where(t => t.Id == 0);
            var learningCircleService = new LearningCircleService();
            var learningCircleInfo    = learningCircleService.GetDetailByOuterKey(requestData.CircleKey.ToLower());

            if (learningCircleInfo == null)
            {
                return(false);
            }
            var startDateTime  = requestData.WeekTableData.StartDate;
            var endDateTime    = requestData.WeekTableData.EndDate;
            var dayOfWeekTools = new Utility.DayOfWeekTools();
            var DateTimeTools  = new Utility.DateTimeTools();

            //處理新增資料
            foreach (var insertData in insertDatas)
            {
                insertData.LearningCircleId = learningCircleInfo.Id;
                insertData.ClassWeekType    = 0;
                insertData.Creator          = tokenInfo.MemberId;
                insertData.CreateUtcDate    = DateTime.UtcNow;
                var insertStartPeriod = DateTimeTools.DatetimeToSectionint(insertData.StartTime, true);
                var insertEndPeriod   = DateTimeTools.DatetimeToSectionint(insertData.EndTime, false);
                insertData.StartPeriod = insertStartPeriod;
                insertData.EndPeriod   = insertEndPeriod;
                /*判斷week字串與startTime的時與分,再組成對的時間*/
                //取出時與分
                var insertStartHour   = insertData.StartTime.ToUniversalTime().Hour;
                var insertStartMinute = insertData.StartTime.ToUniversalTime().Minute;
                var insertEndHour     = insertData.EndTime.ToUniversalTime().Hour;
                var insertEndMinute   = insertData.EndTime.ToUniversalTime().Minute;
                var insertDayOfWeek   = dayOfWeekTools.ChangeToDayOfWeek(insertData.Week);
                if (insertDayOfWeek == null)
                {
                    return(false);
                }
                var startDayOfWeek = startDateTime.DayOfWeek;
                if (insertDayOfWeek.Value != startDayOfWeek)
                {
                    var interval = (int)startDayOfWeek - (int)insertDayOfWeek.Value;
                    if (interval > 0)
                    {
                        startDateTime = startDateTime.AddDays(interval);
                    }
                    else
                    {
                        startDateTime = startDateTime.AddDays(7 + interval);
                    }
                }
                startDateTime        = startDateTime.AddHours(insertStartHour);
                startDateTime        = startDateTime.AddMinutes(insertStartMinute);
                endDateTime          = endDateTime.AddHours(insertEndHour);
                endDateTime          = endDateTime.AddMinutes(insertEndMinute);
                insertData.StartTime = startDateTime.ToUniversalTime();
                insertData.EndTime   = endDateTime.ToUniversalTime();
            }
            try
            {
                var db = _uow.DbContext;
                var updateLearningCircleInfo = db.LearningCircle.FirstOrDefault(t => t.LearningOuterKey.ToLower() == requestData.CircleKey.ToLower());
                if (updateLearningCircleInfo != null)
                {
                    updateLearningCircleInfo.StartDate = requestData.WeekTableData.StartDate.ToUniversalTime();
                    updateLearningCircleInfo.EndDate   = requestData.WeekTableData.EndDate.ToUniversalTime();
                }
                db.WeekTable.AddRange(insertDatas);
                var dbData = GetByCirclekey(requestData.CircleKey.ToLower());
                //聯集資料
                var unionDataIds = requestData.WeekTableData.WeekTable.Select(t => t.Id).Union(dbData.WeekTable.Select(t => t.Id));
                //找出欲刪除的資料
                var deleteDataIds = unionDataIds.Except(requestData.WeekTableData.WeekTable.Select(t => t.Id));
                foreach (var deleteDataId in deleteDataIds)
                {
                    var deleteTimeTable = db.WeekTable.Find(deleteDataId);
                    if (deleteTimeTable == null)
                    {
                        continue;
                    }
                    db.WeekTable.Remove(deleteTimeTable);
                }
                //處理編輯資料
                var updateDatas = requestData.WeekTableData.WeekTable.Where(t => t.Id > 0).ToList();
                startDateTime = requestData.WeekTableData.StartDate;
                endDateTime   = requestData.WeekTableData.EndDate;
                foreach (var updateData in updateDatas)
                {
                    var updateDataInfo    = db.WeekTable.Find(updateData.Id);
                    var updateStartPeriod = DateTimeTools.DatetimeToSectionint(updateData.StartTime, true);
                    var updateEndPeriod   = DateTimeTools.DatetimeToSectionint(updateData.EndTime, false);
                    updateDataInfo.StartPeriod   = updateStartPeriod;
                    updateDataInfo.EndPeriod     = updateEndPeriod;
                    updateDataInfo.UpdateUtcDate = DateTime.UtcNow;
                    updateDataInfo.Updater       = tokenInfo.MemberId;
                    /*判斷week字串與startTime的時與分,再組成對的時間*/
                    //取出時與分
                    var updateStartHour   = updateData.StartTime.ToUniversalTime().Hour;
                    var updateStartMinute = updateData.StartTime.ToUniversalTime().Minute;
                    var updateEndHour     = updateData.EndTime.ToUniversalTime().Hour;
                    var updateEndMinute   = updateData.EndTime.ToUniversalTime().Minute;
                    var updateDayOfWeek   = dayOfWeekTools.ChangeToDayOfWeek(updateData.Week);
                    if (updateDayOfWeek == null)
                    {
                        return(false);
                    }
                    var startDayOfWeek = startDateTime.DayOfWeek;
                    if (updateDayOfWeek.Value != startDayOfWeek)
                    {
                        var interval = (int)startDayOfWeek - (int)updateDayOfWeek.Value;
                        if (interval > 0)
                        {
                            startDateTime = startDateTime.AddDays(interval);
                        }
                        else
                        {
                            startDateTime = startDateTime.AddDays(7 + interval);
                        }
                    }
                    startDateTime            = startDateTime.AddHours(updateStartHour);
                    startDateTime            = startDateTime.AddMinutes(updateStartMinute);
                    endDateTime              = endDateTime.AddHours(updateEndHour);
                    endDateTime              = endDateTime.AddMinutes(updateEndMinute);
                    updateDataInfo.StartTime = updateData.StartTime.ToUniversalTime();
                    updateDataInfo.EndTime   = updateData.EndTime.ToUniversalTime();
                    updateDataInfo.Week      = updateData.Week;
                    updateDataInfo.Place     = updateData.Place;
                }
                db.SaveChanges();
                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
Exemple #7
0
        /// <summary>
        /// 取得單一請假單詳細資訊 - for app
        /// </summary>
        /// <param name="sqlLeave"></param>
        /// <param name="isManage"></param>
        /// <returns></returns>
        private Infrastructure.ViewModel.ActivityFunction.Leave.GetAbSenceFormDetailResponse GetAPPDetailLeaveSqlQuery(AttendanceLeave sqlLeave, bool isManage)
        {
            var db         = _uow.DbContext;
            var resLeaveVM = new Infrastructure.ViewModel.ActivityFunction.Leave.GetAbSenceFormDetailResponse();

            resLeaveVM.FileList = new List <FileStorageViewModel>();

            //取得請假資訊
            resLeaveVM.Comment    = sqlLeave.Comment;
            resLeaveVM.CreateDate = sqlLeave.CreateDate.ToLocalTime();
            resLeaveVM.Content    = sqlLeave.Content;
            resLeaveVM.LeaveDate  = sqlLeave.LeaveDate.ToLocalTime();
            resLeaveVM.Subject    = sqlLeave.Subject;
            //取得狀態名稱
            // resLeaveVM.StatusName = Utility.ParaCondition.LeaveState.Status[sqlLeave.Status];
            //申請人資訊
            var applicationMemberInfo = db.Members.Find(sqlLeave.StudId);

            //請假單申請人照片
            resLeaveVM.MemberImg = applicationMemberInfo.Photo;
            //請假單申請人姓名
            resLeaveVM.MemberAccount = applicationMemberInfo.Account;
            //請假單申請人帳號
            resLeaveVM.MemberName = applicationMemberInfo.Name;
            var learningCircleInfo = db.LearningCircle.Find(sqlLeave.LearningId);

            //所屬課程名稱
            resLeaveVM.CourseName = learningCircleInfo.Name;
            //編碼eventId
            resLeaveVM.OuterKey = Utility.OuterKeyHelper.GuidToPageToken(sqlLeave.EventId);

            var timeTableData = db.TimeTable.FirstOrDefault(t => t.Course_No == learningCircleInfo.LearningOuterKey && t.StartDate >= sqlLeave.LeaveDate);

            if (timeTableData == null || (timeTableData.StartDate.Value.DayOfWeek != sqlLeave.LeaveDate.DayOfWeek))
            {
                timeTableData = null;
            }

            //上課地點與時間
            resLeaveVM.Rooms = new List <Infrastructure.ViewModel.ActivityFunction.Leave.ClassRoomInfo>();
            var sectionDateTimeDataService = new Utility.DateTimeTools();
            var dayofweekService           = new DayOfWeekTools();

            if (timeTableData != null)
            {
                var weekstring    = dayofweekService.ChangeToCht(sqlLeave.LeaveDate.DayOfWeek);
                var weekTableData = db.WeekTable.FirstOrDefault(t => t.LearningCircleId == sqlLeave.LearningId && t.Week == weekstring);
                if (weekTableData != null)
                {
                    for (var i = weekTableData.StartPeriod.Value; i <= weekTableData.EndPeriod.Value; i++)
                    {
                        var data = new Infrastructure.ViewModel.ActivityFunction.Leave.ClassRoomInfo()
                        {
                            classStart    = sectionDateTimeDataService.ProxyDateTime(timeTableData.StartDate.Value.Date, i, true),
                            ClassEnd      = sectionDateTimeDataService.ProxyDateTime(timeTableData.StartDate.Value.Date, i, false),
                            RoomId        = timeTableData.ClassRoomId,
                            RoomName      = timeTableData.ClassRoom,
                            NameOfWeekDay = weekstring
                        };
                        resLeaveVM.Rooms.Add(data);
                    }
                }
            }
            resLeaveVM.Status = sqlLeave.Status;

            /* //設定狀態
             * switch (sqlLeave.Status)
             * {
             *   case "00":
             *       resLeaveVM.Status = enumAbsenceFormStatus.Invalid;
             *       break;
             *   case "10":
             *       resLeaveVM.Status = enumAbsenceFormStatus.Pass;
             *       break;
             *   case "20":
             *       resLeaveVM.Status = enumAbsenceFormStatus.Wait;
             *       break;
             *   case "30":
             *       resLeaveVM.Status = enumAbsenceFormStatus.Recall;
             *       break;
             *   case "40":
             *       resLeaveVM.Status = enumAbsenceFormStatus.Reject;
             *       break;
             *   default:
             *       break;
             * }*/
            if (sqlLeave.LeaveType.HasValue)
            {
                //設定假單類型
                switch (sqlLeave.LeaveType.Value)
                {
                case 1:
                    resLeaveVM.LeaveType = enumLeaveType.SickLeave;
                    break;

                case 2:
                    resLeaveVM.LeaveType = enumLeaveType.PersonalLeave;
                    break;

                case 3:
                    resLeaveVM.LeaveType = enumLeaveType.LeaveForStatutory;
                    break;

                case 4:
                    resLeaveVM.LeaveType = enumLeaveType.Other;
                    break;

                default:
                    break;
                }
            }

            //取得請假單檔案資訊
            var sqlFile = db.LeaveFile.Where(t => t.LeaveId == sqlLeave.Id);

            foreach (var _file in sqlFile)
            {
                var _fileEntity = new FileStorageViewModel();
                var googleFile  = db.FileStorage.Find(_file.GoogleId);
                //if (googleFile == null)
                //    _fileEntity = db.GoogleFile.Find(_file.GoogleId);
                //else
                //{
                //萬一與googleFileId一樣,判斷假單建立日期與檔案建立日期是否一致
                //var checkCreateDate = googleFile.CreateUtcDate.Date;
                //if (checkCreateDate == sqlLeave.CreateDate.Date)
                //{
                //    _fileEntity = new FileViewModel()
                //    {
                //        Create_User = googleFile.Creator,
                //        Create_Utc = googleFile.CreateUtcDate.ToLocalTime(),
                //        DownLoadUrl = googleFile.FileUrl,
                //        FileId = googleFile.FileGuid.ToString("N"),
                //        FileType = googleFile.FileContentType,
                //        Id = googleFile.Id,
                //        Name = googleFile.Name,
                //        Size = googleFile.FileSize,
                //        WebViewUrl = googleFile.FileUrl
                //    };
                //    if (googleFile.FileContentType.ToString().StartsWith("image"))
                //        _fileEntity.ImgUrl = string.Format("{0}api/imgFile/{1}/{2}/{3}", loginServer, googleFile.FileGuid.ToString("N"), maxImgWidth, maxImgHeight);
                //}
                //else
                //    _fileEntity = db.GoogleFile.Find(_file.GoogleId);
                //}

                if (googleFile.FileContentType.ToString().StartsWith("image"))
                {
                    _fileEntity.FileImageUrl = string.Format("{0}api/imgFile/{1}/{2}/{3}", loginServer, googleFile.FileGuid.ToString("N"), maxImgWidth, maxImgHeight);
                    _fileEntity.ImgUrl       = string.Format("{0}api/imgFile/{1}/{2}/{3}", loginServer, googleFile.FileGuid.ToString("N"), maxImgWidth, maxImgHeight);
                }
                _fileEntity.WebViewUrl  = _fileEntity.FileUrl;
                _fileEntity.DownLoadUrl = _fileEntity.FileUrl;
                _fileEntity.Size        = _fileEntity.FileSize;
                _fileEntity.FileType    = _fileEntity.FileContentType;
                if (_fileEntity != null)
                {
                    resLeaveVM.FileList.Add(_fileEntity);
                }
            }
            resLeaveVM.IsManager = isManage;


            return(resLeaveVM);
        }