Esempio n. 1
0
        /// <summary>
        /// 建立傳統周課表 - 一筆傳統周課表
        /// </summary>
        /// <returns></returns>
        public WeekTable CreateWeekData(string token, string circleKey, int classWeekType, string place, DateTime startDate, DateTime endDate)
        {
            var tokenService = new TokenService();
            var tokenInfo    = tokenService.GetTokenInfo(token).Result;

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

            var learningCircleService = new LearningCircleService();
            var learningCircleinfo    = learningCircleService.GetDetailByOuterKey(circleKey);

            if (learningCircleinfo == null)
            {
                return(null);
            }
            var startHour        = Convert.ToInt32(startDate.ToString("HH"));
            var endHour          = Convert.ToInt32(endDate.ToString("HH"));
            var dayOfWeekService = new Utility.DayOfWeekTools();
            var week             = dayOfWeekService.ChangeToCht(startDate.DayOfWeek);

            //9點以前都是第一節,9點以後都(目前小時-7)節
            startHour = startHour <= 9 ? 1 : startHour - 7;
            endHour   = endHour <= 9 ? 1 : endHour - 7;
            var entity = new WeekTable()
            {
                ClassWeekType    = classWeekType,
                CreateUtcDate    = DateTime.UtcNow,
                Creator          = tokenInfo.MemberId,
                EndPeriod        = endHour,
                EndTime          = endDate.ToUniversalTime(),
                LearningCircleId = learningCircleinfo.Id,
                Place            = place,
                StartPeriod      = startHour,
                StartTime        = startDate.ToUniversalTime(),
                Week             = week
            };

            try
            {
                var db = _uow.DbContext;
                db.WeekTable.Add(entity);
                db.SaveChanges();
                return(entity);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 取得上課列表
        /// </summary>
        /// <param name="circleKey"></param>
        /// <returns></returns>
        public IEnumerable <Infrastructure.ViewModel.CourseManage.GetMyCourseScheduleResponse> APPGetMyCourseSchedule(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 sectionService = new SectionService();
            var sectionInfo    = sectionService.GetOrgNowSeme(memberInfo.OrgId);

            if (sectionInfo == null)
            {
                return(null);
            }
            var nowSection = string.Format("{0}{1}", sectionInfo.FullName, sectionInfo.Serial);
            var db         = _uow.DbContext;

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

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

            foreach (var data in sqlData)
            {
                data.EndDate   = data.EndDate.ToLocalTime();
                data.StartDate = data.StartDate.ToLocalTime();

                data.StartPeriodTime = string.Format("{0:HH}:{0:mm}", data.StartDate);
                data.EndPeriodTime   = string.Format("{0:HH}:{0:mm}", data.EndDate);
                data.WeekDay         = data.StartDate.DayOfWeek;
                data.NameOfWeekDay   = dayOfWeek.ChangeToCht(data.StartDate.DayOfWeek);
                response.Add(data);
            }
            return(response);
        }
Esempio n. 3
0
        /// <summary>
        /// 修改周課表
        /// </summary>
        /// <param name="token"></param>
        /// <param name="circleKey"></param>
        /// <param name="place"></param>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <param name="weeks"></param>
        /// <returns></returns>
        public bool UpdateWeekDatas(string token, string circleKey, string place, DateTime startDate, DateTime endDate, int classWeekType, List <int> weeks)
        {
            var tokenService = new TokenService();
            var tokenInfo    = tokenService.GetTokenInfo(token).Result;

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

            var learningCircleService = new LearningCircleService();
            var learningCircleinfo    = learningCircleService.GetDetailByOuterKey(circleKey);

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

            var startHour        = Convert.ToInt32(startDate.ToString("HH"));
            var endHour          = Convert.ToInt32(endDate.ToString("HH"));
            var dayOfWeekService = new Utility.DayOfWeekTools();
            var startWeek        = startDate.DayOfWeek;

            //9點以前都是第一節,9點以後都(目前小時-7)節
            startHour = startHour <= 9 ? 1 : startHour - 7;
            endHour   = endHour <= 9 ? 1 : endHour - 7;

            try
            {
                var db = _uow.DbContext;
                //排序 周日:0 ~周六:6
                weeks = weeks.OrderBy(t => t).ToList();
                //查看week是否有錯誤資料
                var weekMax = weeks.Max(t => t);
                if (weekMax >= 7)
                {
                    return(false);
                }
                //取得資料庫目前傳統課表
                var sqlWeekTablesDatas = GetByLearningCircleId(learningCircleinfo.Id);
                //暫存作為刪除的資料
                var tempWeekTableDatas = sqlWeekTablesDatas.ToList();
                foreach (var week in weeks)
                {
                    var weekInfo = (DayOfWeek)week;
                    //踢出不要刪除的weekTable資訊
                    if (tempWeekTableDatas.Count() > 0)
                    {
                        var removeTempData = tempWeekTableDatas.FirstOrDefault(t => t.StartTime.ToLocalTime().DayOfWeek.ToString() == weekInfo.ToString());
                        if (removeTempData != null)
                        {
                            tempWeekTableDatas.Remove(removeTempData);
                        }
                    }

                    //設定開始日期
                    var _startDate = startDate;
                    var checkWeek  = week - (int)startWeek;
                    if (checkWeek < 0)
                    {
                        _startDate = startDate.AddDays(7 + checkWeek);
                    }
                    else if (checkWeek > 0)
                    {
                        _startDate = startDate.AddDays(checkWeek);
                    }

                    //找出並修改要保留的資料
                    var editDataInfo = sqlWeekTablesDatas.FirstOrDefault(t => t.StartTime.ToLocalTime().DayOfWeek.ToString() == weekInfo.ToString());
                    if (editDataInfo != null)
                    {
                        editDataInfo.Place         = place;
                        editDataInfo.StartTime     = _startDate.ToUniversalTime();
                        editDataInfo.EndTime       = endDate.ToUniversalTime();
                        editDataInfo.StartPeriod   = startHour;
                        editDataInfo.EndPeriod     = endHour;
                        editDataInfo.ClassWeekType = classWeekType;
                        continue;
                    }

                    //資料庫無該資料,需要新增
                    var entity = new WeekTable()
                    {
                        ClassWeekType    = classWeekType,
                        CreateUtcDate    = DateTime.UtcNow,
                        Creator          = tokenInfo.MemberId,
                        EndPeriod        = endHour,
                        EndTime          = endDate.ToUniversalTime(),
                        LearningCircleId = learningCircleinfo.Id,
                        Place            = place,
                        StartPeriod      = startHour,
                        StartTime        = _startDate.ToUniversalTime(),
                        Week             = dayOfWeekService.ChangeToCht(weekInfo)
                    };
                    db.WeekTable.Add(entity);
                }
                //刪除timeTable資訊
                foreach (var deleteWeek in tempWeekTableDatas)
                {
                    var timeTableInfo        = db.TimeTable.Where(t => t.Course_No == circleKey).ToList();
                    var deleteTimeTableDatas = timeTableInfo.Where(t => t.StartDate.Value.DayOfWeek.ToString() == deleteWeek.StartTime.DayOfWeek.ToString()).ToList();
                    db.TimeTable.RemoveRange(deleteTimeTableDatas);
                }
                //刪除weektable資訊
                db.WeekTable.RemoveRange(tempWeekTableDatas);
                db.SaveChanges();
                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 建立多筆傳統周課表
        /// </summary>
        /// <param name="token"></param>
        /// <param name="circleKey"></param>
        /// <param name="classWeekType"></param>
        /// <param name="place"></param>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <param name="weeks"></param>
        /// <returns></returns>
        public IEnumerable <WeekTable> CreateWeekDatas(string token, string circleKey, int classWeekType, string place, DateTime startDate, DateTime endDate, List <int> weeks)
        {
            var saveDatas = new List <WeekTable>();

            if (weeks.Count <= 0) //只新增一筆
            {
                var data = CreateWeekData(token, circleKey, classWeekType, place, startDate, endDate);
                if (data == null)
                {
                    return(null);
                }
                saveDatas.Add(data);
                return(saveDatas);
            }

            var tokenService = new TokenService();
            var tokenInfo    = tokenService.GetTokenInfo(token).Result;

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

            var learningCircleService = new LearningCircleService();
            var learningCircleinfo    = learningCircleService.GetDetailByOuterKey(circleKey);

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

            var startHour        = Convert.ToInt32(startDate.ToString("HH"));
            var endHour          = Convert.ToInt32(endDate.ToString("HH"));
            var dayOfWeekService = new Utility.DayOfWeekTools();
            var startWeek        = startDate.DayOfWeek;

            //9點以前都是第一節,9點以後都(目前小時-7)節
            startHour = startHour < 9 ? 1 : startHour - 7;
            endHour   = endHour < 9 ? 1 : endHour - 7;

            try
            {
                var db = _uow.DbContext;
                weeks = weeks.OrderBy(t => t).ToList();
                var weekMax = weeks.Max(t => t);
                if (weekMax >= 7)
                {
                    return(null);
                }

                foreach (var week in weeks)
                {
                    var weekInfo   = (DayOfWeek)week;
                    var _startDate = startDate;
                    var checkWeek  = week - (int)startWeek;
                    if (checkWeek < 0)
                    {
                        _startDate = startDate.AddDays(7 + checkWeek);
                    }
                    else if (checkWeek > 0)
                    {
                        _startDate = startDate.AddDays(checkWeek);
                    }
                    var entity = new WeekTable()
                    {
                        ClassWeekType    = classWeekType,
                        CreateUtcDate    = DateTime.UtcNow,
                        Creator          = tokenInfo.MemberId,
                        EndPeriod        = endHour,
                        EndTime          = endDate.ToUniversalTime(),
                        LearningCircleId = learningCircleinfo.Id,
                        Place            = place,
                        StartPeriod      = startHour,
                        StartTime        = _startDate.ToUniversalTime(),
                        Week             = dayOfWeekService.ChangeToCht(weekInfo)
                    };
                    saveDatas.Add(entity);
                }
                db.WeekTable.AddRange(saveDatas);
                db.SaveChanges();
                return(saveDatas);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }