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);
        }
Esempio n. 2
0
        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,
            });
        }
Esempio n. 3
0
        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;
            }
        }