private List <Appointment> GetFreeAppointmentsForDay(TimeInterval time, RecommendationDTO appointmentsDay) { List <Appointment> freeAppointments = new List <Appointment>(); List <Appointment> takenAppointments = appointmentsDay.TakenAppointments; TimeIterator timeIterator = GetTimeIterator(time, appointmentsDay.DoctorShift); // iterate through every taken appointment for (int i = 0; i < takenAppointments.Count(); i++) { Appointment takenAp = takenAppointments[i]; freeAppointments.AddRange(GetFreeAppointmentsUntilTaken(timeIterator, takenAp, appointmentsDay.Doctor)); // skip taken appointment timeIterator.SkipInterval(takenAp.TimeInterval); // if taken appointment is the last one for given day, fill the rest of the time with free appointments if (i == takenAppointments.Count() - 1) //last one { freeAppointments.AddRange(GetFreeAppointmentsRestOfTheDay(timeIterator, appointmentsDay.Doctor)); } } // if no taken appointments exist for given day, fill the list with free appointments for that day if (takenAppointments.Count() == 0) { freeAppointments.AddRange(GetFreeAppointmentsRestOfTheDay(timeIterator, appointmentsDay.Doctor)); } return(freeAppointments); }
private List <Appointment> GetFreeAppointmentsUntilTaken(TimeIterator timeIterator, Appointment takenAp, Doctor doctor) { List <Appointment> freeAppointments = new List <Appointment>(); while (!takenAp.TimeInterval.IsOverlappingWith(timeIterator.GetCurrentTimeFrame())) { freeAppointments.Add(GetFreeAppointment(timeIterator, doctor)); timeIterator.Next(); } return(freeAppointments); }
private List <Appointment> GetFreeAppointmentsRestOfTheDay(TimeIterator timeIterator, Doctor doctor) { List <Appointment> freeAppointments = new List <Appointment>(); while (timeIterator.HasNext()) { freeAppointments.Add(GetFreeAppointment(timeIterator, doctor)); timeIterator.Next(); } return(freeAppointments); }
private Appointment GetFreeAppointment(TimeIterator timeIt, Doctor doctor) { return(new Appointment(doctor, null, null, AppointmentType.checkup, timeIt.GetCurrentTimeFrame())); }