private List <Examination> GetShiftedAppointmentForEmergency(BasicAppointmentSearchDTO parameters, Examination examination) { DateTime startDateTime = parameters.LatestDateTime; DateTime endDateTime = new DateTime(startDateTime.Year, startDateTime.Month, startDateTime.Day, 17, 0, 0); List <int> requiredEquipmentTypes = GetRequiredEquipmentForExamination(examination); for (int i = 1; i <= 13; i++) { parameters = new BasicAppointmentSearchDTO( examination.IdPatientCard, examination.DoctorJmbg, requiredEquipmentTypes, startDateTime, endDateTime ); List <Examination> potentialAppointments = (List <Examination>)BasicSearch(parameters); if (potentialAppointments.Count != 0) { return(potentialAppointments); } startDateTime = new DateTime(startDateTime.Year, startDateTime.Month, startDateTime.Day, 7, 0, 0); startDateTime = startDateTime.AddDays(1); endDateTime = endDateTime.AddDays(1); } return(null); }
private BasicAppointmentSearchDTO SetupDates(BasicAppointmentSearchDTO initialParameters) { DateTime earliestDateTime = initialParameters.EarliestDateTime.AddDays(-1); DateTime fixedEarliestDateTime = GetFixedEarliestDateTime(earliestDateTime); DateTime latestDateTime = initialParameters.LatestDateTime.AddDays(1); initialParameters.EarliestDateTime = fixedEarliestDateTime; initialParameters.LatestDateTime = latestDateTime; return(initialParameters); }
public void SetNewDateTimesForEmergency(BasicAppointmentSearchDTO parameters) { DateTime startTime = parameters.EarliestDateTime; int minutes = startTime.Minute % _appointmentDuration.Minutes; int addition = 0; if (minutes != 0) { addition = _appointmentDuration.Minutes - minutes; } parameters.EarliestDateTime = startTime.AddMinutes(addition); parameters.LatestDateTime = parameters.EarliestDateTime.AddHours(2); }
public ICollection <Examination> BasicSearch(BasicAppointmentSearchDTO parameters) { ICollection <Examination> actuallyAvailableAppointments = new List <Examination>(); foreach (Examination appointment in GetPotentiallyAvailableAppointments(parameters)) { if (IsAvailable(appointment)) { actuallyAvailableAppointments.Add(appointment); } } return(actuallyAvailableAppointments); }
private ICollection <Examination> GetPotentiallyAvailableAppointments(BasicAppointmentSearchDTO parameters) { ICollection <Examination> potentiallyAvailableAppointments = new List <Examination>(); foreach (Room room in GenerateRooms(TypeOfUsage.CONSULTING_ROOM, parameters.RequiredEquipmentTypes)) { foreach (DateTime dateTime in GenerateStartTimes(parameters.EarliestDateTime, parameters.LatestDateTime)) { potentiallyAvailableAppointments.Add(new Examination(dateTime, parameters.DoctorJmbg, room.Id, parameters.PatientCardId)); } } return(potentiallyAvailableAppointments); }
private ICollection <Examination> RelaxDates(AppointmentSearchWithPrioritiesDTO parameters) { for (int i = 0; i < PRIORITY_DATE_INTERVAL; i++) { BasicAppointmentSearchDTO initialParameters = SetupDates(parameters.InitialParameters); ICollection <Examination> freeAppointments = BasicSearch(initialParameters); if (freeAppointments.Count != 0) { return(freeAppointments); } } return(new List <Examination>()); }
private List <Examination> GetUnavailableAppointments(BasicAppointmentSearchDTO parameters) { return((List <Examination>)_examinationRepository.GetExaminationsForPeriod(parameters.EarliestDateTime, parameters.LatestDateTime)); }