示例#1
0
        public async Task <IActionResult> Decline(RequestDeclineModel model)
        {
            var request = await _dbContext.Requests.GetRequestWithContactsById(model.DeniedRequestId);

            if ((await _authorizationService.AuthorizeAsync(User, request, Policies.Accept)).Succeeded)
            {
                try
                {
                    await _requestService.Decline(request, _clock.SwedenNow, User.GetUserId(), User.TryGetImpersonatorId(), model.DenyMessage);
                }
                catch (InvalidOperationException ex)
                {
                    _logger.LogError("Decline for request {model.DeniedRequestId} failed. Message: {ex.Message}", model.DeniedRequestId, ex.Message);
                    return(RedirectToAction("Index", "Home", new { errormessage = ex.Message }));
                }
                _dbContext.SaveChanges();
                return(RedirectToAction("Index", "Home", new { message = "Svar har skickats" }));
            }

            return(Forbid());
        }
示例#2
0
        public async Task <IActionResult> Decline([FromBody] RequestDeclineModel model)
        {
            if (model == null)
            {
                return(ReturnError(ErrorCodes.IncomingPayloadIsMissing));
            }
            try
            {
                var brokerId  = User.TryGetBrokerId().Value;
                var apiUserId = User.UserId();
                var order     = await _apiOrderService.GetOrderAsync(model.OrderNumber, brokerId);

                if (order.OrderGroupId != null)
                {
                    return(ReturnError(ErrorCodes.RequestIsPartOfAGroup));
                }
                var user = await _apiUserService.GetBrokerUser(model.CallingUser, brokerId);

                var request = await _dbContext.Requests.GetActiveRequestForApiWithBrokerAndOrderNumber(model.OrderNumber, User.TryGetBrokerId().Value);

                if (request == null)
                {
                    return(ReturnError(ErrorCodes.RequestNotFound));
                }
                if (!request.IsToBeProcessedByBroker)
                {
                    return(ReturnError(ErrorCodes.RequestNotInCorrectState));
                }
                await _requestService.Decline(request, _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));
            }
        }