public void GetBenefitsCostBreakdownByEmployeeId_CanHandleNull(decimal baseDeductionCost, decimal discount, int numOfDeductionModels, decimal expYearlyCost) { EmployeeSalaryDataModel employeeSalaryDataModel = new EmployeeSalaryDataModel(); List <BenefitCostDataModel> benefitDeductionModels = new List <BenefitCostDataModel>(); for (int i = 0; i < numOfDeductionModels; i++) { benefitDeductionModels.Add(new BenefitCostDataModel { BaseDeductionCost = baseDeductionCost, DiscountAmount = discount }); } BenefitsBreakdownModel expResult = new BenefitsBreakdownModel { SalaryPerYear = employeeSalaryDataModel.SalaryByPayPeriod * employeeSalaryDataModel.PaymentFrequency, SalaryPerPayPeriod = employeeSalaryDataModel.SalaryByPayPeriod, BenefitsCostPerYear = expYearlyCost, BenefitsCostPerPayPeriod = expYearlyCost / employeeSalaryDataModel.PaymentFrequency, PayPeriodFrequency = "Bi-weekly" }; var result = sut.GetBenefitsBreaksown(employeeSalaryDataModel, benefitDeductionModels); Assert.AreEqual(expResult.BenefitsCostPerPayPeriod, result.BenefitsCostPerPayPeriod); Assert.AreEqual(expResult.BenefitsCostPerYear, result.BenefitsCostPerYear); Assert.AreEqual(expResult.SalaryPerPayPeriod, result.SalaryPerPayPeriod); Assert.AreEqual(expResult.SalaryPerYear, result.SalaryPerYear); Assert.AreEqual(expResult.PayPeriodFrequency, result.PayPeriodFrequency); }
public BenefitsBreakdownModel GetBenefitsBreaksown(EmployeeSalaryDataModel employeeSalaryDataModel, IEnumerable <BenefitCostDataModel> benefitDeductionModels) { if (employeeSalaryDataModel == null || benefitDeductionModels == null) { return(null); } decimal yearlyBenefitsCost = GetYearlyTotal(benefitDeductionModels); return(new BenefitsBreakdownModel() { BenefitsCostPerYear = yearlyBenefitsCost, BenefitsCostPerPayPeriod = yearlyBenefitsCost / employeeSalaryDataModel.PaymentFrequency, SalaryPerYear = employeeSalaryDataModel.SalaryByPayPeriod * employeeSalaryDataModel.PaymentFrequency, PayPeriodFrequency = GetPaymentFrequencyVerbiage(employeeSalaryDataModel.PaymentFrequency), SalaryPerPayPeriod = employeeSalaryDataModel.SalaryByPayPeriod, }); }
public async Task <BenefitsBreakdownModel> GetBenefitsCostBreakdownByEmployeeId(int employeeId) { try { if (employeeId > 0) { IEnumerable <BenefitCostDataModel> benefitCostDataModels = await benefitsRepository.GetBenefitsCostsByEmployeeId(employeeId); EmployeeSalaryDataModel employeeSalaryDataModel = await employeeRepository.GetEmployeeSalaryData(employeeId); return(benefitsBreakdown.GetBenefitsBreaksown(employeeSalaryDataModel, benefitCostDataModels)); } return(null); } catch (Exception ex) { await loggerRepository.Log(ex).ConfigureAwait(false); throw; } }