示例#1
0
        public Model.Salary CalculateSalary(Employee currentEmployee, DateTime onDate)
        {
            Model.Salary curSalary = null;
            foreach (Model.Salary s in currentEmployee.Salary)
            {
                if (s.DateFrom.ToDateTime() <= onDate && s.DateTo.ToDateTime() >= onDate)
                {
                    curSalary = s;
                    break;
                }
            }
            if (curSalary != null)
            {
                return(curSalary);
            }

            double totalPercent = _getTotalPercent(currentEmployee, onDate);

            double salaryRate = currentEmployee.Category.SalaryRate * totalPercent;

            int dateFrom = _getFromDate(currentEmployee.Salary, onDate);

            dateFrom = dateFrom < currentEmployee.BeginDate ? currentEmployee.BeginDate : dateFrom;

            curSalary = new Model.Salary
            {
                EmployeeId = currentEmployee.Id,
                SalaryRate = salaryRate,
                CurrencyId = currentEmployee.Category.CurrencyId,
                DateFrom   = dateFrom,
                DateTo     = onDate.ToUnixTimeStamp(),
                Currency   = currentEmployee.Category.Currency
            };
            return(curSalary);
        }
示例#2
0
        public IEnumerable <Model.Salary> CalculateAllSalary(IEnumerable <Employee> employees, DateTime onDate)
        {
            List <Model.Salary> totalSalary = new List <Model.Salary>();
            double value = 100d / employees.Count();

            employees.ToList().ForEach(f =>
            {
                Model.Salary tmpSalary = CalculateSalary(f, onDate);
                totalSalary.Add(tmpSalary);
                OneCalculate?.Invoke(this, value);
            });
            return(totalSalary);
        }
示例#3
0
 public Model.Salary SaveEmployeeSalary(Model.Salary salaryForSave)
 {
     salaryForSave = _dbContext.Salary.Add(salaryForSave);
     _dbContext.SaveChanges();
     return(salaryForSave);
 }