private IEnumerable <EquipmentRelocationDto> FindCommonEquipmentRelocationAppointments(SchedulingDto dto, IEnumerable <RecommendationDto> recsDestinationRoom, IEnumerable <RecommendationDto> recsSourceRoom) { List <EquipmentRelocationDto> equipmentRelocationDtos = new List <EquipmentRelocationDto>(); foreach (RecommendationDto recDestination in recsDestinationRoom) { foreach (RecommendationDto recSource in recsSourceRoom) { if (recDestination.TimeInterval.Start == recSource.TimeInterval.Start && recDestination.TimeInterval.End == recSource.TimeInterval.End) { EquipmentRelocationDto eqDto = new EquipmentRelocationDto() { SourceRoomId = dto.SourceRoomId, DestinationRoomId = dto.DestinationRoomId, Amount = 0, TimeInterval = recDestination.TimeInterval }; equipmentRelocationDtos.Add(eqDto); } if (equipmentRelocationDtos.Count == 5) { return(equipmentRelocationDtos); } } } return(equipmentRelocationDtos); }
private void RelocateEquipment(object sender, RoutedEventArgs e) { startDate = DateTime.ParseExact(startDatePicker.SelectedDate.Value.ToString("MM/dd/yyyy") + " " + StartTime.Text, "MM/dd/yyyy HH:mm", null); endDate = DateTime.ParseExact(startDatePicker.SelectedDate.Value.ToString("MM/dd/yyyy") + " " + EndTime.Text, "MM/dd/yyyy HH:mm", null); try{ TimeInterval timeInterval = new TimeInterval(startDate, endDate); if (AmountIsValid()) { EquipmentRelocationDto eqRelDto = CreateEquipmentRelocationDto(timeInterval); SchedulingDto schDto = eqRelDto.toSchedulingDto(); List <int> unavailableRooms = roomServerController.GetUnavailableRooms(schDto).ToList(); if (unavailableRooms.Count > 0) { ShowAlternativeRelocationAppointments(unavailableRooms, eqRelDto); } else { ScheduleRelocation(schDto); } } } catch { MessageBox.Show("End time must be after start time!", ""); } }
public List <SearchResultDTO> GetSearchResult() { List <EquipmentRelocationDto> searchResult = new SchedulingServerController().GetEquipmentRelocationAppointments(eqRequest); IMapObjectController mapObjectController = new MapObjectController(); List <SearchResultDTO> retVal = new List <SearchResultDTO>(); IEquipmentServerController equipmentServerController = new EquipmentServerController(); for (int i = 0; i < searchResult.Count(); i++) { EquipmentRelocationDto equipmentRelocationDto = searchResult.ElementAt(i); MapObject mo = mapObjectController.GetMapObjectById(equipmentRelocationDto.SourceRoomId); var equipments = equipmentServerController.GetEquipmentByRoomId(mo.Id); string amount = ""; foreach (EquipmentDto eq in equipments) { if (eq.Name.Equals(equipment)) { amount = eq.Quantity.ToString(); break; } } string timeInterval = equipmentRelocationDto.TimeInterval.Start.ToString() + "-" + equipmentRelocationDto.TimeInterval.End.ToString(); EquipmentRelocationSearchResultDTO searchResultDTO = new EquipmentRelocationSearchResultDTO() { Content = equipmentRelocationDto.SourceRoomId.ToString() + AllConstants.ContentSeparator + equipmentRelocationDto.DestinationRoomId.ToString() + AllConstants.ContentSeparator + amount + AllConstants.ContentSeparator + timeInterval, EquipmentRelocationDto = equipmentRelocationDto }; retVal.Add(searchResultDTO); } return(retVal); }
private EquipmentRelocationDto CreateEquipmentRelocationDto(TimeInterval timeInterval) { EquipmentRelocationDto equipmentRelocationDto = new EquipmentRelocationDto() { SourceRoomId = (int)roomSearchComboBox.SelectedItem, DestinationRoomId = destinationRoomId, Amount = int.Parse(equipmentAmount.Text), EquipmentType = relocationEquipmentName, TimeInterval = timeInterval }; return(equipmentRelocationDto); }
private void AddScheduleRelocationButton(int row, EquipmentRelocationDto relocation) { Button scheduleBtn = CreateScheduleButton(); Grid.SetRow(scheduleBtn, row); Grid.SetColumn(scheduleBtn, DynamicGrid.ColumnDefinitions.Count - 2); DynamicGrid.Children.Add(scheduleBtn); SchedulingDto schedulingDto = relocation.toSchedulingDto(); scheduleBtn.Click += (s, e) => { List <int> doctors = new DoctorServerController().GetDoctorsByRoomsAndShifts(relocation.toSchedulingDto()).ToList(); IExaminationServerController examinationServerController = new ExaminationServerController(); foreach (int doctorId in doctors) { examinationServerController.ScheduleExamination(relocation.TimeInterval.Start, doctorId, AllConstants.PatientIdForRelocation); } MessageBox.Show("Relocation is successfully scheduled!"); this.Close(); }; }
private void ShowAlternativeRelocationAppointments(List <int> unavailableRooms, EquipmentRelocationDto equipmentRelocationDto) { SchedulingDto eqRequest = new SchedulingDto() { SourceRoomId = equipmentRelocationDto.SourceRoomId, DestinationRoomId = equipmentRelocationDto.DestinationRoomId, TimeInterval = equipmentRelocationDto.TimeInterval }; AlternativeRelocationAppointments newWindow = new AlternativeRelocationAppointments(unavailableRooms[0], this, eqRequest, relocationEquipmentName); newWindow.Show(); }