/// <summary> /// IMPLEMENTUJTE TUTO METODU /// Nastavte projekty programatorum, kteri aktualne nepracuji na zadnem projektu. /// Pro kazdeho volneho programatora hledejte projekt k prirazeni nasledujicim zpusobem: /// - Pokud existuje nejaky projekt v ProjectsWaiting, vyberte prvni takovy. /// Nezapomente mu zmenit stav a presunout jej do ProjectsCurrent. /// - Pokud ne, vyberte takovy projekt z ProjectsCurrent, na kterem zbyva nejvice /// nedodelane prace. /// </summary> public void AssignNewProjects() { for (int i = 0; i < Programmers.Count; i++) { if (Programmers[i].Project == null) { if (ProjectsWaiting.Count > 0) { var getFirstProject = ProjectsWaiting.First(); getFirstProject.State = ProjectState.Current; Programmers[i].AssignProject(getFirstProject); ProjectsCurrent.Add(getFirstProject); ProjectsWaiting.Remove(getFirstProject); } else if (ProjectsCurrent.Count != 0) { var sortProjectsByMostToDo = ProjectsCurrent.OrderBy(p => p.ManDays - p.ManDaysDone).Reverse(); var getFirstProjectMostToDo = sortProjectsByMostToDo.First(); Programmers[i].AssignProject(getFirstProjectMostToDo); } } } }
/// <summary> /// Nacte vsechny projekty do kolekce ProjectsWaiting /// </summary> public void AllocateProjects(List <Project> projects) { foreach (Project proj in projects) { ProjectsWaiting.Add(proj); } }
/// <summary> /// IMPLEMENTUJTE TUTO METODU /// Nastavte projekty programatorum, kteri aktualne nepracuji na zadnem projektu. /// Pro kazdeho volneho programatora hledejte projekt k prirazeni nasledujicim zpusobem: /// - Pokud existuje nejaky projekt v ProjectsWaiting, vyberte prvni takovy. /// Nezapomente mu zmenit stav a presunout jej do ProjectsCurrent. /// - Pokud ne, vyberte takovy projekt z ProjectsCurrent, na kterem zbyva nejvice /// nedodelane prace. /// </summary> public void AssignNewProjects() { foreach (Programmer programmer in Programmers) { if (programmer.Project == null) { if (ProjectsWaiting.Count > 0) { Project projectwaiting = ProjectsWaiting[0]; projectwaiting.State = ProjectState.Current; ProjectsCurrent.Add(projectwaiting); ProjectsWaiting.RemoveAt(0); programmer.AssignProject(projectwaiting); } else { Project[] projectscurrent = ProjectsCurrent.ToArray(); Array.Sort(projectscurrent, (prg1, prg2) => (prg1.ManDays - prg1.ManDaysDone).CompareTo(prg2.ManDays - prg2.ManDaysDone)); programmer.AssignProject(projectscurrent[(projectscurrent.Length - 1)]); } } } }