Commit 487c937a authored by Alexander Scharfenberg's avatar Alexander Scharfenberg
Browse files

code commenting finished

parent b23c7212
......@@ -46,7 +46,8 @@ namespace Raumverwaltung_HMWK
}
/*
* Falls die Änderung nicht dazu führt, dass ein Nutzer doppelt vorhanden ist, wird die Änderung durchgeführt.
* mit dieser Funktion werden Nutzerdaten geändert und neu eingefügt. Hierbei fehlt bisher der Abgleich, ob bereits
* ein User mit den neuen Daten vorhanden ist (auf Name & Vorname bezogen)
*/
private void ChangeUser(object sender, RoutedEventArgs e)
{
......@@ -59,16 +60,7 @@ namespace Raumverwaltung_HMWK
{
case MessageBoxResult.Yes:
{
if (userExists(NameInput.Text, VorNameInput.Text))
{
MessageBox.Show("Benutzer existiert bereits mit diesem Vor- und Nachnamen", "Fehler",
MessageBoxButton.OK, MessageBoxImage.Error);
}
else
{
try
try
{
SqLiteDataAccess.ChangeUser(NameInput.Text, VorNameInput.Text, DepartmentInput.Text,
ReferatInput.Text, OrgaInput.Text, NumberInput.Text,
......@@ -95,7 +87,7 @@ namespace Raumverwaltung_HMWK
MessageBoxButton.OK,
MessageBoxImage.Error);
}
}
break;
}
......@@ -118,22 +110,6 @@ namespace Raumverwaltung_HMWK
{
Close();
}
/*
* Überprüfung, ob der Nutzer mit dem vergebenen Namen und Vornamen existiert
*/
private bool userExists(string name, string vorname)
{
bool found = false;
for (int i = 0; i < users.Count; i++)
{
if (users[i].Nachnname.Equals(name) && users[i].Vorname.Equals(vorname))
{
found = true;
}
}
return found;
}
}
}
\ No newline at end of file
......@@ -41,6 +41,13 @@ namespace Raumverwaltung_HMWK
Close();
}
/**
* <summary>
* Das ausgewählte Stockwerk wird samt seinen Räumen, Raum-Nutzer-Beziehungen und Assets komplett gelöscht.
* Nach erfolgreichem Löschen werden in einer Schleife alle geöffneten Fenster geschlossen, das MainWindow wird
* als einziges Fenster direkt wieder geöffnet. Das Neuladen sorgt für einen kongruenten Datensatz in der Anwendung.
* </summary>
*/
private void DeleteFloor(object sender, RoutedEventArgs e)
{
if (FloorSelection.SelectedItem != null)
......
......@@ -22,11 +22,21 @@ namespace Raumverwaltung_HMWK
public DeleteLocationWindow()
{
InitializeComponent();
//bezieht alle Standorte von der Datenbank
buildings = SqLiteDataAccess.GetLocations();
LocationSelection.ItemsSource = buildings;
LocationSelection.SelectedIndex = 0;
}
/**
* <summary>
* löscht den ausgewählten Standort, samt den Stockwerken, Räumen, Raum-Nutzer-Beziehungen und Assets.
* Eine Sicherheitsfrage, die nochmal mit "Ja/Nein" beantwortet werden muss, wurde implementiert. Falls das Maß
* an Sicherheit nicht genügt, dürfen hier weitere Mechanismen eingebaut werden.
* Nach erfolgreichem Löschen werden in einer Schleife alle geöffneten Fenster geschlossen, das MainWindow wird
* als einziges Fenster direkt wieder geöffnet. Das Neuladen sorgt für einen kongruenten Datensatz in der Anwendung.
* </summary>
*/
private void DeleteLocation(object sender, RoutedEventArgs e)
{
Building selected = buildings[LocationSelection.SelectedIndex];
......
......@@ -39,6 +39,14 @@ namespace Raumverwaltung_HMWK
Close();
}
/**
* <summary>
* Die Funktion löscht den ausgewählten Raum in dem Stockwerk. Alle Raum-Nutzer-Beziehungen zu dem Raum sowie die Assets
* werden mitgelöscht. Weitere Sicherheitsmechanismen neben der "Ja/Nein"-Abfrage können eingebaut werden.
* Nach erfolgreichem Löschen werden in einer Schleife alle geöffneten Fenster geschlossen, das MainWindow wird
* als einziges Fenster direkt wieder geöffnet. Das Neuladen sorgt für einen kongruenten Datensatz in der Anwendung.
* </summary>
*/
private void DeleteRoom(object sender, RoutedEventArgs e)
{
if (RoomSelection.SelectedItem != null)
......
......@@ -27,6 +27,15 @@ namespace Raumverwaltung_HMWK
allUsers.SelectedIndex = 0;
}
/**
*<summary>
* Der ausgewählte Nutzer wird samt seinen Raum-Nutzer-Beziehungen gelöscht. Eine Sicherheitsabfrage wurde implementiert,
* sodass der Nutzer mit "Ja/Nein" die Löschung bestätigen/ablehnen kann.
* Nach erfolgreichem Löschen werden in einer Schleife alle geöffneten Fenster geschlossen, das MainWindow wird
* als einziges Fenster direkt wieder geöffnet. Das Neuladen sorgt für einen kongruenten Datensatz in der Anwendung.
* </summary>
*
*/
private void Click_Delete(object sender, RoutedEventArgs e)
{
......
......@@ -70,7 +70,11 @@ namespace Raumverwaltung_HMWK
}
//Funktion zum Verschieben der Buttons
/**
* <summary>
* Funktion zum Verschieben der Buttons
* </summary>
*/
private void GUI_OnPreviewMouseMove(object sender, MouseEventArgs e)
{
if (dragObject == null)
......@@ -82,13 +86,21 @@ namespace Raumverwaltung_HMWK
Canvas.SetLeft(dragObject, position.X - offset.X);
}
//Funktion zum Verschieben der Buttons
/**
* <summary>
* Funktion zum Verschieben der Buttons
* </summary>
*/
private void GUI_OnPreviewMouseUp(object sender, MouseButtonEventArgs e)
{
dragObject = null;
GUI.ReleaseMouseCapture();
}
//Funktion zum Verschieben der Buttons
/**
* <summary>
* Funktion zum Verschieben der Buttons
* </summary>
*/
private void Btn_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
dragObject = sender as UIElement;
......@@ -119,14 +131,22 @@ namespace Raumverwaltung_HMWK
Canvas.SetTop(newBtn,room.Y);
}
// öffnet das Raum-Fenster über den Raum-Button im FloorWindow
/**
* <summary>
* öffnet das Raum-Fenster über den Raum-Button im FloorWindow
* </summary>
*/
public void ClickRoomButton(object sender, RoutedEventArgs e)
{
Button btn = (Button) sender;
var window = new RoomWindow(int.Parse(btn.Name.Remove(0,1)),btn);
window.Show();
}
// vergibt allen Buttons im FloorWindow die Fähigkeit zur Verschiebung
/**
* <summary>
* vergibt allen Buttons im FloorWindow die Fähigkeit zur Verschiebung
* </summary>
*/
private void MoveButtons_OnClick(object sender, RoutedEventArgs e)
{
foreach (var c in GUI.Children.OfType<Button>())
......@@ -137,7 +157,11 @@ namespace Raumverwaltung_HMWK
MessageBox.Show("Verschiebung aktiviert.", "Achtung", MessageBoxButton.OK, MessageBoxImage.Information);
}
// persistiert die Positionen aller Buttons im FloorWindow & entnimmt den Buttons die Fähigkeit zur Verschiebung
/**
* <summary>
* persistiert die Positionen aller Buttons im FloorWindow & entnimmt den Buttons die Fähigkeit zur Verschiebung
* </summary>
*/
private void SavePositions_OnClick(object sender, RoutedEventArgs e)
{
foreach (var c in GUI.Children.OfType<Button>())
......@@ -195,19 +219,32 @@ namespace Raumverwaltung_HMWK
}
}
}
// speichert die Notiz zu einem Stockwerk
/**
* <summary>
* speichert die Notiz zu einem Stockwerk
* </summary>
*/
private void SaveNote(object sender, RoutedEventArgs e)
{
SqLiteDataAccess.SaveNote(CurrentFloor.Id,Notefield.Text);
MessageBox.Show("Notiz wurde verändert.", "Erfolgreich:", MessageBoxButton.OK, MessageBoxImage.Information);
}
// wird aufgerufen, wenn über den Reiter "Raum-Anlegen" ausgewählt wird. Öffnet ein neues RoomWindow.
/**
* <summary>
* wird aufgerufen, wenn über den Reiter "Raum-Anlegen" ausgewählt wird. Öffnet ein neues RoomWindow.
* </summary>
*/
private void AddRoom(object sender, RoutedEventArgs e)
{
AddRoomWindow window = new AddRoomWindow(CurrentFloor.Id);
window.Show();
}
// wird aufgerufen, wenn über den Reiter "Raum-Löschen" ausgewählt wird. Öffnet ein neues DeleteRoomWindow.
/**
* <summary>
* wird aufgerufen, wenn über den Reiter "Raum-Löschen" ausgewählt wird. Öffnet ein neues DeleteRoomWindow.
* </summary>
*/
private void DeleteRoom(object sender, RoutedEventArgs e)
{
DeleteRoomWindow window = new DeleteRoomWindow(CurrentFloor.Id);
......
......@@ -9,13 +9,32 @@ namespace Raumverwaltung_HMWK
/**
* <summary>
*
* Dies ist das Hauptfenster der Anwendung. Es besteht aus den Reitern "Standort, Stockwerk, Benutzer & Hilfe".
* Direkt im Anschluss befinden sich Filteroptionen, um ein beliebiges Stockwerk über den Button "Stockwerk öffnen" in einem
* neuem FloorWindow zu öffnen.
* Im unteren Teil des Fenster wird eine Übersicht über alle Räume auf dem ausgewählten Stockwerk geboten.
* </summary>
*/
public partial class MainWindow
{
/**
* <param name="buildings">
* wird über die Funktion GetBuildings() befüllt, sodass nicht nur die Standorte geladen werden, sondern auch die gesamte
* Struktur: Jeder Standort hat eine Liste mit allen zugeordneten Stockwerken, wobei Diese wiederum eine Raumliste pflegen mit
* allen Räumen auf ihrer Ebene.
* </param>
*
*/
public static List<Building> buildings;
/**
*<summary>
* Der Konstruktor des MainWindows: Hier wird die komplette Standortstruktur zu Beginn geladen (Standort->Stockwerke->Räume).
* Die Combo-Box der Standorte wird befüllt über die FillStandortList()-Funktion.
* </summary>
*
*/
public MainWindow()
{
buildings = GetBuildings();
......@@ -25,6 +44,11 @@ namespace Raumverwaltung_HMWK
}
/**
* <summary>
* Befüllt die Combo-Box zur Auswahl der Standorte
* </summary>
*/
private void FillStandortList()
{
for (int i = 0; i < buildings.Count; i++)
......@@ -33,6 +57,12 @@ namespace Raumverwaltung_HMWK
}
}
/**
*
* <summary>
* je nach Standortwahl wird die Combo-Box der Stockwerke unterschiedlich befüllt.
* </summary>
*/
private void FillStockwerkList(string name)
{
for (int i = 0; i < buildings.Count; i++)
......@@ -48,13 +78,23 @@ namespace Raumverwaltung_HMWK
}
}
/**
* <summary>
* Einfache Get-Funktion, die die SqLiteDataAccess-Funktion GetBuildings() aufruft.
* </summary>
*/
public static List<Building> GetBuildings()
{
return SqLiteDataAccess.GetBuildings();
}
/**
* <summary>
* Einfache Updatefunktion: Je nach Standortwahl wird die Stockwerk-Combo-Box ggf. geleert und mit den Stockwerken
* neu befüllt, die zum Standort gehören.
* </summary>
*/
private void Standortauswahl_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
ComboBox cbx = (ComboBox) sender;
......@@ -66,6 +106,12 @@ namespace Raumverwaltung_HMWK
}
}
/**
* <summary>
* Einfache Updatefunktion: Je nachdem, welches Stockwerk nun ausgewählt wurde, wird die Übersicht der Räume neu
* befüllt mit den zugehörigen Räumen.
* </summary>
*/
private void Stockwerkauswahl_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
......@@ -78,6 +124,13 @@ namespace Raumverwaltung_HMWK
}
/**
* <summary>
* Die Funktion wird nach der Betätigung des Buttons "Standort öffnen" ausgeführt. Hierbei wird der Name des Stockwerks
* aus der Combo-Box mit allen Namen der Stockwerke in "buildings" verglichen. Wenn die Namen übereinstimmen,
* wird ein FloorWindow mit der übergebenen Stockwerk-ID geöffnet.
* </summary>
*/
private void OpenFloor_OnClick(object sender, RoutedEventArgs e)
{
try
......@@ -103,6 +156,15 @@ namespace Raumverwaltung_HMWK
}
}
/**
* <summary>
* befüllt die Übersicht im MainWindow, je nachdem welches Stockwerk übergeben wird. Dabei iteriert die Funktion
* über alle Standort-Elemente in buildings, um in einer zweiten Loop über alle Stockwerke iterieren zu können.
* Falls die Namen des ausgewählten Stockwerks und des Stockwerks in buildings (als Unterelement) übereinstimmen,
* werden alle Räume zu dem Stockwerk zu sogenannten "OverviewItems" umgeformt. OverViewItems werden statt den eigentlichen
* Räumen in der Übersicht dargestellt.
* </summary>
*/
public void FillOverview(string stockwerk)
{
......@@ -128,48 +190,89 @@ namespace Raumverwaltung_HMWK
RoomList.ItemsSource = overViewItems;
}
/**
* <summary>
* die Funktion wird immer dann aufgerufen, wenn sich das Verhältnis der belegten Arbeitsplätze zur Obergrenze der
* Arbeitsplätze verändert hat, da sich dann die Farbe der Räume sowohl im FloorWindow als auch in der Übersicht
* ändern muss.
* </summary>
*/
public void ReloadRoomList(int floorId)
{
RoomList.ItemsSource = null;
FillOverview(SqLiteDataAccess.GetFloor(floorId).Name);
}
/**
* <summary>
* Ein neues AddUserWindow wird geöffnet. Die Funktion wird aufgerufen, wenn "Benutzer-Anlegen" im Reiter ausgewählt wurde.
* </summary>
*/
private void AddUser(object sender, RoutedEventArgs e)
{
var window = new AddUserWindow();
window.Show();
}
/**
* <summary>
* Ein neues DeleteUserWindow wird geöffnet. Die Funktion wird aufgerufen, wenn "Benutzer-Löschen" im Reiter ausgewählt wurde.
* </summary>
*/
private void DeleteUser(object sender, RoutedEventArgs e)
{
var window = new DeleteUserWindow();
window.Show();
}
/**
* <summary>
* Ein neues AddLocationWindow wird geöffnet. Die Funkion wird aufgerufen, wenn "Standort-Anlegen" im Reiter ausgewählt wurde.
* </summary>
*/
private void AddLocation(object sender, RoutedEventArgs e)
{
var window = new AddLocationWindow();
window.Show();
}
/**
* <summary>
* Ein neues DeleteLocationWindow wird geöffnet. Die Funktion wird aufgerufen, wenn "Standort-Löschen" im Reiter ausgewählt wurde.
* </summary>
*/
private void DeleteLocation(object sender, RoutedEventArgs e)
{
var window = new DeleteLocationWindow();
window.Show();
}
/**
* <summary>
* Ein neues AddFloorWindow wird geöffnet. Die Funktion wird aufgerufen, wenn "Stockwerk-Anlegen" im Reiter ausgewählt wurde.
* </summary>
*/
private void AddFloor(object sender, RoutedEventArgs e)
{
var window = new AddFloorWindow();
window.Show();
}
/**
* <summary>
* Ein neues DeleteFloorWindow wird geöffnet. Die Funktion wird aufgerufen, wenn "Stockwerk-Löschen" im Reiter ausgewählt wurde.
* </summary>
*/
private void DeleteFloor(object sender, RoutedEventArgs e)
{
var window = new DeleteFloorWindow();
window.Show();
}
/**
* <summary>
* Ein neues SearchUserWindow wird geöffnet. Die Funktion wird aufgerufen, wenn "Benutzer-Suchen" im Reiter ausgewählt wurde.
* </summary>
*/
private void SearchUser(object sender, RoutedEventArgs e)
{
var window = new SearchUserWindow();
......@@ -177,6 +280,11 @@ namespace Raumverwaltung_HMWK
}
/**
* <summary>
* Ein neues ChangeUserWindow wird geöffnet. Die Funktion wird aufgerufen, wenn "Benutzer-Suchen" im Reiter ausgewählt wurde.
* </summary>
*/
private void ChangeUser(object sender, RoutedEventArgs e)
{
......
using System;
using System.Configuration;
using System.Windows.Controls;
using System.Windows.Media.Imaging;
namespace Raumverwaltung_HMWK
{
/**
* <summary>
* Die Klasse wird als Formatierungsmittel für die Räume in der Übersicht im MainWindow verwendet. Jedes OverviewItem
* bekommt die ID, eine farbliche Erkennung, Raumname & -größe sowie Obergrenze der Arbeitsplätze des Raumes übergeben, zusätzlich wird
* die aktuelle Anzahl an Nutzern im Raum ermittelt. Jedes OverViewItem stellt eine Zeile in der Übersicht da.
* </summary>
*/
public class OverViewItem
{
/**
* <param name="Id">
* Id des Raumes
* </param>
*/
public int Id { get; set; }
/**
* <param name="MyImage">
* farbliches Feld zu Beginn jedes Items: Rot, gelb, grün & blau
* </param>
*/
public BitmapImage MyImage { get; set; }
/**
* <param name="RoomName">
* übergebener Raumname
* </param>
*/
public string RoomName{ get; set; }
/**
* <param name="RoomSize">
* übergebene Raumgröße
* </param>
*/
public double RoomSize{ get; set; }
/**
* <param name="MaxWp">
* Obergrenze an Arbeitsplätzen (wird gesetzt vom User)
* </param>
*/
public int MaxWp{ get; set; }
/**
* <param name="RealAmountUsers">
* wird im Konstruktor gesetzt: die aktuelle Anzahl an Nutzern im Raum
* </param>
*/
public int RealAmountUsers { get; set; }
/**
* <summary>
* Konstruktor des OverViewItems. Bekommt id, name und roomSize von den Räumen übergeben, MaxWp und RealAmountUsers
* wird aus der Datenbank ermittelt. Je nach Auslastung der Arbeitsplätze wird die Farbe des Bilds gesetzt.
* </summary>
*/
public OverViewItem(int id, string name, double roomSize)
{
Id = id;
......
namespace Raumverwaltung_HMWK
{
/**
* <summary>
* Die Klasse Punkt wird für die Ermittlung & Verschiebung der Buttons im FloorWindow ermittelt, genauer gesagt
* für das Casting der x- und y-Werte, um Diese in die Datenbank zu überführen.
* </summary>
*/
public class Punkt
{
public double X => x;
......
namespace Raumverwaltung_HMWK
{
/**
* <summary>
* Die Klasse Room stellt die Räume dar. Jeder Raum hat in der Anwendung als auch in der Datenbank eine Id, einen Namen,
* eine Raumgröße, einen x- und y-Wert für die Positionierung des Buttons (Repräsentant), eine Obergrenze für die Arbeitsplätze,
* sowie eine Stockwerk-Id als Fremdschlüssel hinterlegt.
* </summary>
*/
public class Room
{
private int id;
private string name;
private double size;
/**
* <param name="x">
* x-Koordinate des Buttons, welcher den Raum als graphische Schaltfläche repräsentiert.
* </param>
*/
private double x;
/**
* <param name="y">
* xyKoordinate des Buttons, welcher den Raum als graphische Schaltfläche repräsentiert.
* </param>
*/
private double y;
/**
* <param name="maxWP">
* Obergrenze der Arbeitsplätze für den Raum. Kann auch überschritten werden, die Farbfestlegung bleibt dann bei rot.
* Kann frei vom Nutzer gesetzt werden, dient lediglich als Auslastungsorientierung.
* </param>
*/
private int maxWP;
/**
* <param name="floorId">
* Fremdschlüssel von der Stockwerk-ID
* </param>
*/
private int floorId;
//Standardkonstruktor: Notwendig für Datenbank
public Room()
{
}
public Room(string name)
{
}
public int Id
{
get { return id; }
......@@ -58,7 +79,7 @@
set { floorId = value; }
}
// Formatierung: Ausgabe der Räume über den Namen
public override string ToString()
{
return name;
......
......@@ -8,12 +8,51 @@ using System.Windows.Media;
namespace Raumverwaltung_HMWK
{
/**
* <summary>
* Das RoomWindow öffnet sich, sobald ein beliebiger Button, welcher einen Raum repräsentiert, ausgewählt wird.
* Ein RoomWindow kann nur von einem FloorWindow aus geöffnet werden. Jedes Raumfenster zeigt die ID, Raumgröße und
* Obergrenze an Arbeitsplätzen an. Außerdem werden zwei Listen zu dem Raum ausgegeben: Die Liste mit den Nutzern zu dem Raum
* sowie die Liste mit den dazugehörigen Assets.