public IHttpActionResult Post(TimeTablePostRequest requestData) { var requestService = new Service.Utility.RequestDataHelper <TimeTablePostRequest>(); var checkColumnKeys = new string[3] { "token", "circlekey", "timetable" }; 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 timeTableService = new TimeTableService(); var responseData = timeTableService.TimeTableDataProxy(requestData); if (responseData) { response.Success = true; response.Message = "處理資料成功"; return(Ok(response)); } response.Message = "處理資料失敗"; response.State = Infrastructure.ViewModel.Base.LogState.Error; return(Ok(response)); }
/// <summary> /// 處理資料 /// </summary> /// <param name="requestData"></param> /// <returns></returns> public bool TimeTableDataProxy(TimeTablePostRequest requestData) { var tokenService = new TokenService(); var tokenInfo = tokenService.GetTokenInfo(requestData.Token).Result; if (tokenInfo == null) { return(false); } var insertDatas = requestData.TimeTable.Where(t => t.Id == 0); //處理新增資料 foreach (var insertData in insertDatas) { insertData.Course_No = requestData.CircleKey; insertData.StartDate = insertData.StartDate.Value.ToUniversalTime(); insertData.EndDate = insertData.EndDate.Value.ToUniversalTime(); } try { var db = _uow.DbContext; db.TimeTable.AddRange(insertDatas); var dbData = GetList(requestData.CircleKey.ToLower()); //聯集資料 var unionDataIds = requestData.TimeTable.Select(t => t.Id).Union(dbData.Select(t => t.Id)); //找出欲刪除的資料 var deleteDataIds = unionDataIds.Except(requestData.TimeTable.Select(t => t.Id)); foreach (var deleteDataId in deleteDataIds) { var deleteTimeTable = db.TimeTable.Find(deleteDataId); if (deleteTimeTable == null) { continue; } db.TimeTable.Remove(deleteTimeTable); } //處理編輯資料 var updateDatas = requestData.TimeTable.Where(t => t.Id > 0).ToList(); foreach (var updateData in updateDatas) { var updateDataInfo = db.TimeTable.Find(updateData.Id); updateDataInfo.ClassRoom = updateData.ClassRoom; updateDataInfo.StartDate = updateData.StartDate.Value.ToUniversalTime(); updateDataInfo.EndDate = updateData.EndDate.Value.ToUniversalTime(); updateDataInfo.Remark = updateData.Remark; } db.SaveChanges(); return(true); } catch (Exception ex) { return(false); } }