public async Task <IActionResult> Cancel(int joinRequestId) { CancelJoinRequestDto dto = new CancelJoinRequestDto { Id = joinRequestId }; //CancelJoinRequestDto dto = new CancelJoinRequestDto {Id = joinRequestId, RequestingStudentId = requestingStudentId, RequestedGroupId = requestedGroupId}; ServiceResponse <string> response = await _joinRequestService.CancelJoinRequest(dto); if (response.Success) { return(Ok(response)); } return(NotFound(response)); }
public async Task <ServiceResponse <string> > CancelJoinRequest(CancelJoinRequestDto joinRequestDto) { ServiceResponse <string> response = new ServiceResponse <string>(); User user = await _context.Users .FirstOrDefaultAsync(u => u.Id == GetUserId()); JoinRequest joinRequest = await _context.JoinRequests .FirstOrDefaultAsync(jr => jr.Id == joinRequestDto.Id); if (joinRequest == null) { response.Data = "Not allowed"; response.Message = "There is no such join request with this Id"; response.Success = false; return(response); } if (user == null || (user != null && joinRequest.RequestingStudentId != GetUserId())) { response.Data = "Not allowed"; response.Message = "You are not authorized to cancel this join request"; response.Success = false; return(response); } if (joinRequest.Accepted) { response.Data = "Not allowed"; response.Message = "The join request is already accepted. So you can't cancel it"; response.Success = false; return(response); } if (joinRequest.Resolved) { response.Data = "Not allowed"; response.Message = "The join request is already resolved. So you can't cancel it"; response.Success = false; return(response); } ProjectGroup requestedGroup = await _context.ProjectGroups .FirstOrDefaultAsync(rg => rg.Id == joinRequest.RequestedGroupId); _context.JoinRequests.Remove(joinRequest); await _context.SaveChangesAsync(); if (user != null) { _context.Users.Update(user); await _context.SaveChangesAsync(); } if (requestedGroup != null) { _context.ProjectGroups.Update(requestedGroup); await _context.SaveChangesAsync(); } response.Data = "Successful"; response.Message = "Join request is successfully cancelled"; response.Success = true; return(response); }