public async Task <IActionResult> PutDiary(string id, Diary diary) { if (id != diary.Id) { return(BadRequest()); } _context.Entry(diary).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!DiaryExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
//[ValidateAntiForgeryToken] public async Task <bool> apply(string diaryId, int exchaPeriod, string token) { //POSTデータを取得する // 引数で受け取る方法がわからないので、HttpContextから取得する var form = HttpContext.Request.Form; Microsoft.Extensions.Primitives.StringValues value; form.TryGetValue("diaryId", out value); diaryId = value.ToString(); form.TryGetValue("exchaPeriod", out value); exchaPeriod = int.Parse(value.ToString()); form.TryGetValue("token", out value); token = value.ToString(); if (!PBKDF2.Verify(HttpContext.User.FindFirst(ClaimTypes.Sid).Value, token)) { return(false); } string authId = HttpContext.User.FindFirst(ClaimTypes.NameIdentifier).Value; //最新のleafの日時を取得 DateTime latest = await _context.leaves .Where(l => l.diaryId == diaryId) .MaxAsync(l => l.time); Appli appli = new Appli(diaryId, latest, authId, EXCHA_ACCEPT.yet, exchaPeriod); _context.appli.Add(appli); try { await _context.SaveChangesAsync(); } catch (DbUpdateException) { //申請済みか確認 if (_context.appli.Any(a => ( (a.diaryId == appli.diaryId) && (a.leafTime == appli.leafTime) && (a.apid == authId) ))) { return(false); //Conflict(); } else { throw; } } return(true); }