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()); }
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)); } }