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);
        }