public IEnumerable <HourPerWeek> GetEmployeesForWeeks(int projectId) { List <EmployeeProjectHourPerWeeks> employeeProjectHourPerWeeks = context.EmployeeProjectHourPerWeeks.Include(e => e.HoursPerWeeks).Include(e => e.Project).Where(e => e.Project.Id == projectId).ToList(); Project project = FindProjectById(projectId); List <HourPerWeek> hours = new List <HourPerWeek>(); for (int j = 0; j < project.NumberOfWeeks; j++) { HourPerWeek hourPerWeek = new HourPerWeek(); hourPerWeek.Hour = 0; for (int i = 0; i < employeeProjectHourPerWeeks.Count; i++) { hourPerWeek.Hour += employeeProjectHourPerWeeks[i].HoursPerWeeks[j].Hour; } hours.Add(hourPerWeek); } return(hours); }
public IEnumerable <HourPerWeek> GetEmployeesHoursPerWeek(int employeeId, int projectId) { List <EmployeeProjectHourPerWeeks> employeeProjectHourPerWeeks = context.EmployeeProjectHourPerWeeks.Include(e => e.Employee).Include(e => e.Project).Include(e => e.HoursPerWeeks).Where(e => e.Employee.Id == employeeId && e.Project.Id == projectId).ToList(); Employee employee = employeeServices.FindEmployeeById(employeeId); Project project = FindProjectById(projectId); List <HourPerWeek> hoursPerWeeks = new List <HourPerWeek>(); int startOfProjectInCalendarWeek = HelperServices.GetWeekOfYear(project.StartDate); int endOfProjectInCalendarWeek = (startOfProjectInCalendarWeek + Convert.ToInt32(project.NumberOfWeeks)); int endOfTheInvestigation = endOfProjectInCalendarWeek; for (int i = startOfProjectInCalendarWeek; i < endOfTheInvestigation; i++) { HourPerWeek hourPerWeek = new HourPerWeek(); hourPerWeek.Hour = employee.HoursPerWeek - employee.OtherThingsToDoForWeeks; foreach (var projectForWeeks in employeeProjectHourPerWeeks) { int startOfThisProject = HelperServices.GetWeekOfYear(projectForWeeks.Project.StartDate); int endOfThisProject = HelperServices.GetWeekOfYear(projectForWeeks.Project.DueDate); if (endOfThisProject < endOfProjectInCalendarWeek) { endOfTheInvestigation = endOfThisProject; } if (startOfThisProject <= i) { int incrementWeek = i - startOfThisProject; hourPerWeek.Hour -= projectForWeeks.HoursPerWeeks[incrementWeek].Hour; } } hoursPerWeeks.Add(hourPerWeek); } return(hoursPerWeeks); }