public async Task <ActionResult> ApproveCircleRequest([FromBody] CircleRequest model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var loggedInUser = await GetLoggedInUserAsync(); if (loggedInUser == null) { return(Unauthorized()); } if (!await _repo.IsOwner(loggedInUser.Id, model.CircleId)) { return(Unauthorized()); } var circleRequestFromRepo = await _repo.GetCircleRequest((int)model.AppUserId, model.CircleId); if (circleRequestFromRepo == null) { return(NotFound("リクエストが見つかりません")); } _repo.Delete(circleRequestFromRepo); //If already member, just remove request and create nothing if (await _repo.IsMember(model.AppUserId, model.CircleId)) { await _repo.SaveAll(); return(Ok()); } var newCircleMember = new CircleMember() { AppUserId = (int)model.AppUserId, Circle = circleRequestFromRepo.Circle, CircleId = model.CircleId, Role = CircleRoleEnum.MEMBER, DateJoined = DateTime.Now, DateLastActive = DateTime.Now }; _repo.Add(newCircleMember); await _repo.SaveAll(); await _notificationRepo.AddNotification(NotificationEnum.CircleRequestAccepted, model.AppUserId, newCircleMember); await _repo.SaveAll(); return(CreatedAtRoute("GetCircleMember", new { userId = model.AppUserId, circleId = model.CircleId }, _mapper.Map <CircleMemberForReturnDto>(await _repo.GetCircleMember(model.AppUserId, model.CircleId)))); }
public async Task <ActionResult> Post([FromBody] CircleEventUpdateDto model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (!await this.MatchAppUserWithToken(model.AppUserId) || !await _repo.IsOwner((int)model.AppUserId, model.CircleId)) { return(Unauthorized()); } var newEvent = this._mapper.Map <CircleEvent>(model); _repo.Add(newEvent); CircleEvent oldestEvent = null; if (await _repo.GetCircleEventCount(model.CircleId) >= CIRCLE_EVENT_MAX) { oldestEvent = await _repo.GetOldestCircleEvent(model.CircleId); _repo.Delete(oldestEvent); } await _repo.SaveAll(); if (oldestEvent != null) { await this.deleteAttachedPhotos(oldestEvent.Photos); } return(CreatedAtRoute("GetCircleEvent", new { id = newEvent.Id }, _mapper.Map <CircleEventForReturnDto>(await _repo.Get <CircleEvent>(newEvent.Id)))); }
public async Task <ActionResult> Get(int id) { var circleForReturn = _mapper.Map <CircleForReturnDto>(await _repo.GetCircle(id)); var appUser = await GetLoggedInUserAsync(); if (appUser != null) { if (await _repo.IsOwner(appUser.Id, circleForReturn.Id)) { circleForReturn.IsManageable = true; circleForReturn.IsMember = true; } else if (await _repo.IsMember(appUser.Id, circleForReturn.Id)) { circleForReturn.IsMember = true; } else { var request = await _repo.GetCircleRequest(appUser.Id, circleForReturn.Id); if (request != null) { if (request.Declined) { circleForReturn.IsDeclined = true; } else { circleForReturn.IsWaitingApproval = true; } } } } circleForReturn.TotalMemberCount = await _repo.GetCircleMemberCount(id); return(Ok(circleForReturn)); }