public async Task <IActionResult> SetApprovedLimits([FromRoute] long applicationNumber, [FromRoute] int arrangementRequestId, [FromBody] ApprovedLimits command) { try { var application = await _applicationRepository.GetAsync(applicationNumber); if (application == null) { return(NotFound()); } var setApprovedLimits = await _arrangementRequestRepository .SetApprovedLimits(applicationNumber, arrangementRequestId, command, application); if (setApprovedLimits == null) { return(NotFound()); } return(Ok()); } catch (KeyNotFoundException e) { this._logger.LogError(e, "An error occurred while updating Arrangement Request for arrangementRequestId {arrangementRequestId} on application {ApplicationNumber}", arrangementRequestId, applicationNumber); return(BadRequest(new { message = e.Message })); } catch (Exception e) { this._logger.LogError(e, "An error occurred while updating Arrangement Request for arrangementRequestId {arrangementRequestId} on application {ApplicationNumber}", arrangementRequestId, applicationNumber); return(StatusCode(500)); } }
public async Task <ArrangementRequest> SetApprovedLimits(long applicationNumber, int arrangementRequestId, ApprovedLimits command, Application application) { var arrRequest = GetArrangementRequest(applicationNumber, arrangementRequestId); if (arrRequest == null) { return(null); } //set requested parameters if (arrRequest.ApprovedLimits is null) { RequestedValues requestedValues = new RequestedValues(); if (arrRequest is TermLoanRequest termLoan) { requestedValues.Annuity = termLoan.Annuity; if (command.InvoiceAmount != null) { requestedValues.DownpaymentAmount = termLoan.DownpaymentAmount; requestedValues.DownpaymentPercentage = termLoan.DownpaymentPercentage.Value; requestedValues.InvoiceAmount = termLoan.InvoiceAmount; } } if (arrRequest is FinanceServiceArrangementRequest fsaData) { requestedValues.Amount = fsaData.Amount; requestedValues.Term = Utility.GetMonthsFromPeriod(fsaData.Term).ToString(); requestedValues.Napr = fsaData.Napr; } arrRequest.RequestedValues = requestedValues; } //set initial parameteres if (arrRequest is TermLoanRequest tlr) { tlr.Annuity = command.Annuity; if (command.InvoiceAmount != null) { tlr.InvoiceAmount = command.InvoiceAmount.Value; tlr.DownpaymentPercentage = command.DownpaymentPercentage.Value; tlr.DownpaymentAmount = command.DownpaymentAmount.Value; } } if (arrRequest is FinanceServiceArrangementRequest fsa) { fsa.Amount = command.Amount; fsa.Term = Utility.GetMonthsFromPeriod(command.Term).ToString(); } arrRequest.ApprovedLimits = command; var conversionMethod = _configurationService.GetEffective("offer/fee-currency-conversion-method", "Buy to middle").Result; arrRequest.CalculateOffer(application, _priceCalculator, conversionMethod); await _context.SaveEntitiesAsync(); return(arrRequest); }