Beispiel #1
0
        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());
        }
Beispiel #2
0
        //[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);
        }