public async Task <IActionResult> Post([FromBody] OrderRequestModel request) { /*Check if a car variant exists*/ var carVariant = await _variants.FindById(request.VariantId); if (carVariant == null || !carVariant.IsAvailable) { _logger.LogWarning($"VariantId: {request.VariantId} - NotFound."); return(NotFound()); } /*Apply for bank loan*/ BankLoanApiRequest bankLoanApiRequest = _mapper.Map <BankLoanApiRequest>(request); var bankLoanResponce = await _bankLoan.ApplyBankLoanAsync(bankLoanApiRequest); if (bankLoanResponce == null) { return(BadRequest()); } string responseString = await bankLoanResponce.Content.ReadAsStringAsync(); HttpContext.Response.StatusCode = (int)bankLoanResponce.StatusCode; if (!bankLoanResponce.IsSuccessStatusCode) { return(new JsonResult(JsonConvert.DeserializeObject <JObject>(responseString))); } BankLoanApiResponce bankLoan = JsonConvert.DeserializeObject <BankLoanApiResponce>(responseString); /*Add Customer*/ Customer newCustomer = _mapper.Map <Customer>(request); await _customer.Create(newCustomer).ConfigureAwait(false); /*Add CarOrder*/ CarOrder order = _mapper.Map <CarOrder>(carVariant); Customer customer = await _customer.GetByEmail(request.CustomerEmail); order.Created = DateTime.Now; order.CustomerId = customer.Id; order.BankLoanDuration = request.BankLoanDuration; order.BankLoanDownPayment = request.BankLoanDownPayment; order.BankLoanMonthlyPayment = (decimal)bankLoan.MonthlyPayment; await _order.Create(order).ConfigureAwait(false); /*building response*/ OrderApiResponce response = _mapper.Map <OrderApiResponce>(carVariant); response.BankLoanDuration = request.BankLoanDuration; response.BankLoanDownPament = request.BankLoanDownPayment; response.BankLoanMonthlyPayment = (decimal)bankLoan.MonthlyPayment; return(new JsonResult(response)); }
public async Task <IActionResult> Get([FromQuery] BankLoanApiRequest request) { _logger.LogInformation($"Query with params: {JsonConvert.SerializeObject(request)}"); var response = await _bankLoan.ApplyBankLoanAsync(request); if (response == null) { _logger.LogWarning($"VariantId: {request.VariantId} - NotFound."); return(NotFound()); } string responseString = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) { _logger.LogWarning(responseString); HttpContext.Response.StatusCode = (int)response.StatusCode; return(new JsonResult(JsonConvert.DeserializeObject <JObject>(responseString))); } return(new JsonResult(JsonConvert.DeserializeObject <JObject>(responseString))); }