Пример #1
0
        /// <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);
                    }
                }
            }
        }
Пример #2
0
 /// <summary>
 /// Nacte vsechny projekty do kolekce ProjectsWaiting
 /// </summary>
 public void AllocateProjects(List <Project> projects)
 {
     foreach (Project proj in projects)
     {
         ProjectsWaiting.Add(proj);
     }
 }
Пример #3
0
 /// <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)]);
             }
         }
     }
 }