diff --git a/RestaurantManager/Menu/Dish.cs b/RestaurantManager/Menu/Dish.cs new file mode 100644 index 0000000..7fdc42e --- /dev/null +++ b/RestaurantManager/Menu/Dish.cs @@ -0,0 +1,15 @@ +namespace RestaurantManager; + +public class Dish +{ + public int ID; + public string Name; + public decimal Price; + + public Dish(int id, string name, decimal price) + { + this.ID = id; + this.Name = name; + this.Price = price; + } +} \ No newline at end of file diff --git a/RestaurantManager/Menu/Menu.cs b/RestaurantManager/Menu/Menu.cs new file mode 100644 index 0000000..f8fae8e --- /dev/null +++ b/RestaurantManager/Menu/Menu.cs @@ -0,0 +1,31 @@ +namespace RestaurantManager; + +public class Menu +{ + public int ID; + public string Name; + public List Categories; + + public Menu(int id, string name) + { + this.ID = id; + this.Name = name; + this.Categories = LoadCategoriesFromDatabase(); + } + + + private List LoadCategoriesFromDatabase() + { + List> categories = Program.Database.Execute( + """ + SELECT mc.* + FROM menu_categories mc + JOIN menu_category_links mcl ON mc.id = mcl.category_id + WHERE mcl.menu_id = %s + """, ID); + + return categories.Select(c => new MenuCategory( + (int)(long)c[0], + (string)c[1])).ToList(); + } +} \ No newline at end of file diff --git a/RestaurantManager/Menu/MenuCategory.cs b/RestaurantManager/Menu/MenuCategory.cs new file mode 100644 index 0000000..b1e4fc2 --- /dev/null +++ b/RestaurantManager/Menu/MenuCategory.cs @@ -0,0 +1,31 @@ +namespace RestaurantManager; + +public class MenuCategory +{ + public int ID; + public string Name; + public List Dishes; + + public MenuCategory(int id, string name) + { + this.ID = id; + this.Name = name; + this.Dishes = LoadDishesFromDatabase(); + } + + private List LoadDishesFromDatabase() + { + List> categories = Program.Database.Execute( + """ + SELECT dishes.* + FROM dishes + JOIN category_dish_links cdl ON dishes.id = cdl.dish_id + WHERE cdl.category_id = %s + """, ID); + + return categories.Select(d => new Dish( + (int)(long)d[0], + (string)d[1], + Convert.ToDecimal(d[2]))).ToList(); + } +} \ No newline at end of file diff --git a/RestaurantManager/Menu/MenuManager.cs b/RestaurantManager/Menu/MenuManager.cs new file mode 100644 index 0000000..63dea0e --- /dev/null +++ b/RestaurantManager/Menu/MenuManager.cs @@ -0,0 +1,15 @@ +namespace RestaurantManager; + +public static class MenuManager +{ + public static List Menus = LoadMenusFromDatabase(); + + private static List LoadMenusFromDatabase() + { + List> menus = Program.Database.Execute("SELECT * FROM menus"); + + return menus.Select(m => new Menu( + (int)(long)m[0], + (string)m[1])).ToList(); + } +} diff --git a/RestaurantManager/Program.cs b/RestaurantManager/Program.cs index c00e761..ecee156 100644 --- a/RestaurantManager/Program.cs +++ b/RestaurantManager/Program.cs @@ -2,8 +2,10 @@ static class Program { + public static readonly DatabaseConnection Database = new DatabaseConnection("DatabaseCredentials.json"); + public static void Main(string[] args) { - + } } \ No newline at end of file diff --git a/RestaurantManager/RestaurantManager.csproj b/RestaurantManager/RestaurantManager.csproj index 7257b90..9af98f9 100644 --- a/RestaurantManager/RestaurantManager.csproj +++ b/RestaurantManager/RestaurantManager.csproj @@ -2,7 +2,7 @@ Exe - net7.0 + net6.0 enable enable