Пример #1
0
        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));
        }
Пример #2
0
        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);
        }