// GET api/<controller>/5 public System.Web.Http.Results.JsonResult <ITaxableEmployee> Get(int id) { ITaxableEmployee employee = null; if (_mockRepo.Entities.Count >= id) { employee = _mockRepo.Entities[id - 1]; } return(Json(employee)); }
public override IPayslip CreateTaxedPayslip(ITaxableEmployee taxableEmployee) { var payslip = (new PayslipFactory(this.TaxYear)).CreatePayslip(taxableEmployee); switch (taxableEmployee.AnualSalary) { //C# 7.1 case int salary when(salary < 18200): default: payslip.GrossIncome = Math.Round(taxableEmployee.AnualSalary / 12.0, MidpointRounding.AwayFromZero); payslip.IncomeTax = 0; payslip.SuperAmount = Math.Round(taxableEmployee.SuperRate * payslip.GrossIncome / 100, MidpointRounding.AwayFromZero); payslip.NetIncome = payslip.GrossIncome - payslip.IncomeTax; break; case int salary when(salary > 18200 && salary < 37000): payslip.GrossIncome = Math.Round(taxableEmployee.AnualSalary / 12.0, MidpointRounding.AwayFromZero); payslip.IncomeTax = Math.Round(((taxableEmployee.AnualSalary - 18200) * 0.19) / 12.0, MidpointRounding.AwayFromZero); payslip.SuperAmount = Math.Round(taxableEmployee.SuperRate * payslip.GrossIncome / 100, MidpointRounding.AwayFromZero); payslip.NetIncome = payslip.GrossIncome - payslip.IncomeTax; break; case int salary when(salary > 37000 && salary < 87000): payslip.GrossIncome = Math.Round(taxableEmployee.AnualSalary / 12.0, MidpointRounding.AwayFromZero); payslip.IncomeTax = Math.Round((3572 + (taxableEmployee.AnualSalary - 37000) * .325) / 12.0, MidpointRounding.AwayFromZero); payslip.SuperAmount = Math.Round(taxableEmployee.SuperRate * payslip.GrossIncome / 100, MidpointRounding.AwayFromZero); payslip.NetIncome = payslip.GrossIncome - payslip.IncomeTax; break; case int salary when(salary > 87000 && salary < 180000): payslip.GrossIncome = Math.Round(taxableEmployee.AnualSalary / 12.0, MidpointRounding.AwayFromZero); payslip.IncomeTax = Math.Round((19822 + (taxableEmployee.AnualSalary - 87000) * .37) / 12.0, MidpointRounding.AwayFromZero); payslip.SuperAmount = Math.Round(taxableEmployee.SuperRate * payslip.GrossIncome / 100, MidpointRounding.AwayFromZero); payslip.NetIncome = payslip.GrossIncome - payslip.IncomeTax; break; case int salary when(salary > 180000): payslip.GrossIncome = Math.Round(taxableEmployee.AnualSalary / 12.0, MidpointRounding.AwayFromZero); payslip.IncomeTax = Math.Round((54232 + (taxableEmployee.AnualSalary - 180000) * .45) / 12.0, MidpointRounding.AwayFromZero); payslip.SuperAmount = Math.Round(taxableEmployee.SuperRate * payslip.GrossIncome / 100, MidpointRounding.AwayFromZero); payslip.NetIncome = payslip.GrossIncome - payslip.IncomeTax; break; } return(payslip); }
public IPayslip CreatePayslip(ITaxableEmployee taxableEmployee) { switch (taxYear) { case 2017: default: return(new Payslip2017() { FullName = string.Format("{0} {1}", taxableEmployee.FirstName, taxableEmployee.LastName), PayPeriod = taxableEmployee.PaymentStartDate.HasValue ? taxableEmployee.PaymentStartDate.Value : default(System.DateTime), }); } }
public IPayslip GeneratePayslip(ITaxableEmployee taxableEmployee) { return(this.taxStrategy.CreateTaxedPayslip(taxableEmployee)); }
public abstract IPayslip CreateTaxedPayslip(ITaxableEmployee taxableEmployee);