public ScheduledTimeSlot(Subject subject, Room room, TimeSlot timeSlot, HashSet<Group> groups)
 {
     this.subject = subject;
     this.room = room;
     this.timeSlot = timeSlot;
     this.groups = groups;
 }
        public void initalizeExampleData()
        {
            if(organic_room_types == null)
            {
                organic_room_types = new HashSet<RoomType>();
                organic_room_types.Add(RoomType.Projector);
                organic_room_types.Add(RoomType.Komin);
            }

            if(available_timeslots == null)
            {
                var available_timeslot = new TimeSlot(DayOfWeek.Monday, 9, 22);
                available_timeslots = new List<TimeSlot>();
                available_timeslots.Add(available_timeslot);
            }

            if(rooms == null)
            {
                var room = new Room(organic_room_types, 150, available_timeslots, "ХФ210");
                rooms = new HashSet<Room>();
                rooms.Add(room);
            }

            if(requirements_list == null)
            {
                var requirements = new Requirements(10, available_timeslots, rooms);
                requirements_list = new List<Requirements>();
                requirements_list.Add(requirements);
                var organich_chemistry_teacher = new Teacher(requirements_list[0], "Prof. Hristo Hristov");
            }
            var organic_chemistry_teachers = new List<Teacher>();

            var s = new Subject(organic_room_types, organic_chemistry_teachers, "Organic Chemistry Lectures", 1);
        }
        private void listBoxSubjects_SelectedIndexChanged(object sender, EventArgs e)
        {
            var selectedSubject = listBoxSubjects.SelectedItem as Subject;
            if (selectedSubject == null)
            {
                if (previouslySelectedSubject != null)
                {
                    UpdateSubject(previouslySelectedSubject);
                    previouslySelectedSubject = null;
                }

                ClearCheckedListRoomTypes();
                LB_Teachers.ClearSelected();
                TB_SubjectName.Text = "";
                NUM_SubjectDuration.Value = 0;
                return;
            }

            previouslySelectedSubject = selectedSubject;

            ClearCheckedListRoomTypes();
            foreach (var roomType in selectedSubject.roomTypes)
            {
                checkedListBoxRoomRequirements.SetItemChecked((int)roomType, true);
            }

            LB_Teachers.ClearSelected();
            foreach (var teacher in selectedSubject.teachers)
            {
                LB_Teachers.SetSelected(LB_Teachers.Items.IndexOf(teacher), true);
            }

            TB_SubjectName.Text = selectedSubject.name;
            NUM_SubjectDuration.Value = selectedSubject.duration;
        }
        private void UpdateSubject(Subject subject)
        {
            HashSet<RoomType> roomTypes = new HashSet<RoomType>();
            foreach (int selectedIndex in checkedListBoxRoomRequirements.CheckedIndices)
            {
                roomTypes.Add((RoomType)selectedIndex);
            }

            var teachers = new List<Teacher>();
            foreach (Teacher teacher in LB_Teachers.SelectedItems)
            {
                teachers.Add(teacher);
            }

            subject.duration = (uint) NUM_SubjectDuration.Value;
            subject.name = TB_SubjectName.Text;
            subject.roomTypes = roomTypes;
            subject.teachers = teachers;

            RefreshSubjects();

            refreshGroupsTabSubjects();
        }