public async Task <IActionResult> Decline([FromBody] RequestGroupDeclineModel model) { if (model == null) { return(ReturnError(ErrorCodes.IncomingPayloadIsMissing)); } try { var brokerId = User.TryGetBrokerId().Value; var apiUserId = User.UserId(); var requestGroup = await _apiOrderService.CheckOrderGroupAndGetRequestGroup(model.OrderGroupNumber, brokerId); //Possibly the user should be added, if not found?? var user = await _apiUserService.GetBrokerUser(model.CallingUser, brokerId); if (!(requestGroup.Status == RequestStatus.Created || requestGroup.Status == RequestStatus.Received)) { return(ReturnError(ErrorCodes.RequestGroupNotInCorrectState)); } requestGroup = await _dbContext.RequestGroups.GetRequestGroupToProcessById(requestGroup.RequestGroupId); await _requestService.DeclineGroup(requestGroup, _timeService.SwedenNow, user?.Id ?? apiUserId, (user != null ? (int?)apiUserId : null), model.Message); await _dbContext.SaveChangesAsync(); return(Ok(new ResponseBase())); } catch (InvalidApiCallException ex) { return(ReturnError(ex.ErrorCode)); } }
public async Task <IActionResult> Decline(RequestGroupDeclineModel model) { var requestGroup = await _dbContext.RequestGroups.GetRequestGroupToProcessById(model.DeniedRequestGroupId); if ((await _authorizationService.AuthorizeAsync(User, requestGroup, Policies.Accept)).Succeeded) { if (!requestGroup.IsToBeProcessedByBroker) { _logger.LogWarning("Wrong status when trying to process request group. Status: {request.Status}, RequestGroupId: {request.RequestGroupId}", requestGroup.Status, requestGroup.RequestGroupId); return(RedirectToAction(nameof(View), new { model.DeniedRequestGroupId })); } await _requestService.DeclineGroup(requestGroup, _clock.SwedenNow, User.GetUserId(), User.TryGetImpersonatorId(), model.DenyMessage); await _dbContext.SaveChangesAsync(); return(RedirectToAction(nameof(View), new { id = model.DeniedRequestGroupId })); } return(Forbid()); }