コード例 #1
0
        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));
            }
        }
コード例 #2
0
        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());
        }