private void DatePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e) //Změna zvoleného data v date pickeru { MeetingsListView.Items.Clear(); if ((MeetingCentreComboBox.SelectedItem != null) && (MeetingRoomComboBox.SelectedItem != null) && (DatePicker.SelectedDate != null)) { Centre centre = MeetingCentreComboBox.SelectedItem as Centre; Room room = MeetingRoomComboBox.SelectedItem as Room; DateTime date = DatePicker.SelectedDate.Value.Date; List <Meeting> meetings = room.HasMeetings(date); List <Meeting> sorted_meetings = meetings.OrderBy(o => o.DateAndTimeFrom).ToList(); foreach (Meeting meeting in sorted_meetings) { MeetingsListView.Items.Add(meeting); } } }
private void Button_Click(object sender, RoutedEventArgs e) //Kliknutí na button pro přidání nového prvku { try { if (Assistant.IsCodeUnique(TextBoxCode.Text)) // Zjištění, zda je zadaný code unikátní { // Rozhodnutí, zda přidáváme centre nebo room if (choice == "centre") { // Přidání nové instance meeting centre Centre meetingCentre = new Centre(TextBoxName.Text, TextBoxDescription.Text, TextBoxCode.Text); // Přidání instance do listu center meetingCentres.Add(meetingCentre); dataChanged = true; //Změna parametru změny dat } else if (choice == "room") { // Parsování kapacity int capacity = 0; if (!Int32.TryParse(TextBoxCapacity.Text, out capacity)) { throw new Exception("Nelze převést na integer."); } Centre selectedCentre = ComboBoxMeetingCentre.SelectedItem as Centre; // Získání stavu checkboxu pro video bool video = (CheckBoxVideoConference.IsChecked.HasValue && CheckBoxVideoConference.IsChecked.Value == true); // Přidání nové instance meeting room Room meetingRoom = new Room(TextBoxName.Text, TextBoxDescription.Text, TextBoxCode.Text, capacity, video, selectedCentre); // Přidání instance do listu rooms meetingRooms.Add(meetingRoom); selectedCentre.AddRoom(meetingRoom); dataChanged = true; //Změna parametru změny dat } } else { throw new Exception("Kód není unikátní."); //Výjimka, pokud kód není unikátní } this.Close(); //Zavření okna } catch (Exception ex) // Odchycení výjimky a oznámení uživateli { MessageBox.Show(ex.Message); } }
private void MeetingCentresListView_SelectionChanged(object sender, SelectionChangedEventArgs e) // Změna vybraného prvku v listview pro centra { Centre selected_centre = MeetingCentresListView.SelectedItem as Centre; //Uložení vybraného itemu if (selected_centre != null) // Naplnění daty pokud je vybraný item { LabelMeetingCentreName.Content = selected_centre.Name; LabelMeetingCentreDescription.Content = selected_centre.Description; LabelMeetingCentreCode.Text = selected_centre.Code; MeetingRoomsListView.Items.Clear(); //Vyčistění listview pro rooms List <Room> rooms = selected_centre.HasRooms(); foreach (Room room in rooms) // Vypsání všech souvisejících rooms do listview { MeetingRoomsListView.Items.Add(room); } } }
private void ButtonDeleteMeetingCentre_Click(object sender, RoutedEventArgs e) //Odstranění meeting centre { if (MeetingCentresListView.SelectedItem != null) { Centre selectedCentre = MeetingCentresListView.SelectedItem as Centre; MessageBoxResult result = MessageBox.Show("Pokud má meeting centre přiřazeny meeting rooms, budou také smazány. Přejete si pokračovat?", "Remove", MessageBoxButton.YesNo); if (result == MessageBoxResult.Yes) { List <Room> rooms = selectedCentre.HasRooms(); foreach (Room room in rooms) { meetingRooms.Remove(room); //Odstranění meeting room } meetingCentres.Remove(selectedCentre); //Odstranění meeting centre dataChanged = true; // Změna parametru pro dotaz na uložení změn } this.Window_Activated(null, null); // Překreslení listviews } }
private void ButtonDeleteMeetingRoom_Click(object sender, RoutedEventArgs e) //Odstranění meeting room { if (MeetingRoomsListView.SelectedItem != null) { Room selectedRoom = MeetingRoomsListView.SelectedItem as Room; Centre roomsCentre = selectedRoom.MeetingCentre; MessageBoxResult result = MessageBox.Show("Opravdu si přejdete smazat zvolenou meeting room?", "Remove", MessageBoxButton.YesNo); if (result == MessageBoxResult.Yes) { List <Meeting> room_meetings = selectedRoom.HasMeetings(); foreach (Meeting meeting in room_meetings) { meetings.Remove(meeting); } roomsCentre.RemoveRoom(selectedRoom); meetingRooms.Remove(selectedRoom); dataChanged = true; } } this.Window_Activated(null, null); // Překreslení listviews }
private void LoadSavedData() //Metoda pro načtení uložených dat { string path = AppDomain.CurrentDomain.BaseDirectory + "export_centres.json"; //Cesta k souboru s centry string json_data = File.ReadAllText(path); // Načtení textu ze souboru JavaScriptSerializer jsonSerializer = new JavaScriptSerializer(); //Inicializace JSSerializeru List <Centre> importCentres = new List <Centre>(); //Inicializace listu pro importovaná centra importCentres = jsonSerializer.Deserialize <List <Centre> >(json_data); //Deserializace do listu pro importovaná centra foreach (Centre centre in importCentres) // Pro každé centrum v listu pro importovaná centra se provede řádné volání konstruktoru a přidání do listu center { Centre meetingCentre = new Centre(centre.Name, centre.Description, centre.Code); meetingCentres.Add(meetingCentre); } path = AppDomain.CurrentDomain.BaseDirectory + "export_rooms.json"; //Cesta k souboru s rooms json_data = File.ReadAllText(path); // Načtení textu ze souboru List <Room> importRooms = new List <Room>(); //Inicializace listu pro importované rooms importRooms = jsonSerializer.Deserialize <List <Room> >(json_data); //Deserializace do listu pro importované rooms foreach (Room room in importRooms) // Pro každou room v listu pro importované rooms se provede řádné volání konstruktoru a přidání do listu rooms { Room meetingRoom = new Room(room.Name, room.Description, room.Code, room.Capacity, room.VideoConference, room.MeetingCentre as Centre); meetingRooms.Add(meetingRoom); } Assistant.AssignCentresToRooms(); //Metoda pro přiřazení rooms k centrům (získání vazby) if (File.Exists(AppDomain.CurrentDomain.BaseDirectory + "export_meetingXML.xml")) { List <Meeting> imported_meetings = new List <Meeting>(); System.Xml.Serialization.XmlSerializer reader = new System.Xml.Serialization.XmlSerializer(typeof(List <Meeting>)); using (var sr = new StreamReader(AppDomain.CurrentDomain.BaseDirectory + "export_meetingXML.xml")) { imported_meetings = (List <Meeting>)reader.Deserialize(sr); } foreach (Meeting meeting in imported_meetings) { meetings.Add(meeting); } Assistant.AssignRoomsToMeetings(); //Metoda pro přiřazení meetingů k roomům (získání vazby) } }
private void Import(object sender, RoutedEventArgs e) //Metoda pro import dat z poskytnutého .csv { try { Microsoft.Win32.OpenFileDialog dialog = new Microsoft.Win32.OpenFileDialog(); //Inicializace openfile dialogu dialog.DefaultExt = ".csv"; // Výchozí formát v dialogu dialog.Filter = "Comma Separated Values (.csv)|*.csv"; // Nastavení filtru v dialogu Nullable <bool> result = dialog.ShowDialog(); //Uložení výsledku dialogu if (result == true) { string path = dialog.FileName; //Cesta k souboru StreamReader sr = new StreamReader(path); //Inicializace streamreaderu dataChanged = true; //Změna parametru pro změnu dat bool meeting_centres = false; //Pomocné proměnné pro import bool meeting_rooms = false; string current_line; //Indikuje aktuální line streamreaderu while ((current_line = sr.ReadLine()) != null) // čti dokud nenačteš null { if (current_line.Contains("MEETING_CENTRES")) // Pokud se v aktuální řádce vyskutuje daný text, změní se pomocné proměnné { meeting_centres = true; meeting_rooms = false; } else if (current_line.Contains("MEETING_ROOMS")) // Pokud se v aktuální řádce vyskutuje daný text, změní se pomocné proměnné { meeting_rooms = true; meeting_centres = false; } else // Ostatní řádky { string[] values = current_line.Split(','); // Rozdělení řetězce podle ',' if (meeting_centres == true && meeting_rooms == false) // Pokud pomocné proměnné splňují podmínky pro čtení center vytvoří se nové centrum { Centre meetingCentre = new Centre(values[0], values[2], values[1]); // Volání konstruktoru centra meetingCentres.Add(meetingCentre); // Přidání do listu center } else if (meeting_rooms == true && meeting_centres == false) // Pokud pomocné proměnné splňují podmínky pro čtení room vytvoří se nová room { int capacity = 0; if (!Int32.TryParse(values[3], out capacity)) // Parsování na integer { throw new Exception("Nelze převést na integer."); } bool video = false; if (values[4] == "YES") //Získání stavu videa { video = true; } if (values[4] == "NO") { video = false; } Centre inMeetingCentre = null; foreach (Centre mc in meetingCentres) //Získání meeting centra, ke kterému room patří { if (mc.Code == values[5]) { inMeetingCentre = mc; } } Room meetingRoom = new Room(values[0], values[2], values[1], capacity, video, inMeetingCentre); // Volání konstruktoru pro room meetingRooms.Add(meetingRoom); // Přidání do listu rooms } } } Assistant.AssignCentresToRooms(); } MessageBox.Show("Data naimportována."); //Oznámení uživateli o úspěšném importu this.Window_Activated(null, null); // Aktualizace listviews } catch (Exception ex) //Odchycení výjimky { MessageBox.Show(ex.Message + " Doposud naimportovaná data budou ponechány v aplikaci."); } }
public Room(string name, string description, string code, int capacity, Boolean videoConference, Centre meetingCentre) : base(name, description, code) //Konstruktor { Capacity = capacity; VideoConference = videoConference; MeetingCentre = meetingCentre; }