/// <summary> /// 根據新增學習圈建立驗證碼 /// </summary> /// <param name="circleKey"></param> /// <returns></returns> public bool CreateFromCreateLearningCircle(string circleKey) { var learningCircleService = new LearningCircleService(); var learningCircleInfo = learningCircleService.GetDetailByOuterKey(circleKey.ToLower()); if (learningCircleInfo == null) { return(false); } var codeService = new CaptchaHelper(); var code = codeService.GenerateRandomText(10); var checkHadCode = _uow.MemberInviteRepo.GetFirst(t => t.CircleKey.ToLower() == circleKey.ToLower() && t.Enable == true && t.IsCourseCode == true); if (checkHadCode == null) { var entity = new MemberInvite() { CircleKey = circleKey.ToLower(), Code = code.ToLower(), CreateDate = DateTime.UtcNow, Enable = true, InviteEmail = null, InviteUrl = null, IsCourseCode = true, Type = 0 }; _uow.DbContext.MemberInvite.Add(entity); _uow.SaveChanges(); } return(true); }
/// <summary> /// 取得登入者學習圈資訊 /// </summary> /// <param name="strAccess"></param> /// <returns></returns> public IHttpActionResult Get([FromUri]string strAccess) { strAccess = HttpUtility.UrlDecode(strAccess); var requestData = JsonConvert.DeserializeObject<Infrastructure.ViewModel.CourseManage.GetAllMyCourseRequest>(strAccess); if (requestData.Account == null || requestData.ICanToken == null) return Content(HttpStatusCode.BadRequest, "遺漏參數"); var result = new ResultBaseModel<Infrastructure.ViewModel.CourseManage.GetAllMyCourseResponse>(); var tokenService = new TokenService(); var checkToken = tokenService.GetTokenInfo(requestData.ICanToken).Result; if (checkToken == null) { result.Success = false; result.Message = "已登出"; result.State = Infrastructure.ViewModel.Base.LogState.Logout; return Ok(result); } var service = new LearningCircleService(); var response = service.APPGetAllMyCourse(requestData.ICanToken); if (response == null) { result.Success = false; result.Message = "查無資料"; return Ok(result); } result.Success = true; result.Message = "查詢成功"; if (response.FirstOrDefault() != null) result.Data = response.ToArray(); else result.Data = new Infrastructure.ViewModel.CourseManage.GetAllMyCourseResponse[0]; return Ok(result); }
/// <summary> /// 取得請假單資訊 - forAPP /// </summary> /// <param name="eventId"></param> /// <param name="isManage"></param> /// <returns></returns> public Infrastructure.ViewModel.ActivityFunction.Leave.GetAbSenceFormDetailResponse GetAbSenceFormDetail(Infrastructure.ViewModel.ActivityFunction.Leave.GetAbSenceFormDetailRequest requestData) { var eventId = Utility.OuterKeyHelper.CheckOuterKey(requestData.OuterKey); if (eventId == null || eventId == Guid.Empty) { return(null); } var authService = new AuthService(); var learningcircleService = new LearningCircleService(); var learningInfo = learningcircleService.GetDetailByOuterKey(requestData.ClassID); if (learningInfo == null) { return(null); } var tokenService = new TokenService(); var checkMember = tokenService.GetTokenInfo(requestData.ICanToken).Result; if (checkMember == null) { return(null); } var isManage = authService.CheckFunctionAuth(learningInfo.Id, ParaCondition.LeaveFunction.Review, checkMember.MemberId); return(GetAPPDetailLeaveSqlQuery(_uow.DbContext.AttendanceLeave.FirstOrDefault(t => t.EventId == eventId), isManage)); }
/// <summary> /// 取得個人的傳統課表資訊 /// </summary> /// <param name="token"></param> /// <returns></returns> public WeekTableViewModel GetByToken(string token) { var tokenService = new TokenService(); var tokenInfo = tokenService.GetTokenInfo(token); if (tokenInfo == null) { return(null); } var learningCircleService = new LearningCircleService(); var learningCircles = learningCircleService.GetLearningCircleListByToken(token, null, null); if (learningCircles == null) { return(null); } var responseData = new WeekTableViewModel(); foreach (var learningCircle in learningCircles) { var data = GetByLearningCircleId(learningCircle.Id); responseData.WeekTable = new List <WeekTable>(); if (data != null) { responseData.WeekTable.AddRange(data); } responseData.StartDate = learningCircle.StartDate.Value.ToLocalTime(); responseData.EndDate = learningCircle.EndDate.Value.ToLocalTime(); } return(responseData); }
/// <summary> /// 取得課綱資訊 /// </summary> /// <param name="circleKey"></param> /// <param name="isDelete"></param> /// <returns></returns> public IEnumerable <Syllabus> GetSyllabusByCircleKey(string circleKey, bool isDelete) { var learningCircleService = new LearningCircleService(); var learningCircleInfo = learningCircleService.GetDetailByOuterKey(circleKey); var result = GetSyllabus(learningCircleInfo.Id, false); return(result); }
private bool AuthCheck(Guid token, ref ServerCheckItem item) { var memberService = new MemberService(); var memberInfo = memberService.TokenToMember(token.ToString()).Result; if (memberInfo == null) { return(false); } // 是否為合法使用者 item.MemberId = memberInfo.Id; if (item.MemberId > 0) { // 取得活動Guid if (!string.IsNullOrEmpty(item.OuterKey)) { var eventId = Service.Utility.OuterKeyHelper.CheckOuterKey(item.OuterKey); if (eventId.HasValue) { item.EventId = eventId.Value; } else { return(false); } } // 取得學習圈 id if (!string.IsNullOrEmpty(item.CircleKey)) { var learningcircleService = new LearningCircleService(); var learningcircleInfo = learningcircleService.GetDetailByOuterKey(item.CircleKey); if (learningcircleInfo != null) { item.CircleId = learningcircleInfo.Id; } else { return(false); } } //如果是smartTA的權限,直接true if (memberInfo.RoleName == "3") { item.ModuleAuth = true; return(true); } // 判斷特定權限 if (!string.IsNullOrEmpty(item.ModuleFun)) { var authService = new AuthService(); item.ModuleAuth = authService.CheckFunctionAuth(item.CircleId, item.ModuleFun, item.MemberId); } } return(true); }
/// <summary> /// 長出點名活動列表資料 /// </summary> /// <param name="memberId">參與者編號</param> /// <param name="circleKey">學習圈代碼</param> /// <param name="pages">查詢索引</param> /// <param name="rows">查詢數量</param> /// <returns></returns> public IEnumerable <SignInModuleList> GetSignInList(int memberId, string circleKey, int?pages, int?rows) { var activityService = new ActivityService(); var authService = new AuthService(); var acts = activityService.GetActivityListByModuleKey(circleKey, Utility.ParaCondition.ModuleType.SignIn, pages, rows); var learningCircieService = new LearningCircleService(); var resultList = new List <SignInModuleList>(); var learningCircleInfo = learningCircieService.GetDetailByOuterKey(circleKey.ToLower()); var memberService = new MemberService(); if (learningCircleInfo != null) { var IsTeacher = authService.CheckFunctionAuth(learningCircleInfo.Id, "signInadmin", memberId); //取得學習圈所有人 foreach (var act in acts) { var item = new SignInModuleList(); //狀態列表 item.SignInCount = IsTeacher ? GetSignInStatusLog(act.OuterKey, memberService.GetStudentList(circleKey).Count()) : new List <Infrastructure.ValueObject.SignStatus>(); item.MyStatus = IsTeacher ? 0 : GetStudentStatus(memberId, act.OuterKey); if (act.ActivityDate.HasValue) { item.ActivityTime = act.ActivityDate.Value.ToLocalTime(); } if (act.Created.Utc.HasValue) { item.CreateTime = act.Created.Local.Value; } if (act.Publish_Utc.HasValue) { item.Publish_date = act.Publish_Utc.Value.ToLocalTime(); } if (act.StartDate.HasValue) { item.StartDate = act.StartDate.Value.ToLocalTime(); } if (act.Duration.HasValue) { item.Duration = act.Duration.Value; } item.GroupId = circleKey; item.ModuleKey = Utility.ParaCondition.ModuleType.SignIn; item.OuterKey = Service.Utility.OuterKeyHelper.GuidToPageToken(act.OuterKey); if (act.StartDate.HasValue && act.Duration.HasValue) { var endDate = act.StartDate.Value.Add(new TimeSpan(0, 0, act.Duration.Value)); item.RemainSeconds = (endDate - DateTime.UtcNow).TotalSeconds; } resultList.Add(item); } } return(resultList); }
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)); }
/// <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); } }
public override void Delete() { var learningCircleService = new LearningCircleService(); var leanringCircleInfo = learningCircleService.GetDetailByOuterKey(_parameters.CircleKey.ToLower()); var authService = new AuthService(); bool _isAdmin = authService.CheckFunctionAuth(leanringCircleInfo.Id, Service.Utility.ParaCondition.SignInFunction.Admin, _parameters.MemberId); var _service = new SignInService(); if (_isAdmin) { _service.Delete(_parameters.EventId, _parameters.MemberId); } }
public override void Delete() { var authService = new AuthService(); var learningService = new LearningCircleService(); var learningCircleInfo = learningService.GetDetailByOuterKey(_parameters.CircleKey); bool _isAdmin = authService.CheckFunctionAuth(learningCircleInfo.Id, Service.Utility.ParaCondition.DiscussionFunction.Manage, _parameters.MemberId); var _service = new DiscussionService(); if (_isAdmin) { //刪除主題討論活動 _service.DeleteDiscussion(_parameters.EventId, _parameters.MemberId); } }
/// <summary> /// 加入學習圈 /// </summary> /// <param name="circleKey"></param> /// <param name="token"></param> public BaseResponse <JObject> joinGroup(string circleKey, Guid token) { var result = new BaseResponse <JObject>(); string error = string.Empty; string groupKey = circleKey.ToLower(); //使用者 的 連接ID(重新連接還是會使用相同的ID) var connId = Context.ConnectionId; //取得裝置 var version = 0; if (Context.QueryString != null && !string.IsNullOrEmpty(Context.QueryString["version"])) { version = Convert.ToInt32(Context.QueryString["version"]); } //塞人至相對應的group _connections.Add(circleKey.ToLower(), connId, version); try { var tokenService = new TokenService(); var tokenInfo = tokenService.GetTokenInfo(token.ToString()).Result; //更新connectionId // Models.Auth.AuthMember.UpdateConnectionId(connId, memberAccount.Result.Id); var learningCircleService = new LearningCircleService(); var learningCircleInfo = learningCircleService.GetDetailByOuterKey(circleKey); var activityService = new ActivityService(); var authList = activityService.CircleAuth(tokenInfo.MemberId, learningCircleInfo.Id); // 將 連接ID 與 群組代碼 放入SignalR的Groups,之後就能透過Groups(群組代碼)將訊息廣播給使用者 error = "Groups.Add"; Groups.Add(connId, groupKey); mqttCircleKey = circleKey; // 呼叫前端的Method(發送連接成功的Request) error = "joinGroup Clients.Caller.onConnected token:[" + token + "]"; Clients.Caller.onConnected(groupKey, token, connId, authList); result.Data = authList; result.Success = true; return(result); // var checkiCan5ManToken = ican5API.CheckiCanManToken(token, memberAccount, circleKey); } catch (Exception ex) { Clients.Caller.onError("joinGroup", "連接學習圈發生意外: token:[" + token + "]" + ex.Message + error); result.Success = false; return(result); } }
/// <summary> /// 取得列表 - ForAPP /// </summary> /// <returns></returns> public Infrastructure.ViewModel.ActivityFunction.Leave.GetAbsenceFormListResponse GetAbsenceFormList(Infrastructure.ViewModel.ActivityFunction.Leave.GetAbsenceFormListRequest requestData) { var tokenService = new TokenService(); var checkMember = tokenService.GetTokenInfo(requestData.ICanToken).Result; if (checkMember == null) { return(null); } var authService = new AuthService(); var learningcircleService = new LearningCircleService(); var learningInfo = learningcircleService.GetDetailByOuterKey(requestData.ClassID); if (learningInfo == null) { return(null); } var auth = authService.CheckFunctionAuth(learningInfo.Id, ParaCondition.LeaveFunction.Review, checkMember.MemberId); var responseData = new Infrastructure.ViewModel.ActivityFunction.Leave.GetAbsenceFormListResponse(); if (auth) { //老師介面 var searchData = requestData.CheckDate.HasValue ? GetAppList(learningInfo.Id, true, null, requestData.CheckDate.Value) : GetAppList(learningInfo.Id, true, null, null); responseData.Forms = searchData; responseData.IsQueryFormSuccess = true; responseData.IsManager = true; responseData.IsQueryRoomSuccess = true; } else { //學生介面 var searchData = requestData.CheckDate.HasValue ? GetAppList(learningInfo.Id, false, checkMember.MemberId, requestData.CheckDate.Value) : GetAppList(learningInfo.Id, false, checkMember.MemberId, null); responseData.Forms = searchData; responseData.IsQueryFormSuccess = true; responseData.IsManager = false; responseData.IsQueryRoomSuccess = true; } responseData.ClassID = learningInfo.LearningOuterKey; responseData.ClassName = learningInfo.Name; return(responseData); }
/// <summary> /// 新增單筆資訊 /// </summary> /// <param name="circleKey"></param> /// <param name="account"></param> /// <param name="token"></param> /// <param name="roleId"></param> /// <returns></returns> public bool InsertCircleMemberRole(string circleKey, string account, string token, int roleId) { var memberService = new MemberService(); var memberInfo = memberService.TokenToMember(token).Result; if (memberInfo == null) { return(false); } var learningRoleService = new LearningRoleService(); var learningRoleInfo = learningRoleService.GetDetailById(roleId); if (learningRoleInfo == null) { return(false); } var learningCircleService = new LearningCircleService(); var learningCircleInfo = learningCircleService.GetDetailByOuterKey(circleKey.ToLower()); if (learningCircleInfo == null) { return(false); } var accountInfo = memberService.AccountToMember(account, learningCircleInfo.OrgId); if (accountInfo == null) { return(false); } var entity = new CircleMemberRoleplay() { CircleId = learningCircleInfo.Id, Enable = true, MemberId = accountInfo.Id, RoleId = roleId, ResType = 0, ExternalRid = null }; _uow.DbContext.CircleMemberRoleplay.Add(entity); return(true); }
/// <summary> /// 建立請假單 /// </summary> /// <param name="requestData"></param> /// <param name="files"></param> /// <returns></returns> public Infrastructure.ViewModel.SignInLogViewModel SetNewAbsenceForm(Infrastructure.ViewModel.ActivityFunction.Leave.SetNewAbsenceFormRequest requestData, List <FileStorage> files, List <Stream> streams) { var tokenService = new TokenService(); var checkMember = tokenService.GetTokenInfo(requestData.Token.ToString()).Result; if (checkMember == null) { return(null); } var authService = new AuthService(); var learningcircleService = new LearningCircleService(); var learningInfo = learningcircleService.GetDetailByOuterKey(requestData.CircleKey); if (learningInfo == null) { return(null); } var auth = authService.CheckFunctionAuth(learningInfo.Id, ParaCondition.LeaveFunction.Create, checkMember.MemberId); if (auth) { var uploadData = new Infrastructure.DataTransferObject.UploadFileModel() { Token = requestData.Token, Title = requestData.Title, Content = requestData.Content, CircleKey = requestData.CircleKey, LeaveDate = requestData.LeaveDate, LeaveCategoryId = requestData.LeaveCategoryId }; var createRespone = Add(learningInfo, checkMember.MemberId, uploadData, files, streams); if (createRespone == null) { return(null); } else { return(createRespone); } } return(null); }
public IHttpActionResult Post([FromBody]Infrastructure.ViewModel.CourseManage.GetAllMyCourseRequest value) { if (value.Account == null || value.ICanToken == null) return Content(HttpStatusCode.BadRequest, "遺漏參數"); var result = new Infrastructure.ViewModel.Base.ResultBaseModel<Infrastructure.ViewModel.CourseManage.GetAllMyCourseResponse>(); var service = new LearningCircleService(); var response = service.APPGetAllMyCourse(value.ICanToken); if (response == null) { result.Success = false; result.Message = "查詢失敗"; result.State = Infrastructure.ViewModel.Base.LogState.Error; return Ok(response); } result.Success = true; result.Message = "查詢成功"; result.Data = response.ToArray(); return Ok(result); }
/// <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); }
public async Task PushOnCreatedSignIn(string circleKey, Guid eventId, int?myId) { var creatorName = string.Empty; var memberService = new MemberService(); if (myId != null) { creatorName = memberService.UserIdToAccount(myId.Value).Name; } var learningcircleService = new LearningCircleService(); var members = learningcircleService.GetCircleMemberList(circleKey, myId); var eventMessage = string.Format("{0}新增了點名活動", creatorName); var pushService = new PushService(); // 推播文字:點名活動即將開始({日期} {時間}) // var message = string.Format("{0}(建立時間:{1:yyyy/M/d HH:mm})", eventMessage, DateTime.Now); var message = string.Format("{0}", eventMessage); if (members.Count > 0) { await pushService.PushMsgAsync("ToEventCard", circleKey, eventId, "推播_查看點名-開始", members.ToArray(), message); } }
public IHttpActionResult Put(LearningCirclePostRequest requestData) { var result = new Infrastructure.ViewModel.Base.BaseResponse <Infrastructure.Entity.LearningCircle>(); var requestService = new Service.Utility.RequestDataHelper <LearningCirclePostRequest>(); var checkColumnKeys = new string[4] { "name", "circlekey", "description", "token" }; var checkEmpty = requestService.CheckColumnEmpty(requestData, checkColumnKeys); //取得資料 var requestFormData = HttpContext.Current.Request.Form; if (checkEmpty == false) { result.Success = false; result.Message = "確認是否遺漏資訊"; result.State = Infrastructure.ViewModel.Base.LogState.RequestDataError; return(Content(HttpStatusCode.BadRequest, result)); } var service = new LearningCircleService(); var data = service.UpdateLearningCircle(requestData.Name, requestData.CircleKey, requestData.Description, requestData.Token, true, requestData.Objective, requestData.Remark ); if (data == null) { result.Success = false; result.Message = "編輯失敗"; result.State = Infrastructure.ViewModel.Base.LogState.Error; return(Ok(result)); } result.Success = true; result.Message = "編輯成功"; result.Data = data; return(Ok(result)); }
private void ShowRecordList(string circleKey) { var _actService = new ActivityService(); var learningCircleService = new LearningCircleService(); var members = learningCircleService.GetCircleMemberIdList(circleKey); foreach (var mem in members) { var myConn = HttpContext.Current.Cache.Get(mem.ToString()) as List <string>; if (myConn != null) { var data = _actService.GetLatestList(mem, ""); var objHub = GlobalHost.ConnectionManager.GetHubContext <SignalRHub.WiicoHub>(); // 所有歸屬在這個id下的connection都會收到 foreach (var connId in myConn) { objHub.Clients.Client(connId).showRecordList(data); } } } }
public IHttpActionResult Get([FromUri] string strAccess) { var requestData = JsonConvert.DeserializeObject <Infrastructure.ViewModel.CourseManage.GetCourseDetailRequest>(strAccess); var requestService = new Service.Utility.RequestDataHelper <Infrastructure.ViewModel.CourseManage.GetCourseDetailRequest>(); var checkColumnKeys = new string[3] { "account", "classid", "icantoken" }; var checkEmpty = requestService.CheckColumnEmpty(requestData, checkColumnKeys); if (checkEmpty == false) { return(Content(HttpStatusCode.InternalServerError, "遺漏參數")); } var response = new ResultBaseModel <Infrastructure.ViewModel.CourseManage.GetCourseDetailResponse>(); var tokenService = new TokenService(); var checkToken = tokenService.GetTokenInfo(requestData.ICanToken).Result; if (checkToken == null) { response.Success = false; response.Message = "已登出"; response.State = Infrastructure.ViewModel.Base.LogState.Logout; return(Ok(response)); } var service = new LearningCircleService(); var data = service.APPGetCourseDetail(requestData.ICanToken, requestData.ClassID); response.Success = true; response.Message = "查詢成功"; response.Data = new Infrastructure.ViewModel.CourseManage.GetCourseDetailResponse[1] { data }; return(Ok(response)); }
/// <summary> /// 取得課程的邀請狀態 /// </summary> /// <param name="token"></param> /// <param name="circleKey"></param> /// <param name="inviteType">查詢邀請對象 0: 成員 | 1 : 管理者</param> /// <returns></returns> public bool GetLearningInviteStatus(string token, string circleKey, int inviteType) { var db = _uow.DbContext; var tokenService = new TokenService(); var tokenInfo = tokenService.GetTokenInfo(token).Result; if (tokenInfo == null) { return(false); } var authService = new AuthService(); if (authService.CheckCourseTeacher(tokenInfo.MemberId, circleKey.ToLower()) || authService.CheckCourseAdmin(tokenInfo.MemberId, circleKey.ToLower())) { var learningCircleService = new LearningCircleService(); var learningCircleinfo = learningCircleService.GetDetailByOuterKey(circleKey.ToLower()); if (learningCircleinfo == null) { return(false); } return(inviteType == 0 ? learningCircleinfo.InviteEnable : learningCircleinfo.AdminInviteEnable); } return(false); }
/// <summary> /// 刪除學習圈資訊 /// </summary> /// <returns></returns> public IHttpActionResult Delete(string token, string circlekey) { var result = new Infrastructure.ViewModel.Base.BaseResponse <Infrastructure.Entity.LearningCircle>(); if (token == null || circlekey == null) { result.Success = false; result.Message = "確認是否遺漏資訊"; return(Content(HttpStatusCode.BadRequest, result)); } var service = new LearningCircleService(); var data = service.DeleteLearningCircleByCircleKey(circlekey.ToLower(), token); if (data == false) { result.Success = false; result.Message = "刪除失敗"; result.State = Infrastructure.ViewModel.Base.LogState.Error; return(Ok(result)); } result.Success = true; result.Message = "刪除成功"; return(Ok(result)); }
/// <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); } }
/// <summary> /// 加入學習圈 /// </summary> /// <param name="circleKey"></param> /// <param name="token"></param> public BaseResponse <JObject> joinGroup(string circleKey, Guid token) { var result = new BaseResponse <JObject>(); string error = string.Empty; string groupKey = circleKey.ToLower(); var version = 0; if (Context.QueryString != null && !string.IsNullOrEmpty(Context.QueryString["version"])) { version = Convert.ToInt32(Context.QueryString["version"]); } //塞人至相對應的group _connections.Add(groupKey, Context.ConnectionId, version); try { var memberService = new MemberService(); var memberInfo = memberService.TokenToMember(token.ToString()).Result; if (memberInfo == null) { return(null); } //如果是smartTA登入 if (memberInfo.RoleName == "3") { var smartTAService = new Service.Backend.SmartTAService(); //先把學習圈內的smartTA都踢掉 var smartTAs = smartTAService.GetSmartTAs(groupKey); if (smartTAs != null) { foreach (var smartTA in smartTAs) { Groups.Remove(smartTA.ConnectionId, groupKey); } } var setSmartTAValue = new SmartTAPostRequest() { CircleKeys = new List <string>(), ClassRoomId = memberInfo.Account }; setSmartTAValue.CircleKeys.Add(groupKey); //建立smartTA關聯 var setSmartTA = smartTAService.InsertRelation(setSmartTAValue); } var learningCircleService = new LearningCircleService(); var learningCircleInfo = learningCircleService.GetDetailByOuterKey(groupKey); var activityService = new ActivityService(); var authList = activityService.CircleAuth(memberInfo.Id, learningCircleInfo.Id); // 將 連接ID 與 群組代碼 放入SignalR的Groups,之後就能透過Groups(群組代碼)將訊息廣播給使用者 error = "Groups.Add"; Groups.Add(Context.ConnectionId, groupKey); mqttCircleKey = groupKey; // 呼叫前端的Method(發送連接成功的Request) error = "joinGroup Clients.Caller.onConnected token:[" + token + "]"; Clients.Caller.onConnected(groupKey, token, Context.ConnectionId, authList); result.Data = authList; result.Success = true; return(result); } catch (Exception ex) { Clients.Caller.onError("joinGroup", "連接學習圈發生意外: token:[" + token + "]" + ex.Message + error); result.Success = false; return(result); } }
/// <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); }
/// <summary> /// 取得學習圈列表 /// </summary> /// <param name="strAccess"></param> /// <returns></returns> public IHttpActionResult Get(string strAccess) { var requestService = new Service.Utility.RequestDataHelper <LearningCircleGetRequest>(); var requestData = JsonConvert.DeserializeObject <LearningCircleGetRequest>(strAccess); var checkColumnKeys = new string[1] { "token" }; var checkEmpty = requestService.CheckColumnEmpty(requestData, checkColumnKeys); var backendResponse = new Infrastructure.ViewModel.Base.BaseResponse <List <LearningCircleManageViewModel> >(); backendResponse.Success = false; backendResponse.Data = new List <LearningCircleManageViewModel>(); if (checkEmpty == false) { backendResponse.Message = "請確認是否遺漏資訊"; return(Content(HttpStatusCode.BadRequest, backendResponse)); } var learningCircleService = new LearningCircleService(); // var data = service.GetLearningCircleListByToken(token, orgId, searchName); var tokenService = new TokenService(); var tokenInfo = tokenService.GetTokenInfo(requestData.Token).Result; if (tokenInfo == null) { backendResponse.Message = "已登出"; backendResponse.State = Infrastructure.ViewModel.Base.LogState.Logout; return(Ok(backendResponse)); } //查詢列表 if (requestData.CircleKey == null || requestData.CircleKey == string.Empty) { var data = learningCircleService.GetLearningCircleManageList(tokenInfo.MemberId, requestData.SearchName, requestData.OrgId); if (data == null) { backendResponse.Success = false; backendResponse.Message = "查詢失敗"; backendResponse.State = Infrastructure.ViewModel.Base.LogState.Error; return(Ok(backendResponse)); } backendResponse.Message = "查詢成功"; backendResponse.Success = true; backendResponse.Data = data.ToList(); return(Ok(backendResponse)); } //查詢單個課程 else { var detailResponse = new Infrastructure.ViewModel.Base.BaseResponse <LearningCircleGetResponse>(); var data = learningCircleService.GetLearningCircleInfo(requestData.CircleKey.ToLower()); if (data == null) { detailResponse.Success = false; detailResponse.Message = "查詢失敗"; detailResponse.State = Infrastructure.ViewModel.Base.LogState.Error; } else { detailResponse.Success = true; detailResponse.Message = "查詢成功"; detailResponse.Data = data; } return(Ok(detailResponse)); } }
public async Task <IHttpActionResult> Get() { var response = new Infrastructure.ViewModel.Base.BaseResponse <string>(); multipartFormDataModel = new SetNewAbsenceFormRequest(); await SetFileData(); if (multipartFormDataStreamProvider.FormData == null) { response.Message = "遺漏參數"; response.State = Infrastructure.ViewModel.Base.LogState.RequestDataError; return(Content(HttpStatusCode.BadRequest, response)); } //設定參數 var token = multipartFormDataStreamProvider.FormData.Get("icantoken") != null?multipartFormDataStreamProvider.FormData.GetValues("icantoken")[0] : null; var circleKey = multipartFormDataStreamProvider.FormData.Get("classid") != null?multipartFormDataStreamProvider.FormData.GetValues("classid")[0] : null; var title = multipartFormDataStreamProvider.FormData.Get("title") != null?multipartFormDataStreamProvider.FormData.GetValues("title")[0] : null; var content = multipartFormDataStreamProvider.FormData.Get("content") != null?multipartFormDataStreamProvider.FormData.GetValues("content")[0] : null; var leavedate = multipartFormDataStreamProvider.FormData.Get("leavedate") != null?multipartFormDataStreamProvider.FormData.GetValues("leavedate")[0] : null; var leavecategoryid = multipartFormDataStreamProvider.FormData.Get("leavecategoryid") != null?multipartFormDataStreamProvider.FormData.GetValues("leavecategoryid")[0] : null; if (token == null || circleKey == null || title == null || content == null || leavedate == null || leavecategoryid == null) { response.Message = "遺漏參數"; response.State = Infrastructure.ViewModel.Base.LogState.RequestDataError; return(Content(HttpStatusCode.BadRequest, response)); } multipartFormDataModel.Token = Guid.Parse(token); multipartFormDataModel.CircleKey = circleKey.ToLower(); multipartFormDataModel.Title = HttpUtility.UrlDecode(title); multipartFormDataModel.Content = HttpUtility.UrlDecode(content); multipartFormDataModel.LeaveDate = Convert.ToDateTime(leavedate); multipartFormDataModel.LeaveCategoryId = Convert.ToInt32(leavecategoryid); var service = new LeaveService(); var data = service.SetNewAbsenceForm(multipartFormDataModel, multipartFormDataFiles, fileStreams); objHub.Clients.Group(multipartFormDataModel.CircleKey.ToLower()).addLeave(data); var tokenService = new TokenService(); var checkToken = tokenService.GetTokenInfo(multipartFormDataModel.Token.ToString()).Result; if (checkToken == null) { response.Success = false; response.Message = "已登出"; response.State = Infrastructure.ViewModel.Base.LogState.Logout; return(Ok(response)); } response.Success = data != null ? true : false; response.Message = data != null ? "建立成功" : "建立失敗"; //單元測試結果 if (HttpContext.Current == null) { return(Ok(response)); } var pushService = new PushService(); // 檢查通過,save data var message = pushService.PushOnCreatedLeave(multipartFormDataModel.CircleKey, data.EventId, checkToken.MemberId, multipartFormDataModel.LeaveDate.ToLocalTime()).Result; var activityService = new ActivityService(); var signalrService = new SignalrService(); //發通知給老師們 var connectIdAndNoticeData = signalrService.GetConnectIdAndData(multipartFormDataModel.CircleKey, checkToken.MemberId, SignalrConnectIdType.Teachers, SignalrDataType.Notice); var learningCircleService = new LearningCircleService(); var teachers = learningCircleService.GetCircleTeacherIdListBySql(multipartFormDataModel.CircleKey.ToLower(), checkToken.MemberId); // 將通知寫入資料庫 activityService.AddMutipleNotice(multipartFormDataModel.CircleKey, teachers, data.EventId, message); SignalrClientHelper.SendNotice(connectIdAndNoticeData); foreach (var item in data.OuterKeySignInLog) { //告訴同班的有活動的開始時間被修改 SignalrClientHelper.SignIn_StatusChanged(multipartFormDataModel.CircleKey, item.Key, item.Value); } // return result; return(Ok(response)); }
/// <summary> /// 雲端版APP專用 /// </summary> /// <param name="circleKey"></param> /// <param name="token"></param> /// <param name="files"></param> /// <returns></returns> public Infrastructure.BusinessObject.MaterialEvent AddFile(string circleKey, string token, HttpFileCollection files) { var tokenService = new TokenService(); var checkToken = tokenService.GetTokenInfo(token).Result; var learningcircleService = new LearningCircleService(); var learningcircleinfo = learningcircleService.GetDetailByOuterKey(circleKey); var createDateTime = DateTime.UtcNow; if (checkToken == null) { return(null); } var fileService = new FileService(); var newFiles = fileService.UploadFile(checkToken.MemberId, files); var file = newFiles.FirstOrDefault(); if (file == null) { return(null); } try { var db = _uow.DbContext; var materialEntity = new Infrastructure.Entity.ActMaterial() { LearningId = learningcircleinfo.Id, Name = file.Name, EventId = file.FileGuid, CreateUser = checkToken.MemberId, Created = Infrastructure.Property.TimeData.Create(createDateTime), Updated = Infrastructure.Property.TimeData.Create(null), Deleted = Infrastructure.Property.TimeData.Create(null), GoogleDriveFileId = file.FileGuid.ToString("N"), FileImgUrl = string.Format("{0}api/imgFile/{1}/{2}/{3}", loginServer, file.FileGuid.ToString("N"), maxImgWidth, maxImgHeight), FileLength = file.FileSize, FileType = file.FileContentType, Visibility = true }; var activityEntity = new Activitys() { CardisShow = true, CreateUser = checkToken.MemberId, Created = Infrastructure.Property.TimeData.Create(createDateTime), Updated = Infrastructure.Property.TimeData.Create(null), Deleted = Infrastructure.Property.TimeData.Create(null), OuterKey = file.FileGuid, Publish_Utc = createDateTime, ToRoomId = circleKey, ModuleKey = Utility.ParaCondition.ModuleType.Material, StartDate = createDateTime, IsActivity = true }; db.ActMaterial.Add(materialEntity); db.Activitys.Add(activityEntity); db.SaveChanges(); } catch (Exception ex) { return(null); throw ex; } var memberService = new MemberService(); var memberInfo = memberService.UserIdToAccount(checkToken.MemberId); var response = new Infrastructure.BusinessObject.MaterialEvent() { ClassId = circleKey, CreateAccount = memberInfo.Account, Creator = memberInfo.Id.ToString(), OuterKey = file.FileGuid, CreateDate = createDateTime }; return(response); }
/// <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); } }