public async Task <ActionResult> Post([FromBody] CircleEventParticipation model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (!await this.MatchAppUserWithToken(model.AppUserId)) { return(Unauthorized()); } var circleEventFromRepo = await _repo.Get <CircleEvent>(model.CircleEventId); if (circleEventFromRepo == null) { return(NotFound("イベントが見つかりません: " + model.CircleEventId)); } var existingRequest = await _repo.GetCircleEventParticipation((int)model.AppUserId, model.CircleEventId); if (existingRequest != null) { return(BadRequest("既にリクエストしています")); } if (circleEventFromRepo.ApprovalRequired || await _repo.IsEventFull(circleEventFromRepo.Id)) { await _notificationRepo.AddNotification(NotificationEnum.NewCircleEventParticipationRequest, (int)circleEventFromRepo.AppUserId, circleEventFromRepo); } else { model.Status = CircleEventParticipationStatus.Confirmed; } _repo.Add(model); await _repo.SaveAll(); return(CreatedAtRoute("GetCircleEventParticipation", new { userId = model.AppUserId, eventId = model.CircleEventId }, _mapper.Map <CircleEventParticipationForReturnDto>(model))); }