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!", "");
     }
 }
예제 #3
0
        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();
        }