public bool Schedule(ServiceRequest sr) { TechnicianController techCtr = new TechnicianController(); List <Package> packages = sr.ServiceContract.Packages; List <Technician> techs = techCtr.Read(); Technician techMin = null; Service serMin = null; RequestAgent reqAgent; List <Service> skills; foreach (Package i in packages) { foreach (Technician j in techs) { skills = j.Skills; foreach (Service k in skills) { if (k.Equals(i.Service)) { int queueDuration = GetQueueDuration(j); int queueDurationMin = GetQueueDuration(j); if (techMin != null) { queueDurationMin = GetQueueDuration(techMin); } if (queueDuration <= queueDurationMin) { techMin = j; serMin = k; } } } } if (techMin == null) { return(false); } techMin.EmploymentStatus = "Working"; techCtr.Update(techMin); reqAgent = new RequestAgent(serMin, techMin); rqCtr.Add(reqAgent, sr); return(true); } return(false); }