public async Task <ActionResult <AnnualTaxDTO> > Post(RequestAnnualTaxDTO input) { try { var taxType = _taxTypeService.GetTaxType(input.PostalCode); var taxAmount = await _taxCalculatorService.CalculateTaxAsync(taxType, input.AnnualIncome, input.PostalCode); NewAnnualTaxCommand command = new NewAnnualTaxCommand { CalculatedAt = DateTime.Now, PostalCode = input.PostalCode, AnnualIncome = input.AnnualIncome, CalculatedTax = taxAmount }; var annualTax = await Mediator.Send(command); //This should be done with AutoMapper var annualTaxDto = new AnnualTaxDTO() { Id = annualTax.Id, CalculatedAt = annualTax.CalculatedAt, PostalCode = annualTax.PostalCode, AnnualIncome = annualTax.AnnualIncome, CalculatedTax = annualTax.CalculatedTax }; return(annualTaxDto); } catch (Exception ex) { return(BadRequest(ex.Message)); }; }
public async Task <AnnualTaxDTO> PostTaxCalculationAsync(RequestAnnualTaxDTO requestAnnualTaxDTO) { var response = await _httpClient.PostAsJsonAsync($"/api/tax", requestAnnualTaxDTO); if (response.StatusCode == HttpStatusCode.NotFound || response.StatusCode == HttpStatusCode.BadRequest) { return(null); } response.EnsureSuccessStatusCode(); return(await response.Content.ReadAsAsync <AnnualTaxDTO>()); }
public async Task <IActionResult> Index(TaxCalculatorModel taxCalculatorModel) { try { if (ModelState.IsValid) { var input = new RequestAnnualTaxDTO { AnnualIncome = taxCalculatorModel.AnnualIncome, PostalCode = taxCalculatorModel.PostalCode }; var output = await _apiClient.PostTaxCalculationAsync(input); taxCalculatorModel.ResponseMessage = "Your Tax amount is " + output.CalculatedTax; } return(View(taxCalculatorModel)); } catch (Exception ex) { //This should handle errors better _logger.LogError(ex.Message); taxCalculatorModel.ResponseMessage = "Something has gone Wrong. Please try again"; return(View(taxCalculatorModel)); } }