public async Task <ActionResult> DeclineCircleRequest([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("リクエストが見つかりません")); } circleRequestFromRepo.Declined = true; await _repo.SaveAll(); return(Ok()); }
public IActionResult Put([FromBody] CircleRequest request) { var circle = _mapper.Map <Circle>(request); _CircleService.Update(request.CircleId, circle); return(Ok()); }
public IActionResult Post([FromBody] CircleRequest request) { var circle = _mapper.Map <Circle>(request); var result = _CircleService.Create(circle); return(Ok(_mapper.Map <CircleResponse>(result))); }
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> SendCircleRequest([FromBody] CircleRequest model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (!await this.MatchAppUserWithToken(model.AppUserId)) { return(Unauthorized()); } if (await _repo.IsMember((int)model.AppUserId, model.CircleId)) { return(BadRequest("既にメンバーになっています")); } var circleFromRepo = await _repo.Get <Circle>(model.CircleId); if (circleFromRepo == null) { return(NotFound("サークルレコードが見つかりません: " + model.CircleId)); } if (await _repo.RequestSent((int)model.AppUserId, model.CircleId)) { return(BadRequest("既にリクエストしています")); } if (circleFromRepo.ApprovalRequired) { _repo.Add(model); await _notificationRepo.AddNotification(NotificationEnum.NewCircleMemberRequest, model.AppUserId, model); await _repo.SaveAll(); return(CreatedAtRoute("GetCircleRequest", new { userId = model.AppUserId, circleId = model.CircleId }, null)); } _repo.Add(new CircleMember() { AppUserId = (int)model.AppUserId, CircleId = model.CircleId, Role = CircleRoleEnum.MEMBER, DateJoined = DateTime.Now, DateLastActive = DateTime.Now }); await _repo.SaveAll(); return(CreatedAtRoute("GetCircleMember", new { userId = model.AppUserId, circleId = model.CircleId }, null)); }
private async Task AddNewCircleMemberRequestNotification(int appUserId, CircleRequest circleRequest) { // var circleRequest = record as CircleRequest; if (circleRequest == null) { return; } var user = await _context.AppUsers.FirstOrDefaultAsync(au => au.Id == appUserId); await AddNotificationIfNotExist(new Notification() { AppUserId = (int)circleRequest.Circle.AppUserId, NotificationType = NotificationEnum.NewCircleMemberRequest, RecordType = "Circle", RecordId = circleRequest.CircleId, FromUserName = user.DisplayName, TargetRecordTitle = circleRequest.Circle.Name, // Message = circleRequest.AppUser.DisplayName + "さんからコミュニティ" + circleRequest.Circle.Name + "の参加リクエストがあります" }); }
public async Task AcceptRequest_AddMemberAndNotification() { //Arrange string circleOwnerName = "TestMember1"; // int ownerUserId = TestData.GetAppUserIdByName(circleOwnerName); // int ownerUserId = 11; string requestUserName = "******"; // int requestUserId = 13; int requestUserId = TestDataSeeder.GetAppUserIdByName(requestUserName); //Act var approvingRequest = new CircleRequest { AppUserId = requestUserId, CircleId = 1 }; //Accept circle request by owner await LoginByUser(circleOwnerName); var contents = new StringContent(JsonConvert.SerializeObject(approvingRequest), Encoding.UTF8, "application/json"); var response = await _client.PostAsync("/api/circlemember/approve", contents); response.EnsureSuccessStatusCode(); //Check if a new member was added response = await _client.GetAsync("/api/circlemember/" + approvingRequest.CircleId + "/latest"); response.EnsureSuccessStatusCode(); var jsonResult = JsonConvert.DeserializeObject <JArray>(await response.Content.ReadAsStringAsync()); var memberList = jsonResult.ToObject <List <CircleMember> >(); Assert.True(memberList.Any(ml => ml.AppUserId == requestUserId && ml.CircleId == 1)); //Check if notification was created await LoginByUser(requestUserName); var notifications = await _client.GetAsync("/api/notification/" + requestUserId); string result = await notifications.Content.ReadAsStringAsync(); Assert.Contains("notificationType\":" + (int)NotificationEnum.CircleRequestAccepted, result); }