public async Task <IActionResult> Cancel(int mergeRequestId)
        {
            CancelMergeRequestDto dto = new CancelMergeRequestDto {
                Id = mergeRequestId
            };
            ServiceResponse <string> response = await _mergeRequestService.CancelMergeRequest(dto);

            if (response.Success)
            {
                return(Ok(response));
            }
            return(NotFound(response));
        }
        public async Task <ServiceResponse <string> > CancelMergeRequest(CancelMergeRequestDto mergeRequestDto)
        {
            ServiceResponse <string> response = new ServiceResponse <string>();

            User user = await _context.Users
                        .Include(u => u.ProjectGroups)
                        .FirstOrDefaultAsync(u => u.Id == GetUserId());

            MergeRequest mergeRequest = await _context.MergeRequests
                                        .FirstOrDefaultAsync(mr => mr.Id == mergeRequestDto.Id);

            if (mergeRequest == null)
            {
                response.Data    = "Not allowed";
                response.Message = "There is no merge request with this Id";
                response.Success = false;
                return(response);
            }

            if (user == null)
            {
                response.Data    = "Not allowed";
                response.Message = "There is no user with this Id";
                response.Success = false;
                return(response);
            }

            ProjectGroup senderGroup = await _context.ProjectGroups
                                       .FirstOrDefaultAsync(sg => sg.Id == mergeRequest.SenderGroupId);

            ProjectGroup receiverGroup = await _context.ProjectGroups
                                         .FirstOrDefaultAsync(rg => rg.Id == mergeRequest.ReceiverGroupId);

            bool isUserInSender = senderGroup.GroupMembers.Any(pgu => pgu.UserId == GetUserId());



            if (!isUserInSender)
            {
                response.Data    = "Not allowed";
                response.Message = "You are not authorized to cancel this merge request";
                response.Success = false;
                return(response);
            }

            if (mergeRequest.Accepted)
            {
                response.Data    = "Not allowed";
                response.Message = "The merge request is already accepted. So you can't cancel it";
                response.Success = false;
                return(response);
            }

            if (mergeRequest.Resolved)
            {
                response.Data    = "Not allowed";
                response.Message = "The merge request is already resolved. So you can't cancel it";
                response.Success = false;
                return(response);
            }

            _context.MergeRequests.Remove(mergeRequest);
            await _context.SaveChangesAsync();

            if (senderGroup != null)
            {
                _context.ProjectGroups.Update(senderGroup);
                await _context.SaveChangesAsync();
            }

            if (receiverGroup != null)
            {
                _context.ProjectGroups.Update(receiverGroup);
                await _context.SaveChangesAsync();
            }

            response.Data    = "Successful";
            response.Message = "Merge request is successfully cancelled";
            response.Success = true;

            return(response);
        }