示例#1
0
        public ActionResult Calculate(BenefitsEmployeeModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("Calculate", model));
            }

            var benefitsEmployee = new BenefitEmployee(model.Employee.FirstName, model.Employee.LastName);

            if (model.Dependents != null && model.Dependents.Count > 0)
            {
                var dependents = new List <PaylocityBenefitsChallenge.Entities.Person>();
                foreach (var dependent in model.Dependents)
                {
                    var employeeDependent = new Person(dependent.FirstName, dependent.LastName);
                    dependents.Add(employeeDependent);
                }

                benefitsEmployee.Dependents = dependents;
            }

            var response = benefitsMgr.Value.GetEmployeeCost(benefitsEmployee);

            EmployeeCostModel responseModel = new EmployeeCostModel();

            responseModel.TotalBenefitCost         = response.TotalBenefitsCostPerYear;
            responseModel.EmployeeCostPerPayPeriod = response.TotalEmployeeCostPerPayPeriod;
            responseModel.EmployeeCostPerYear      = response.TotalEmployeeCostPerYear;

            return(View("ViewEmployeeCost", responseModel));
        }
示例#2
0
        public decimal GetTotalBenefitsCostsForEmployee(BenefitEmployee employeeData)
        {
            decimal cost = 0.0m;

            try
            {
                cost = GetBenefitsCost(employeeData.Employee);

                costResult.BenefitCostForEmployeeOnly = cost;

                if (employeeData.Dependents != null && employeeData.Dependents.Count > 0)
                {
                    foreach (var dependent in employeeData.Dependents)
                    {
                        costResult.BenefitCostForDependentsOnly += GetBenefitsCost(dependent);
                    }
                }

                cost += costResult.BenefitCostForDependentsOnly;
            }
            catch (Exception ex)
            {
                cost = -1.0m;
                throw;
            }

            return(cost);
        }
示例#3
0
        public void Test_GetBenefitsCostForEmployeeOnlyWithDiscount()
        {
            BenefitEmployee employee = new BenefitEmployee("Aaron", "Smith");

            BenefitsManager benefitsManager = new BenefitsManager();
            var             result          = benefitsManager.GetTotalBenefitsCostsForEmployee(employee);

            Assert.That(result, Is.EqualTo(900.00m));

            return;
        }
示例#4
0
        public void Test_GetBenefitsCostForEmployeeOnly()
        {
            BenefitEmployee employee = new BenefitEmployee("John", "Doe");

            BenefitsManager benefitsManager = new BenefitsManager();
            var             result          = benefitsManager.GetTotalBenefitsCostsForEmployee(employee);

            Assert.That(result, Is.EqualTo(1000.00m));

            return;
        }
示例#5
0
        public void Test_GetBenefitsCostForEmployeeWithOneDependentBothDiscounts()
        {
            BenefitEmployee employee = new BenefitEmployee("Anna", "Waters");

            employee.Dependents = new List <Person>();
            employee.Dependents.Add(new Person("Andy", "Kirk"));

            BenefitsManager benefitsManager = new BenefitsManager();
            var             result          = benefitsManager.GetTotalBenefitsCostsForEmployee(employee);

            Assert.That(result, Is.EqualTo(1350.00m));

            return;
        }
示例#6
0
        public void Test_GetBenefitsCostForEmployeeWithOneDependentNoDiscount()
        {
            BenefitEmployee employee = new BenefitEmployee("Sarah", "Lee");

            employee.Dependents = new List <Person>();
            employee.Dependents.Add(new Person("Bill", "Jones"));

            BenefitsManager benefitsManager = new BenefitsManager();
            var             result          = benefitsManager.GetTotalBenefitsCostsForEmployee(employee);

            Assert.That(result, Is.EqualTo(1500.00m));

            return;
        }
示例#7
0
        public void Test_GetTotalEmployeeCostData()
        {
            var employee = new BenefitEmployee("test", "person");

            employee.Dependents = new List <Person>();
            employee.Dependents.Add(new Person("dependent", "one"));
            employee.Dependents.Add(new Person("dependent", "two"));
            employee.Dependents.Add(new Person("dependent", "three"));

            BenefitsManager benefitsManager = new BenefitsManager();
            var             result          = benefitsManager.GetEmployeeCost(employee);

            Assert.That(result, Is.EqualTo(52000.00m));
        }
示例#8
0
        public BenefitsCostResult GetEmployeeCost(BenefitEmployee employeeData)
        {
            try
            {
                costResult.TotalBenefitsCostPerYear = GetTotalBenefitsCostsForEmployee(employeeData);

                costResult.TotalEmployeeCostPerPayPeriod =
                    GetEmployeeCostPerPayPeriod(costResult.TotalBenefitsCostPerYear);
                costResult.TotalEmployeeCostPerYear =
                    GetEmployeeCostPerYear(costResult.TotalBenefitsCostPerYear);
            }
            catch (Exception ex)
            {
                costResult.ErrorDetails = ex.Message;
            }

            return(costResult);
        }
示例#9
0
        public void Test_GetBenefitsCostForEmployeeWithFiveDependentsWithDiscounts()
        {
            BenefitEmployee employee = new BenefitEmployee("George", "Wright");

            employee.Dependents = new List <Person>();
            employee.Dependents.Add(new Person("Bob", "Wright"));
            employee.Dependents.Add(new Person("Allen", "Wright"));
            employee.Dependents.Add(new Person("Alice", "Wright"));
            employee.Dependents.Add(new Person("Mary", "Wright"));
            employee.Dependents.Add(new Person("Frank", "Wright"));

            BenefitsManager benefitsManager = new BenefitsManager();
            var             result          = benefitsManager.GetTotalBenefitsCostsForEmployee(employee);

            Assert.That(result, Is.EqualTo(3400.00m));

            return;
        }