Exemplo n.º 1
0
        // 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));
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
 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));
 }
Exemplo n.º 5
0
 public abstract IPayslip CreateTaxedPayslip(ITaxableEmployee taxableEmployee);