public IHttpActionResult Post(WeekTablePostRequest requestData) { var requestService = new Service.Utility.RequestDataHelper <WeekTablePostRequest>(); var checkColumnKeys = new string[3] { "token", "circlekey", "weektabledata" }; var checkEmpty = requestService.CheckColumnEmpty(requestData, checkColumnKeys); var response = new Infrastructure.ViewModel.Base.BaseResponse <string>(); response.Success = false; if (checkEmpty == false) { response.Message = "遺漏參數"; response.State = Infrastructure.ViewModel.Base.LogState.RequestDataError; return(Content(HttpStatusCode.BadRequest, response)); } var weekTableService = new WeekTableService(); var responseData = weekTableService.WeekTableDataProxy(requestData); if (responseData) { response.Success = true; response.Message = "處理成功"; return(Ok(response)); } response.Message = "處理失敗"; response.State = Infrastructure.ViewModel.Base.LogState.Error; return(Ok(response)); }
/// <summary> /// 取得課程詳細資訊 - 新的雲端版web專用 /// </summary> /// <param name="circleKey"></param> /// <returns></returns> public Infrastructure.ViewModel.Backend.LearningCircleGetResponse GetLearningCircleInfo(string circleKey) { var db = _uow.DbContext; var leanringCircleInfo = GetDetailByOuterKey(circleKey.ToLower()); if (leanringCircleInfo == null) { return(null); } var responseData = new Infrastructure.ViewModel.Backend.LearningCircleGetResponse() { CircleKey = circleKey, Description = leanringCircleInfo.Description, Name = leanringCircleInfo.Name, EndDate = leanringCircleInfo.EndDate.Value.ToLocalTime(), StartDate = leanringCircleInfo.StartDate.Value.ToLocalTime(), Objective = leanringCircleInfo.Objective, Remark = leanringCircleInfo.ReMark, DomainId = leanringCircleInfo.ModuleName, DomainName = leanringCircleInfo.ModuleName }; var memberService = new MemberService(); //處理老師名單 var teachers = memberService.GetTeacherList(circleKey.ToLower()); if (teachers.FirstOrDefault() != null) { var teachersName = teachers.Select(t => t.Name).ToList(); responseData.Teachers = new List <string>(); foreach (var teacher in teachersName) { responseData.Teachers.Add(teacher); } } var weekTableService = new WeekTableService(); var ClassWeekTableDatas = weekTableService.GetByCirclekey(circleKey); if (ClassWeekTableDatas.WeekTable.FirstOrDefault() != null) { responseData.WeekTable = new List <Infrastructure.ViewModel.CourseManage.GetAllMyCourseWeekTable>(); foreach (var weekTableData in ClassWeekTableDatas.WeekTable) { var data = new Infrastructure.ViewModel.CourseManage.GetAllMyCourseWeekTable() { Week = weekTableData.Week, Place = weekTableData.Place, StartPeriod = weekTableData.StartPeriod.Value, EndPeriod = weekTableData.EndPeriod.Value, StartTime = string.Format("{0:HH}:{0:mm}", weekTableData.StartTime.ToLocalTime()), EndTime = string.Format("{0:HH}:{0:mm}", weekTableData.EndTime.ToLocalTime()) }; responseData.WeekTable.Add(data); } } return(responseData); }
public IHttpActionResult Post(LearningCirclePostRequest requestData) { var result = new Infrastructure.ViewModel.Base.BaseResponse <Infrastructure.Entity.LearningCircle>(); var requestService = new Service.Utility.RequestDataHelper <LearningCirclePostRequest>(); var checkColumnKeys = new string[7] { "name", "description", "token", "startdate", "enddate", "weeks", "place" }; var checkEmpty = requestService.CheckColumnEmpty(requestData, checkColumnKeys); if (checkEmpty == false) { result.Success = false; result.Message = "確認是否遺漏資訊"; return(Content(HttpStatusCode.BadRequest, result)); } var service = new LearningCircleService(); var data = service.CreateLearningCircle(requestData.Name, requestData.CircleKey, requestData.Description, requestData.Token, requestData.StartDate.Value, requestData.EndDate.Value, requestData.OrgId ); if (data == null) { result.Success = false; result.Message = "新增失敗"; result.State = Infrastructure.ViewModel.Base.LogState.Error; return(Ok(result)); } result.Success = true; var learningRoleService = new LearningRoleService(); var authService = new AuthService(); //建立老師角色身分 var teacherRole = learningRoleService.AddLearningEditRole(data.CreateUser.Value, data.Id, "老師", true, false, 1); //建立助教角色身分 var surpportTeacherRole = learningRoleService.AddLearningEditRole(data.CreateUser.Value, data.Id, "助教", true, false, 2); //建立學生角色身分 var studentRole = learningRoleService.AddLearningEditRole(data.CreateUser.Value, data.Id, "學生", false); //建立學習圈內角色權限 var insertAuthSuccess = authService.InsertLearningCircleAllRoleAuth(data.Id, data.CreateUser.Value); var weekService = new WeekTableService(); var weekDatas = weekService.CreateWeekDatas(requestData.Token, data.LearningOuterKey, 0, requestData.Place, requestData.StartDate.Value, requestData.EndDate.Value, requestData.Weeks); var timeTableService = new TimeTableService(); var timeTableDatas = requestData.ClassWeekType > 0 ? timeTableService.CreateByCircleKey(data.LearningOuterKey, requestData.ClassWeekType) : timeTableService.CreateByCircleKey(data.LearningOuterKey); result.Message = "新增成功"; result.Data = data; return(Ok(result)); }
public IHttpActionResult Get(string strAccess) { var requestService = new Service.Utility.RequestDataHelper <Infrastructure.ViewModel.Base.BackendBaseRequest>(); var requestData = JsonConvert.DeserializeObject <Infrastructure.ViewModel.Base.BackendBaseRequest>(strAccess); var checkColumnKey = new string[1] { "token" }; var checkEmpty = requestService.CheckColumnEmpty(requestData, checkColumnKey); var response = new Infrastructure.ViewModel.Base.BaseResponse <WeekTableViewModel>(); response.Success = false; response.Data = new WeekTableViewModel(); if (checkEmpty == false) { response.Message = "遺漏參數"; response.State = Infrastructure.ViewModel.Base.LogState.RequestDataError; return(Content(HttpStatusCode.BadRequest, response)); } var tokenService = new TokenService(); var checkToken = tokenService.GetTokenInfo(requestData.Token).Result; if (checkToken == null) { response.Message = "已登出"; response.State = Infrastructure.ViewModel.Base.LogState.Logout; return(Ok(response)); } var weektableService = new WeekTableService(); var responseData = (requestData.CircleKey == null || requestData.CircleKey == string.Empty) ? weektableService.GetByToken(requestData.Token) : weektableService.GetByCirclekey(requestData.CircleKey.ToLower()); if (responseData == null) { response.Message = "目前無課表資訊"; response.State = Infrastructure.ViewModel.Base.LogState.DataNotModified; return(Ok(response)); } response.Success = true; response.Message = "查詢成功"; response.Data = responseData; return(Ok(response)); }
/// <summary> /// 取得APP的GetAllMyCourse的資訊 /// </summary> /// <param name="token"></param> /// <returns></returns> public IEnumerable <Infrastructure.ViewModel.CourseManage.GetAllMyCourseResponse> APPGetAllMyCourse(string token) { var memberService = new MemberService(); var checkToken = memberService.TokenToMember(token).Result; if (checkToken == null) { return(null); } var sectionService = new SectionService(); var sectionData = sectionService.GetOrgNowSeme(checkToken.OrgId); var learningCircleList = GetLearningCircleListByToken(token, null, null); if (learningCircleList == null || learningCircleList.Count() <= 0) { return(new List <Infrastructure.ViewModel.CourseManage.GetAllMyCourseResponse>()); } var response = new List <Infrastructure.ViewModel.CourseManage.GetAllMyCourseResponse>(); var sectionYear = learningCircleList.Where(t => t.StartDate.HasValue).GroupBy(t => t.StartDate.Value.Year); //上過多少學年度 foreach (var year in sectionYear) { var data = new Infrastructure.ViewModel.CourseManage.GetAllMyCourseResponse(); var courseData = new List <Infrastructure.ViewModel.CourseManage.DataCourseDataModel>(); data.Year = year.Key; data.YearSeme = year.Key.ToString(); if (year.Key == sectionData.Year) { data.IsNowSeme = true; } //查詢課程 foreach (var learningcircle in learningCircleList.Where(t => t.StartDate.HasValue && ((t.StartDate >= sectionData.StartDate && t.StartDate <= sectionData.EndDate) || (t.EndDate >= sectionData.StartDate && t.EndDate <= sectionData.EndDate)))) { var learningCircleData = new Infrastructure.ViewModel.CourseManage.DataCourseDataModel(); learningCircleData.ClassId = learningcircle.LearningOuterKey.ToLower(); learningCircleData.ClassName = learningcircle.Name; learningCircleData.ClassSubjectName = learningcircle.Name; //查詢課程老師們 var teachers = memberService.GetTeacherList(learningcircle.LearningOuterKey); var teacherListData = new List <Infrastructure.ViewModel.MemberManage.TeacherPhotoInfo>(); var teacherNames = string.Empty; //設定上課老師們資料 foreach (var teacher in teachers) { var teacherData = new Infrastructure.ViewModel.MemberManage.TeacherPhotoInfo(); teacherData.Email = teacher.Email; teacherData.ManName = teacher.Name; teacherData.Url = teacher.Photo; teacherListData.Add(teacherData); teacherNames += teacher.Name + ","; } teacherNames = teacherNames != string.Empty ? teacherNames.Substring(0, teacherNames.Length - 1) : teacherNames; learningCircleData.TeacherPhoto = teacherListData.ToArray(); learningCircleData.ClassTeacher = teacherNames; learningCircleData.StartDate = learningcircle.StartDate.HasValue ? learningcircle.StartDate.Value.ToLocalTime() : DateTime.MinValue; learningCircleData.EndDate = learningcircle.EndDate.HasValue ? learningcircle.EndDate.Value.ToLocalTime() : DateTime.MinValue; var memberCount = memberService.GetLearningCircleMembers(learningcircle.LearningOuterKey).Count(); learningCircleData.MemberCount = memberCount; var weekTableService = new WeekTableService(); var weekDatas = weekTableService.GetAllMyCourseWeekTableData(learningcircle.Id); if (weekDatas != null) { learningCircleData.WeekTable = weekDatas.ToList(); } courseData.Add(learningCircleData); } data.Course = courseData.ToArray(); response.Add(data); } return(response); }
/// <summary> /// 取得APP的GetCourseDetail的資訊 /// </summary> /// <param name="token"></param> /// <returns></returns> public Infrastructure.ViewModel.CourseManage.GetCourseDetailResponse APPGetCourseDetail(string token, string circleKey) { var response = new Infrastructure.ViewModel.CourseManage.GetCourseDetailResponse(); var memberService = new MemberService(); var tokenService = new TokenService(); var checkToken = tokenService.GetTokenInfo(token); if (checkToken == null) { return(response); } var members = memberService.GetLearningCircleMembers(circleKey); if (members == null) { return(response); } response.MemberCount = members.Count(); response.Edit = false; response.EditImpression = false; response.CollInfo = null; var learningCircleInfo = GetDetailByOuterKey(circleKey); if (learningCircleInfo == null) { return(response); } //處理老師名單 var teachers = memberService.GetTeacherList(circleKey); if (teachers.FirstOrDefault() != null) { var teachersName = teachers.Select(t => t.Name).ToList(); foreach (var teacher in teachersName) { response.ClassTeachers += teacher + "、"; } response.ClassTeachers = response.ClassTeachers.Substring(0, response.ClassTeachers.Length - 1); } if (learningCircleInfo.StartDate.HasValue && learningCircleInfo.EndDate.HasValue) { response.ClassPeriod = string.Format("{0} ~ {1}", learningCircleInfo.StartDate.Value.ToLocalTime().ToString("yyyy/MM/dd"), learningCircleInfo.EndDate.Value.ToLocalTime().ToString("yyyy/MM/dd")); response.StartDate = learningCircleInfo.StartDate.Value.ToLocalTime(); response.EndDate = learningCircleInfo.EndDate.Value.ToLocalTime(); } var weekTableService = new WeekTableService(); var ClassWeekTableDatas = weekTableService.GetByCirclekey(circleKey); response.WeekTable = new List <Infrastructure.ViewModel.CourseManage.GetAllMyCourseWeekTable>(); if (ClassWeekTableDatas.WeekTable.FirstOrDefault() != null) { foreach (var weekTableData in ClassWeekTableDatas.WeekTable) { var data = new Infrastructure.ViewModel.CourseManage.GetAllMyCourseWeekTable() { Week = weekTableData.Week, Place = weekTableData.Place, StartPeriod = weekTableData.StartPeriod.Value, EndPeriod = weekTableData.EndPeriod.Value, StartTime = string.Format("{0:HH}:{0:mm}", weekTableData.StartTime.ToLocalTime()), EndTime = string.Format("{0:HH}:{0:mm}", weekTableData.EndTime.ToLocalTime()) }; response.WeekTable.Add(data); } } response.ClassSubjectName = learningCircleInfo.Name; response.ClassId = learningCircleInfo.LearningOuterKey; response.Introduction = learningCircleInfo.Description; response.ClassName = learningCircleInfo.Name; response.ClassDomainId = null; response.ClassDomainName = null; response.Note = learningCircleInfo.ReMark; response.ClassTarget = learningCircleInfo.Objective; return(response); }
/// <summary> /// 取得管理者學習圈列表資訊 /// </summary> /// <param name="memberId"></param> /// <param name="searchString"></param> /// <param name="deptId"></param> /// <returns></returns> public IEnumerable <Infrastructure.ViewModel.Backend.LearningCircleManageViewModel> GetLearningCircleManageList(int memberId, string searchString, int orgId, int?deptId = null) { var db = _uow.DbContext; //是否為素人 var checkIsAmateur = (from o in db.Organizations join m in db.Members on o.Id equals m.OrgId where o.OrgCode == "amateur" && m.Id == memberId && m.RoleName == "2" select m).FirstOrDefault(); var query = (checkIsAmateur != null) ? //是素人老師 (from lc in db.LearningCircle where lc.CreateUser == memberId && lc.Enable == true && lc.Visibility == true select new Infrastructure.ViewModel.Backend.LearningCircleManageViewModel { Description = lc.Description, EndDate = lc.EndDate.Value, Enable = lc.Enable.ToString(), LearningOuterKey = lc.LearningOuterKey, Name = lc.Name, OrgId = lc.OrgId.Value.ToString(), Section = lc.Section.ToString(), StartDate = lc.StartDate.Value }).ToList() : //是有學校組織 或 系統管理者 //有查詢學院條件 (deptId.HasValue) ? ((from lc in db.LearningCircle join o in db.Organizations on lc.OrgId equals o.Id join c in db.Courses on lc.CourseId equals c.Id where //是否為某個學院的編號 c.DeptId == deptId.Value && lc.Enable == true && lc.Visibility == true && lc.OrgId == orgId select new Infrastructure.ViewModel.Backend.LearningCircleManageViewModel { Description = lc.Description, EndDate = lc.EndDate.Value, Enable = lc.Enable.ToString(), LearningOuterKey = lc.LearningOuterKey, Name = lc.Name, OrgId = lc.OrgId.Value.ToString(), Section = lc.Section.ToString(), StartDate = lc.StartDate.Value }).ToList()) //沒有查詢學院條件 : ((from lc in db.LearningCircle // join c in db.Courses on lc.CourseId equals c.Id // join d in db.Depts on c.DeptId equals d.Id join o in db.Organizations on lc.OrgId equals o.Id join m in db.Members on o.Id equals m.OrgId where m.Id == memberId && lc.Enable == true && lc.Visibility == true && lc.OrgId == orgId select new Infrastructure.ViewModel.Backend.LearningCircleManageViewModel { Description = lc.Description, EndDate = lc.EndDate.Value, Enable = lc.Enable.ToString(), LearningOuterKey = lc.LearningOuterKey, Name = lc.Name, OrgId = lc.OrgId.Value.ToString(), Section = lc.Section.ToString(), StartDate = lc.StartDate.Value }).ToList()); var weekTableService = new WeekTableService(); //重新塞weeks資料 foreach (var learningCircleData in query) { learningCircleData.StartDate = learningCircleData.StartDate.ToLocalTime(); learningCircleData.EndDate = learningCircleData.EndDate.ToLocalTime(); var weekDatas = weekTableService.GetByCirclekey(learningCircleData.LearningOuterKey); if (weekDatas != null && weekDatas.WeekTable.FirstOrDefault() != null) { learningCircleData.Place = weekDatas.WeekTable.FirstOrDefault().Place; learningCircleData.Weeks = weekDatas.WeekTable.Select(t => (int)t.StartTime.DayOfWeek).ToList(); } } return((searchString != string.Empty && searchString != null) ? query.Where(t => t.Name.Contains(searchString) || t.LearningOuterKey.Contains(searchString)).OrderBy(t => t.StartDate).ToList() : query.OrderBy(t => t.StartDate).ToList()); }
/// <summary> /// 處理timeTable資料 /// </summary> /// <param name="startDate"></param> /// <param name="endDate"></param> /// <param name="circleKey"></param> /// <param name="classWeekType"></param> /// <param name="weekTables"></param> /// <returns></returns> public List <TimeTable> Getdata(DateTime startDate, DateTime endDate, string circleKey, int?classWeekType = 0, List <WeekTable> weekTables = null) { var responseData = new List <Infrastructure.Entity.TimeTable>(); var startWeekDay = (int)startDate.DayOfWeek; //間隔週數 var weekCount = Math.Ceiling(((Double)(endDate - startDate).Days + 1) / (Double)7); //查詢傳統周課表 if (circleKey != null && circleKey != string.Empty) //要取得傳統課表資料 { var weekTableService = new WeekTableService(); if (weekTables == null) { weekTables = weekTableService.GetByCirclekey(circleKey).WeekTable.OrderBy(t => t.StartTime).ToList(); //遞增排序 } if (weekTables == null) { return(null); } var learningCircleService = new LearningCircleService(); var learningCircleInfo = learningCircleService.GetDetailByOuterKey(circleKey); if (learningCircleInfo == null) { return(null); } var dayOfWeekTools = new DayOfWeekTools(); var weeks = weekTables.Select(t => dayOfWeekTools.ChangeToDayOfWeek(t.Week).Value).OrderBy(t => t); if (weeks == null) { return(null); } var weeksMaxValue = Convert.ToInt32(weeks.Max(t => t)); //取出周次陣列中最大的數字 var weeksMinValue = Convert.ToInt32(weeks.Min(t => t)); //取出周次陣列中最小的數字 if (weeksMaxValue >= 7) //周次大於等於7不合邏輯,直接跳null { return(null); } var _startDate = startDate.Date; var _endDate = startDate.Date; if (classWeekType.Value == 0) { //每周 for (var week = 0; week <= weekCount; week++) { #region 設定第一周日期區間 if (week == 0) { var getTimeSpan = weekTables.Where(t => (int)dayOfWeekTools.ChangeToDayOfWeek(t.Week) == (int)_startDate.DayOfWeek).ToList(); responseData.AddRange(SwitchWeekTableToTimeTable(getTimeSpan, learningCircleInfo.LearningOuterKey.ToLower(), _startDate, _endDate)); foreach (var weekDay in weeks) { var checkWeek = (int)weekDay - (int)_startDate.DayOfWeek; if (checkWeek > 0) { _startDate = _startDate.AddDays(checkWeek); _endDate = _endDate.AddDays(checkWeek); getTimeSpan = weekTables.Where(t => (int)dayOfWeekTools.ChangeToDayOfWeek(t.Week) == (int)_startDate.DayOfWeek).ToList(); responseData.AddRange(SwitchWeekTableToTimeTable(getTimeSpan, learningCircleInfo.LearningOuterKey.ToLower(), _startDate, _endDate)); } } } #endregion #region 設定第二周到最終週日期區間 else { //第二周開始 //設定起始日期 foreach (var weekDay in weeks.GroupBy(t => t)) { var checkWeek = (int)weekDay.Key - (int)_startDate.DayOfWeek; if (checkWeek < 0) { _endDate = _endDate.AddDays((7 + checkWeek)); _startDate = _startDate.AddDays((7 + checkWeek)); } else if (checkWeek == 0) { _endDate = _endDate.AddDays(7); _startDate = _startDate.AddDays(7); } else { _endDate = _endDate.AddDays(checkWeek); _startDate = _startDate.AddDays(checkWeek); } if (_startDate.Date <= endDate.Date) { var getTimeSpan = weekTables.Where(t => (int)dayOfWeekTools.ChangeToDayOfWeek(t.Week) == (int)_startDate.DayOfWeek).ToList(); responseData.AddRange(SwitchWeekTableToTimeTable(getTimeSpan, learningCircleInfo.LearningOuterKey.ToLower(), _startDate, _endDate)); } } } #endregion } } //隔週 else if (classWeekType.Value == 2) { for (var week = 0; week <= weekCount; week += 2) { #region 設定第一周日期區間 if (week == 0) { var getTimeSpan = weekTables.Where(t => (int)dayOfWeekTools.ChangeToDayOfWeek(t.Week) == (int)_startDate.DayOfWeek).ToList(); responseData.AddRange(SwitchWeekTableToTimeTable(getTimeSpan, learningCircleInfo.LearningOuterKey.ToLower(), _startDate, _endDate)); foreach (var weekDay in weeks) { var checkWeek = (int)weekDay - (int)_startDate.DayOfWeek; if (checkWeek > 0) { _startDate = _startDate.AddDays(checkWeek); _endDate = _endDate.AddDays(checkWeek); getTimeSpan = weekTables.Where(t => (int)dayOfWeekTools.ChangeToDayOfWeek(t.Week) == (int)_startDate.DayOfWeek).ToList(); responseData.AddRange(SwitchWeekTableToTimeTable(getTimeSpan, learningCircleInfo.LearningOuterKey.ToLower(), _startDate, _endDate)); } } } #endregion #region 設定第二周到最終週日期區間 else { //第二周開始 //設定起始日期 foreach (var weekDay in weeks.GroupBy(t => t)) { var checkWeek = (int)weekDay.Key - (int)_startDate.DayOfWeek; if (checkWeek < 0) { _endDate = _endDate.AddDays((14 + checkWeek)); _startDate = _startDate.AddDays((14 + checkWeek)); } else if (checkWeek == 0) { _endDate = _endDate.AddDays(14); _startDate = _startDate.AddDays(14); } else { _endDate = _endDate.AddDays(checkWeek); _startDate = _startDate.AddDays(checkWeek); } if (_startDate.Date <= endDate.Date) { var getTimeSpan = weekTables.Where(t => (int)dayOfWeekTools.ChangeToDayOfWeek(t.Week) == (int)_startDate.DayOfWeek).ToList(); responseData.AddRange(SwitchWeekTableToTimeTable(getTimeSpan, learningCircleInfo.LearningOuterKey.ToLower(), _startDate, _endDate)); } } } #endregion } } else { var getTimeSpan = weekTables.Where(t => (int)dayOfWeekTools.ChangeToDayOfWeek(t.Week) == (int)_startDate.DayOfWeek).ToList(); responseData.AddRange(SwitchWeekTableToTimeTable(getTimeSpan, learningCircleInfo.LearningOuterKey.ToLower(), _startDate, _endDate)); } } return(responseData); }