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));
            };
        }
Exemple #2
0
        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>());
        }
Exemple #3
0
        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));
            }
        }