public JsonResult Get([FromQuery] string price, [FromQuery] string zipCode) // I decided to take params in as strings to allow validation to happen under my control { JsonResult response; try { response = new JsonResult(_taxCalculatorService.CalculateTax(_taxInputUtility.ValidatePrice(price), _taxService.GetByZipCode(_taxInputUtility.ValidateZipCode(zipCode)))); } catch (ArgumentException e) { response = new JsonResult(new ErrorResponse(e.Message)); } return(response); }
public IPaySlip CreatePaySlip(IEmployee employee) { var paySlip = new PaySlip { PayPeriod = employee.PayPeriod, EmployeeName = employee.FullName }; var unRoundedGrossIncome = CalculateGrossIncome(employee.AnnualSalary); paySlip.GrossIncome = _roundingService.ApplyRounding(unRoundedGrossIncome); var unRoundedIncomeTax = _taxCalculatorService.CalculateTax(employee.AnnualSalary); paySlip.IncomeTax = _roundingService.ApplyRounding(unRoundedIncomeTax); var unRoundedSuper = CalculateSuper(paySlip.GrossIncome, employee.SuperRate); paySlip.SuperAmount = _roundingService.ApplyRounding(unRoundedSuper); return(paySlip); }