public void CalculateDeductionsIreland() { // Arrange var controller = new HomePayController(); var employeeRequest = new HomePayCalculateRequest(); employeeRequest.HourlyRate = 50.0m; employeeRequest.HoursWorked = 40; employeeRequest.EmployeeLocation = "Ireland"; // Act var response = controller.CalculateGrossAmount(employeeRequest); response.Wait(); var result = response.Result; // Assert var objResult = result as OkObjectResult; Assert.NotNull(objResult); var homepayResponse = objResult.Value as HomePayCalculateResponse; Assert.NotNull(homepayResponse); Assert.True(homepayResponse.EmployeeLocation == "Ireland"); Assert.True(homepayResponse.GrossAmount == 2000.0m); Assert.True(homepayResponse.IncomeTax == 710.0m); Assert.True(homepayResponse.UniversalSocialCharge == 155.0m); Assert.True(homepayResponse.Pension == 80.0m); Assert.True(homepayResponse.NetAmount == 1055.0m); //2000.0m - 710.0m - 155.0m - 80.0m }
public void CalculateDeductionsItaly() { // Arrange var controller = new HomePayController(); var employeeRequest = new HomePayCalculateRequest(); employeeRequest.HourlyRate = 50.0m; employeeRequest.HoursWorked = 40; employeeRequest.EmployeeLocation = "Italy"; // Act var response = controller.CalculateGrossAmount(employeeRequest); response.Wait(); var result = response.Result; // Assert var objResult = result as OkObjectResult; Assert.NotNull(objResult); var homepayResponse = objResult.Value as HomePayCalculateResponse; Assert.NotNull(homepayResponse); Assert.True(homepayResponse.EmployeeLocation == "Italy"); Assert.True(homepayResponse.GrossAmount == 2000.0m); Assert.True(homepayResponse.IncomeTax == (567.50m)); //500.0m + 67.50m - Income Tax and INPS Contribution Assert.True(homepayResponse.UniversalSocialCharge == 0m); Assert.True(homepayResponse.Pension == 0m); Assert.True(homepayResponse.NetAmount == 1432.50m); //2000.0m - 567.50m }
public void CalculateGrossAmout() { // Arrange var controller = new HomePayController(); var employeeRequest = new HomePayCalculateRequest(); employeeRequest.HourlyRate = 10.0m; employeeRequest.HoursWorked = 40; employeeRequest.EmployeeLocation = "Ireland"; // Act var response = controller.CalculateGrossAmount(employeeRequest); response.Wait(); var result = response.Result; // Assert var objResult = result as OkObjectResult; Assert.NotNull(objResult); var homepayResponse = objResult.Value as HomePayCalculateResponse; Assert.NotNull(homepayResponse); Assert.True(homepayResponse.EmployeeLocation == "Ireland"); Assert.True(homepayResponse.GrossAmount == 400.0m); }
private void validateRequest(HomePayCalculateRequest request) { if (string.IsNullOrWhiteSpace(request.EmployeeLocation)) { ModelState.AddModelError("EmployeeLocation", "Location is mandatory"); } }
public override HomePayCalculateResponse CalculateHomePay(HomePayCalculateRequest request) { var totalGross = this.GetGrossValue(request); response.GrossAmount = totalGross; if (totalGross > 400) { response.IncomeTax = (400m * 0.25m) + ((totalGross - 400m) * 0.32m); } response.Pension = totalGross * 0.02m; response.NetAmount = this.GetNetValue(); return(response); }
public override HomePayCalculateResponse CalculateHomePay(HomePayCalculateRequest request) { var totalGross = this.GetGrossValue(request); response.GrossAmount = totalGross; response.IncomeTax = totalGross * 0.25m; if (totalGross > 500) { int INPSRate = (int)((totalGross - 500m) / 100.0m); var inpstax = (500m * 0.09m) + ((totalGross - 500m) * (0.001m * INPSRate)); response.IncomeTax += inpstax; } response.NetAmount = this.GetNetValue(); return(response); }
public override HomePayCalculateResponse CalculateHomePay(HomePayCalculateRequest request) { var totalGross = this.GetGrossValue(request); response.GrossAmount = totalGross; if (totalGross > 600) { response.IncomeTax = (600m * 0.25m) + ((totalGross - 600m) * 0.4m); } if (totalGross > 500) { response.UniversalSocialCharge = (500m * 0.07m) + ((totalGross - 500m) * 0.08m); } response.Pension = totalGross * 0.04m; response.NetAmount = this.GetNetValue(); return(response); }
public async Task <IActionResult> CalculateGrossAmount(HomePayCalculateRequest employeeRequest) { validateRequest(employeeRequest); if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var country = employeeRequest.EmployeeLocation; var selectedProvider = this.taxProviders.FirstOrDefault(i => i.Country.Equals(country, StringComparison.InvariantCultureIgnoreCase)); if (selectedProvider == null) { return(BadRequest("Invalid Country")); } var response = selectedProvider.CalculateHomePay(employeeRequest); return(Ok(response)); }
protected decimal GetGrossValue(HomePayCalculateRequest request) { return(request.HourlyRate * request.HoursWorked); }
public abstract HomePayCalculateResponse CalculateHomePay(HomePayCalculateRequest request);