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); }
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); }
public Model.Salary SaveEmployeeSalary(Model.Salary salaryForSave) { salaryForSave = _dbContext.Salary.Add(salaryForSave); _dbContext.SaveChanges(); return(salaryForSave); }