public async Task <APIResult> PutAsync(int id, LeaveFormRequestDTO leaveFormRequestDTO) { token = appStatus.SystemStatus.Token; encodingType = EnctypeMethod.JSON; needSave = false; isCollection = false; routeUrl = $"/{id}"; #region 要傳遞的參數 //Dictionary<string, string> dic = new Dictionary<string, string>(); WebQueryDictionary dic = new WebQueryDictionary(); // ---------------------------- 另外兩種建立 QueryString的方式 //dic.Add(Global.getName(() => memberSignIn_QS.app), memberSignIn_QS.app); //dic.AddItem<string>(() => 查詢資料QueryString.strHospCode); //dic.Add("Price", SetMemberSignUpVM.Price.ToString()); dic.Add(LOBGlobal.JSONDataKeyName, JsonConvert.SerializeObject(leaveFormRequestDTO)); #endregion var mr = await this.SendAsync(dic, HttpMethod.Put, CancellationToken.None); //mr.Success = false; //mr.Message = "測試用的錯誤訊息"; return(mr); }
public static LeaveForm ToLeaveForm(this LeaveFormRequestDTO leaveFormRequestDTO, LobUser lobUser, LeaveFormType leaveFormType) { LeaveForm fooLeaveForm = new LeaveForm() { BeginTime = leaveFormRequestDTO.BeginTime, EndTime = leaveFormRequestDTO.EndTime, Description = leaveFormRequestDTO.Description, TotalHours = leaveFormRequestDTO.TotalHours, User = lobUser, LeaveFormType = leaveFormType, }; return(fooLeaveForm); }
public async Task <IActionResult> PostLeaveForm([FromBody] LeaveFormRequestDTO leaveForm) { var claimSID = User.FindFirst(JwtRegisteredClaimNames.Sid)?.Value; if (claimSID == null) { apiResult = APIResultFactory.Build(false, StatusCodes.Status400BadRequest, ErrorMessageEnum.杖中沒有發現指定使用者ID); return(BadRequest(apiResult)); } UserID = Convert.ToInt32(claimSID); var fooUser = await _context.LobUsers.Include(x => x.Department).FirstOrDefaultAsync(x => x.Id == UserID); if (fooUser == null) { apiResult = APIResultFactory.Build(false, StatusCodes.Status404NotFound, ErrorMessageEnum.沒有發現指定的該使用者資料); return(NotFound(apiResult)); } if (!ModelState.IsValid) { apiResult = APIResultFactory.Build(false, StatusCodes.Status400BadRequest, ErrorMessageEnum.傳送過來的資料有問題, exceptionMessage: $"傳送過來的資料有問題 {ModelState}"); return(BadRequest(apiResult)); } var fooLeaveFormType = await _context.LeaveFormTypes.FindAsync(leaveForm.leaveFormType.Id); if (fooLeaveFormType == null) { apiResult = APIResultFactory.Build(false, StatusCodes.Status404NotFound, ErrorMessageEnum.沒有發現指定的請假單類別); return(NotFound(apiResult)); } LeaveForm fooLeaveForm = leaveForm.ToLeaveForm(fooUser, fooLeaveFormType); _context.LeaveForms.Add(fooLeaveForm); await _context.SaveChangesAsync(); apiResult = APIResultFactory.Build(true, StatusCodes.Status202Accepted, ErrorMessageEnum.None, payload: leaveForm); return(Accepted(apiResult)); }
public async Task <IActionResult> PutLeaveForm([FromRoute] int id, [FromBody] LeaveFormRequestDTO leaveForm) { var claimSID = User.FindFirst(JwtRegisteredClaimNames.Sid)?.Value; if (claimSID == null) { apiResult = APIResultFactory.Build(false, StatusCodes.Status400BadRequest, ErrorMessageEnum.杖中沒有發現指定使用者ID); return(BadRequest(apiResult)); } UserID = Convert.ToInt32(claimSID); var fooUser = await _context.LobUsers.Include(x => x.Department).FirstOrDefaultAsync(x => x.Id == UserID); if (fooUser == null) { apiResult = APIResultFactory.Build(false, StatusCodes.Status404NotFound, ErrorMessageEnum.沒有發現指定的該使用者資料); return(NotFound(apiResult)); } if (!ModelState.IsValid) { apiResult = APIResultFactory.Build(false, StatusCodes.Status400BadRequest, ErrorMessageEnum.傳送過來的資料有問題, exceptionMessage: $"傳送過來的資料有問題 {ModelState}"); return(BadRequest(apiResult)); } if (leaveForm.id != id) { apiResult = APIResultFactory.Build(false, StatusCodes.Status400BadRequest, ErrorMessageEnum.紀錄更新所指定ID不一致); return(BadRequest(apiResult)); } var fooLeaveFormType = await _context.LeaveFormTypes.FindAsync(leaveForm.leaveFormType.Id); if (fooLeaveFormType == null) { apiResult = APIResultFactory.Build(false, StatusCodes.Status404NotFound, ErrorMessageEnum.沒有發現指定的請假單類別); return(NotFound(apiResult)); } var leaveFormOnDB = await _context.LeaveForms.Include(x => x.LeaveFormType) .Include(x => x.User).ThenInclude(x => x.Department) .FirstOrDefaultAsync(x => x.Id == leaveForm.id); if (leaveFormOnDB == null) { apiResult = APIResultFactory.Build(false, StatusCodes.Status404NotFound, ErrorMessageEnum.沒有發現指定的請假單); return(NotFound(apiResult)); } else if (leaveFormOnDB.User.Id != UserID) { apiResult = APIResultFactory.Build(false, StatusCodes.Status400BadRequest, ErrorMessageEnum.杖Token上標示的使用者與傳送過來的使用者不一致); return(BadRequest(apiResult)); } leaveFormOnDB.BeginTime = leaveForm.BeginTime; leaveFormOnDB.Description = leaveForm.Description; leaveFormOnDB.EndTime = leaveForm.EndTime; leaveFormOnDB.TotalHours = leaveForm.TotalHours; leaveFormOnDB.LeaveFormType = fooLeaveFormType; _context.Entry(leaveFormOnDB).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!await LeaveFormExists(leaveForm.id)) { apiResult = APIResultFactory.Build(false, StatusCodes.Status409Conflict, ErrorMessageEnum.要更新的紀錄_發生同時存取衝突_已經不存在資料庫上); return(Conflict(apiResult)); } else { apiResult = APIResultFactory.Build(false, StatusCodes.Status409Conflict, ErrorMessageEnum.紀錄更新時_發生同時存取衝突); return(Conflict(apiResult)); } } catch (Exception ex) { apiResult = APIResultFactory.Build(false, StatusCodes.Status500InternalServerError, Helpers.ErrorMessageEnum.Exception, exceptionMessage: $"({ex.GetType().Name}), {ex.Message}{Environment.NewLine}{ex.StackTrace}"); return(StatusCode(StatusCodes.Status500InternalServerError, apiResult)); } apiResult = APIResultFactory.Build(true, StatusCodes.Status202Accepted, ErrorMessageEnum.None, payload: leaveForm); return(Accepted(apiResult)); }