public async Task <ContestRequestModel> SaveRequest(ContestRequestModel requestModel)
        {
            var existedRequests = await _contestRequestsRepository.Find(r =>
                                                                        r.Type != ContestRoleType.Judge &&
                                                                        r.UserId == requestModel.UserId &&
                                                                        r.Type == requestModel.Type && r.Id != requestModel.Id &&
                                                                        r.ContestId == requestModel.ContestId);

            if (existedRequests.Any())
            {
                throw new Exception("The same request is already added");
            }

            ContestRequest requestEntity = await _contestRequestsRepository.Get(requestModel.Id) ?? new ContestRequest
            {
                IssueDate = DateTime.UtcNow
            };

            requestEntity.ContestId         = requestModel.ContestId;
            requestEntity.ContestCategoryId = requestModel.ContestCategoryId;
            requestEntity.InstitutionId     = requestModel.InstitutionId;
            requestEntity.Status            = requestModel.Status;
            requestEntity.Type   = requestModel.Type;
            requestEntity.UserId = requestModel.UserId;

            await _contestRequestsRepository.Save(requestEntity);

            var request = await _contestRequestsRepository.Get(requestEntity.Id);

            return(_mapper.Map <ContestRequest, ContestRequestModel>(request));
        }
        public async Task <IActionResult> RemoveContest([FromBody] ContestRequestModel contestResponse)
        {
            try
            {
                await _contestsService.RemoveContest(contestResponse.Id);

                return(Ok(contestResponse.Id));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public async Task <IActionResult> RejectContestRequest([FromBody] ContestRequestModel requestModel)
        {
            try
            {
                var userId  = _httpUserContext.GetUserId();
                var request = await _requestsService.RejectRequest(requestModel.Id, userId);

                return(Ok(request));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }
        public async Task <IActionResult> SaveContestRequest([FromBody] ContestRequestModel requestModel)
        {
            try
            {
                var user = await _httpUserContext.GetUser();

                requestModel.InstitutionId = requestModel.InstitutionId ?? user.InstitutionId;
                var request = await _requestsService.SaveRequest(requestModel);

                return(Ok(request));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex.Message));
            }
        }