private static void ClearFinishedJobs(List <IJob> jobs, WorkForceManager manager) { foreach (var job in jobs.Where(x => x.IsFinished)) { manager.WorkHandler -= job.Update; } jobs.RemoveAll(x => x.IsFinished); }
private static void AddJob (List <IJob> jobs, List <IEmployee> employees, string[] data, WorkForceManager manager) { string jobName = data[0]; int hoursOfWorkRequired = int.Parse(data[1]); string employeeName = data[2]; IEmployee employee = employees.FirstOrDefault(x => x.Name == employeeName); var job = new Job(jobName, hoursOfWorkRequired, employee); manager.WorkHandler += job.Update; jobs.Add(job); }
static void Main() { var jobs = new List <IJob>(); var employees = new List <IEmployee>(); var manager = new WorkForceManager(); string input; while ((input = Console.ReadLine()) != "End") { string[] data = input.Split(' '); string command = data[0]; data = data.Skip(1).ToArray(); switch (command) { case "Job": AddJob(jobs, employees, data, manager); break; case "StandardEmployee": AddStandartEmployee(employees, data); break; case "PartTimeEmployee": AddPartTimeEmployee(employees, data); break; case "Pass": manager.PassWeek(); ClearFinishedJobs(jobs, manager); break; case "Status": foreach (var job in jobs) { Console.WriteLine($"Job: {job.Name} Hours Remaining: {job.HoursOfWorkRequired}"); } break; } } }