static void Main(string[] args)
        {
            var employees = new List <IEmployee>();
            var jobs      = new JobArrayList();

            string inputLine;

            while ((inputLine = Console.ReadLine()) != "End")
            {
                string[] commandArgs = inputLine.Split();

                switch (commandArgs[0])
                {
                case "Job":
                    AddJob(employees, jobs, commandArgs);
                    break;

                case "StandardEmployee":
                case "PartTimeEmployee":
                    AddEmployee(commandArgs, employees);
                    break;

                case "Pass":
                    PassWeek(jobs);
                    break;

                case "Status":
                    PrintJobs(jobs);
                    break;
                }
            }
        }
 private static void PrintJobs(JobArrayList jobs)
 {
     foreach (Job job in jobs)
     {
         Console.WriteLine(job);
     }
 }
        private static void AddJob(List <IEmployee> employees, JobArrayList jobs, string[] commandArgs)
        {
            string jobName = commandArgs[1];
            int    jobWorkHoursRequired = int.Parse(commandArgs[2]);
            string employeeName         = commandArgs[3];

            IEmployee cemployee = employees.First(e => e.Name == employeeName);

            var job = new Job(jobName, jobWorkHoursRequired, cemployee);

            jobs.AddJob(job);
        }
        private static void PassWeek(JobArrayList jobs)
        {
            int length           = jobs.Count;
            int index            = 0;
            int currentJobsCount = jobs.Count;

            for (int counter = 0; counter < length; counter++)
            {
                var currentJob = (Job)jobs[index];

                currentJob.Update();

                if (currentJobsCount == jobs.Count)
                {
                    index++;
                }
                else
                {
                    currentJobsCount--;
                }
            }
        }