public DboProject CreateProject(Project project) { project.ProjectLeader = employeeServices.FindEmployeeById(project.ProjectLeader.Id); project.NumberOfWeeks = HelperServices.GetWeekOfYear(project.DueDate) - HelperServices.GetWeekOfYear(project.StartDate); context.Projects.Add(project); context.SaveChanges(); List <DboSkill> skills = new List <DboSkill>(); foreach (var item in project.ProjectSkills) { Skill skill = context.Skills.Where(s => s.Id == item.SkillId).FirstOrDefault(); DboSkill dboSkill = new DboSkill() { Id = skill.Id, Name = skill.Name }; skills.Add(dboSkill); } DboProject dboProject = (DboProject)project; dboProject.Skills = skills; return(dboProject); }
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); }