protected GetBenefitsDataResults GetBenefitsDataWithoutEmployeeDiscount() { var benefitsData = new GetBenefitsDataResults(); benefitsData.Employee = new Employee { Id = 3, FirstName = "David", LastName = "Taylor", NumberOfPayPeriods = 52, Salary = 92000 }; benefitsData.Dependent = new List <Dependent> { new Dependent { Id = 2, FirstName = "Jamie", LastName = "Taylor", Relationship = "Daughter", EmployeeId = 2 }, new Dependent { Id = 2, FirstName = "Jamie", LastName = "Taylor", Relationship = "Daughter", EmployeeId = 2 } }; benefitsData.Benefit = new Benefit { Id = 1, EmployeeCost = 1000, DependentCost = 500 }; benefitsData.Promotions = new List <Promotions> { new Promotions { Id = 1, PromotionName = "Name", PromotionTrigger = "A", DiscountAmount = 0.1M } }; return(benefitsData); }
public BenefitsSummary Run(GetBenefitsDataResults data) { var results = new BenefitsSummary() { EmployeeFirstName = data.Employee.FirstName, EmployeeLastName = data.Employee.LastName, EmployeeCostOfBenefits = data.Benefit.EmployeeCost, DependentsList = data.Dependent, PromotionsList = data.Promotions, DependentCostOfBenefits = data.Benefit.DependentCost, EmployeeFullName = data.Employee.FirstName + " " + data.Employee.LastName, DiscountAmount = data.Promotions.Select(x => x.DiscountAmount).FirstOrDefault() }; if (data.Promotions != null) { results.DiscountTrigger = data.Promotions.Select(x => x.PromotionTrigger).FirstOrDefault(); } var currentPromotions = _determinePromotions.Run(results.PromotionsList); results.EmployeeDiscountAmount = currentPromotions.Select(x => x.LetterPromo.GetDiscount(results.EmployeeLastName, results.DiscountTrigger, results.DiscountAmount)).FirstOrDefault(); if (data.Promotions != null) { results.DiscountAmount = data.Promotions.Select(x => x.DiscountAmount).FirstOrDefault(); } results.EmployeeFullName = GetEmployeeFullName(data); results.DependentCostBeforeDiscount = GetDependentCostBeforeDiscount(data); results.TotalCostBeforeDiscount = GetTotalBeforeDiscount(results); //results.EmployeeDiscountAmount = GetLastNameDiscountAmount(results.EmployeeLastName, results.PromotionsList); if (results.DependentsList != null) { results.DependentDiscountAmount = GetLastNameDiscountAmount(results.DependentsList.Select(x => x.LastName), results.PromotionsList); } results.CalculatedEmployeeDiscount = CalculateDiscountAmount(results.EmployeeCostOfBenefits, results.EmployeeDiscountAmount); results.CalculatedDependentDiscount = CalculateDiscountAmount(results.DependentCostOfBenefits, results.DependentDiscountAmount); results.TotalDiscountAmount = GetTotalDiscountAmount(results); results.TotalAfterDiscount = GetTotalAfterDiscount(results); return(results); }
public decimal GetDependentCostBeforeDiscount(GetBenefitsDataResults data) { var value = 0M; if (data.Dependent == null || !data.Dependent.Any()) { return(value); } foreach (Dependent d in data.Dependent) { value += data.Benefit.DependentCost; } return(value); }
public string GetEmployeeFullName(GetBenefitsDataResults data) { return(data.Employee.FirstName + " " + data.Employee.LastName); }