Пример #1
0
        public static IEnumerable <SalaryModel> GetSalary(ITermsManager termsManager, IEmployeeRateRspManager employeeRateRspManager,
                                                          IEmployeesManager employeeManager, DateTime fromDate, DateTime toDate)
        {
            var result = new List <SalaryModel>();

            var rates     = employeeRateRspManager.GetEntities(o => o.SalaryTypes == SalaryTypes.Monthly).ToList(); //TODO delete check ?
            var employees = employeeManager.GetEntities().ToList();

            foreach (var employee in employees)
            {
                double amount = 0;
                for (var date = fromDate; date < toDate; date = date.AddMonths(1))
                {
                    var rate = rates.Where(o => o.EmployeeId == employee.Id && o.FromDate <= date && date <= o.ToDate).FirstOrDefault();

                    if (rate != null)
                    {
                        amount += rate.Salary;
                    }
                }

                result.Add(new SalaryModel()
                {
                    Id           = employee.Id,
                    employeeName = employee.Name,
                    amountString = amount.ToString("N2") + " EUR",
                    amount       = amount,
                });
            }

            var workHours = WorkHoursHelper.GetWorkHours(termsManager, employeeRateRspManager, employeeManager, fromDate, toDate, null);

            foreach (var group in workHours.GroupBy(o => o.employeeId))
            {
                var model  = result.FirstOrDefault(o => o.Id == group.Key);
                var amount = group.Sum(o => o.amount);
                if (model == null)
                {
                    model = new SalaryModel()
                    {
                        Id           = group.Key,
                        employeeName = employees.FirstOrDefault(o => o.Id == group.Key).Name,
                        amountString = amount.ToString("N2") + " EUR",
                        amount       = amount,
                    };

                    result.Add(model);
                }
                else
                {
                    model.amount      += amount;
                    model.amountString = model.amount.ToString("N2") + " EUR";
                }
            }

            return(result);
        }
Пример #2
0
        public static IEnumerable<SalaryModel> GetSalary(ITermsManager termsManager, IEmployeeRateRspManager employeeRateRspManager, 
            IEmployeesManager employeeManager, DateTime fromDate, DateTime toDate)
        {
            var result = new List<SalaryModel>();

            var rates = employeeRateRspManager.GetEntities(o => o.SalaryTypes == SalaryTypes.Monthly).ToList(); //TODO delete check ?
            var employees = employeeManager.GetEntities().ToList();

            foreach (var employee in employees)
            {
                double amount = 0;
                for (var date = fromDate; date < toDate; date = date.AddMonths(1))
                {
                    var rate = rates.Where(o => o.EmployeeId == employee.Id && o.FromDate <= date && date <= o.ToDate).FirstOrDefault();
                    
                    if(rate != null)
                    {
                        amount += rate.Salary;
                    }
                }

                result.Add(new SalaryModel()
                {
                    Id = employee.Id,
                    employeeName = employee.Name,
                    amountString = amount.ToString("N2") + " EUR",
                    amount = amount,
                });
            }

            var workHours = WorkHoursHelper.GetWorkHours(termsManager, employeeRateRspManager, employeeManager, fromDate, toDate, null);

            foreach (var group in workHours.GroupBy(o => o.employeeId))
            {
                var model = result.FirstOrDefault(o => o.Id == group.Key);
                var amount = group.Sum(o => o.amount);
                if (model == null)
                {
                    model = new SalaryModel()
                    {
                        Id = group.Key,
                        employeeName = employees.FirstOrDefault(o => o.Id == group.Key).Name,
                        amountString = amount.ToString("N2") + " EUR",
                        amount = amount,
                    };

                    result.Add(model);
                }
                else
                {
                    model.amount += amount;
                    model.amountString = model.amount.ToString("N2") + " EUR";
                }
            }

            return result;
        }
Пример #3
0
        public static IEnumerable<WorkHoursModel> GetWorkHours(ITermsManager termsManager, IEmployeeRateRspManager employeeRateRspManager,
            IEmployeesManager employeeManager,
            DateTime fromDate, DateTime toDate, int? employeeId)
        {
            var result = new List<WorkHoursModel>();

            var rates = employeeRateRspManager.GetEntities(o => o.SalaryTypes == SalaryTypes.Hour).ToList();
            var employees = employeeManager.GetEntities().ToList();

            var terms = termsManager.GetEntities(o => o.Date >= fromDate && o.Date <= toDate).ToList();

            foreach (var term in terms)
            {
                var termEmployees = term.TermEmployees.Where(o => !o.DeleteDate.HasValue);
                if (employeeId.HasValue)
                {
                    termEmployees = termEmployees.Where(o => o.EmployeeId == employeeId.Value);
                }

                foreach (var termEmployee in termEmployees.ToList())
                {
                    var rate = rates.Where(o => o.EmployeeId == termEmployee.EmployeeId && o.FromDate <= term.Date && term.Date <= o.ToDate).FirstOrDefault();
                    double amount = 0;

                    var startTime = term.Date;
                    var endTime = term.Date.AddMinutes(term.Duration);

                    if (term.BeginTrip.HasValue)
                    {
                        startTime = term.BeginTrip.Value;
                    }

                    if(term.EndReturnTrip.HasValue)
                    {
                        endTime = term.EndReturnTrip.Value;
                    }
                    else if(term.EndWork.HasValue)
                    {
                        endTime = term.EndWork.Value;
                    }

                    var duration = Math.Round((endTime - startTime).TotalMinutes);

                    if(rate != null)
                    {
                        amount = (rate.Salary / (double)60) * duration;
                    }

                    result.Add(new WorkHoursModel()
                    {
                        Id = termEmployee.Id,
                        employeeId = termEmployee.EmployeeId,
                        employeeName = termEmployee.Employees.Name,
                        amountString = amount.ToString("N2") + " EUR",
                        amount = amount,
                        duration = String.Format("{0} Min.", duration),
                        date = term.Date,
                    });
                }
            }

            return result;
        }
Пример #4
0
        public static IEnumerable <WorkHoursModel> GetWorkHours(ITermsManager termsManager, IEmployeeRateRspManager employeeRateRspManager,
                                                                IEmployeesManager employeeManager,
                                                                DateTime fromDate, DateTime toDate, int?employeeId)
        {
            var result = new List <WorkHoursModel>();

            var rates     = employeeRateRspManager.GetEntities(o => o.SalaryTypes == SalaryTypes.Hour).ToList();
            var employees = employeeManager.GetEntities().ToList();

            var terms = termsManager.GetEntities(o => o.Date >= fromDate && o.Date <= toDate).ToList();

            foreach (var term in terms)
            {
                var termEmployees = term.TermEmployees.Where(o => !o.DeleteDate.HasValue);
                if (employeeId.HasValue)
                {
                    termEmployees = termEmployees.Where(o => o.EmployeeId == employeeId.Value);
                }

                foreach (var termEmployee in termEmployees.ToList())
                {
                    var    rate   = rates.Where(o => o.EmployeeId == termEmployee.EmployeeId && o.FromDate <= term.Date && term.Date <= o.ToDate).FirstOrDefault();
                    double amount = 0;

                    var startTime = term.Date;
                    var endTime   = term.Date.AddMinutes(term.Duration);

                    if (term.BeginTrip.HasValue)
                    {
                        startTime = term.BeginTrip.Value;
                    }

                    if (term.EndReturnTrip.HasValue)
                    {
                        endTime = term.EndReturnTrip.Value;
                    }
                    else if (term.EndWork.HasValue)
                    {
                        endTime = term.EndWork.Value;
                    }

                    var duration = Math.Round((endTime - startTime).TotalMinutes);

                    if (rate != null)
                    {
                        amount = (rate.Salary / (double)60) * duration;
                    }

                    result.Add(new WorkHoursModel()
                    {
                        Id           = termEmployee.Id,
                        employeeId   = termEmployee.EmployeeId,
                        employeeName = termEmployee.Employees.Name,
                        amountString = amount.ToString("N2") + " EUR",
                        amount       = amount,
                        duration     = String.Format("{0} Min.", duration),
                        date         = term.Date,
                    });
                }
            }

            return(result);
        }