/// <summary> /// MenuDemo(MySqlConnection connexion) correspond au menu permettant d'accéder aux fonctions évaluateurs. /// Vous pouvez choisir, en tapant sur les touches indiquées, d'afficher le nombre de clients de l'application, le nombre de recettes, /// la liste des cdr, la liste des produits dont le stock actuel est inférieur au double du stock minimal, ainsi que les recettes contenant ces produits. /// </summary> /// <param name="connexion">connexion permet d'accéder à la base par des requetes commandées depuis C#</param> public static void MenuDemo(MySqlConnection connexion) { WriteLine("Bienvenue sur le menu Demo:"); WriteLine("Choisissez une action: Affichage du nombre de clients: [C]" + "\n" + "Affichage du nombre de recettes: [N]" + "\n" + "Affichage des créateurs de recette: [R]" + "\n" + "Liste des produits en basse quantité: [P]" + "\n" + "Affichage des recettes contenant les produits en basse quantité: [B]"); bool bonneentrée = false; while (bonneentrée == false) { switch (ReadKey(true).Key) { case ConsoleKey.C: Clear(); bonneentrée = true; WriteLine("Ma Petite Cuisine compte actuellement " + BaseDeDonnées.CompterTuplesTable(connexion, "cook.client;") + " clients"); ReadKey(); break; case ConsoleKey.N: Clear(); bonneentrée = true; WriteLine("Ma Petite Cuisine compte actuellement " + BaseDeDonnées.CompterTuplesTable(connexion, "cook.recette;") + " recettes"); ReadKey(); break; case ConsoleKey.R: Clear(); bonneentrée = true; BaseDeDonnées.AfficherCdrs(connexion); ReadKey(); break; case ConsoleKey.P: Clear(); bonneentrée = true; BaseDeDonnées.BasseQuantite(connexion, "2*"); ReadKey(); break; case ConsoleKey.B: Clear(); bonneentrée = true; BaseDeDonnées.RecettesBasseQuantite(connexion); ReadKey(); break; default: break; } } }
/// <summary> /// SupprimerCdr(MySqlConnection connexion) affiche tout d'abord la liste des cdr pour permettre à l'admin de choisir qui supprimer. /// S'il tape un code cdr qui n'existe pas, il doit en retaper un. /// Il a ensuite le choix de le laisser client ou non, avec un switch à deux cas. /// Dans le premier cas, on va supprimer le cdr de la table cook.cdr, ce qui va supprimer ses recettes. /// Dans le second cas, on supprime le client, donc le cdr est également supprimé. /// </summary> /// <param name="connexion">connexion permet d'accéder à la base par des requetes commandées depuis C#</param> public static void SupprimerCdr(MySqlConnection connexion) { BaseDeDonnées.AfficherCdrs(connexion); WriteLine("Tapez le code du cdr à supprimer"); string cdr = ReadLine(); while (BaseDeDonnées.VerifExistenceInstance(connexion, cdr, "codeCdr", "cdr") == false) { WriteLine("Veuillez entrer le code d'un créateur de recettes existant"); } MySqlCommand suppressionCommand = connexion.CreateCommand(); WriteLine("Souhaitez vous que cette personne reste cliente ? " + "\n" + "Oui : [O]" + "\n" + "Non : [N]"); suppressionCommand.Parameters.Add(new MySqlParameter("@code", MySqlDbType.VarChar, value: cdr, size: 4, isNullable: false, direction: default, precision: default, scale: default, sourceColumn: default, sourceVersion: default));
/// <summary> /// CreationRecette(MySqlConnection connexion) demande au cdr de choisir la recette qu'il veut créer, tout d'abord en terme de /// nom,type et descriptifs,prix de vente en vérifiant qu'elle n'existe pas déjà. /// La recette est insérée dans la table recette. /// Il doit ensuite saisir les produits un par un ainsi que les quantités requises et les stocks avant des les insérer dans la table /// (stocks si le produit n'est pas deja dans la table). /// On insère également les tuples correspondant dans cook.contenanceRecette et on actualise les stocks min et max par rapport /// à la création de notre recette. ///</summary> /// <param name="connexion">connexion permet d'accéder à la base par des requetes commandées depuis C#</param> public void CreationRecette(MySqlConnection connexion) { WriteLine("Bienvenue dans le gestionnaire de création de recettes !"); WriteLine("Veuillez saisir le type de votre recette:"); string typeRecette = ReadLine(); WriteLine("Veuillez saisir le nom de votre recette:"); string ideeRecette = ReadLine(); bool existence = BaseDeDonnées.VerifExistenceInstance(connexion, ideeRecette, "nomRecette", "Recette"); while (existence == true) { WriteLine("Cette recette est déjà répertoriée dans l'application. Veuillez entrer une autre recette."); ideeRecette = ReadLine(); existence = BaseDeDonnées.VerifExistenceInstance(connexion, ideeRecette, "nomRecette", "Recette"); } WriteLine("Veuillez décrire votre recette:"); string descriptif = ReadLine(); while (descriptif.Length > 256) { WriteLine("Votre descriptif doit se limiter à 256 caractères. Vous en avez tapé " + descriptif.Length); descriptif = ReadLine(); } WriteLine("Veuillez saisir un prix pour cette recette entre 10 et 40 cooks:"); float prix = 0; bool mauvaisprix = true; while (mauvaisprix) { prix = Program.TryParseFloat(); if (prix >= 10 && prix <= 40) { mauvaisprix = false; } } MySqlCommand saisieRecette = connexion.CreateCommand(); saisieRecette.Parameters.Add(new MySqlParameter("@recette", MySqlDbType.VarChar, value: ideeRecette, size: 20, isNullable: false, direction: default, precision: default, scale: default, sourceColumn: default, sourceVersion: default));
/// <summary> /// La méthode main permet à l'utilisateur selon qu'il soit client (client/cdr), professionnel, administrateur ou professeur (demo) /// d'avancer dans l'application jusqu'aux commandes de connection puis les fonctionnalités correspondant à leur statut. /// Les méthodes Menu ci-dessus sont appelées selon la lettre tapée par l'utilisateur. /// Une fois son action terminée, l'utilisateur peut continuer sur l'appli ou se déconnecter en tapant N. /// </summary> static void Main() { BaseDeDonnées database = new BaseDeDonnées(); MySqlConnection connexion = database.connexion(); WriteLine("Bienvenue sur Ma Petite Cuisine:" + "\n" + "Je suis client: [C]" + "\n" + "Je suis professionnel: [P]" + "\n" + "Je suis administrateur [A]" + "\n" + "Je souhaite accéder au mode démo: [D]"); bool bonneentrée = false; bool end = false; while (bonneentrée == false) { switch (ReadKey(true).Key) { case ConsoleKey.C: Clear(); bonneentrée = true; while (end == false) { MenuClient(connexion); Clear(); WriteLine("Pour vous déconnecter tapez [N] sinon pour continuer,appuyez sur n'importe quelle autre touche"); if (ReadKey(true).Key == ConsoleKey.N) { end = true; } Clear(); } break; case ConsoleKey.P: Clear(); bonneentrée = true; while (end == false) { MenuPro(connexion); Clear(); WriteLine("Pour vous déconnecter tapez [N] sinon pour continuer,appuyez sur n'importe quelle autre touche"); if (ReadKey(true).Key == ConsoleKey.N) { end = true; } Clear(); } break; case ConsoleKey.D: Clear(); bonneentrée = true; while (end == false) { MenuDemo(connexion); Clear(); WriteLine("Pour vous déconnecter tapez [N] sinon pour continuer,appuyez sur n'importe quelle autre touche"); if (ReadKey(true).Key == ConsoleKey.N) { end = true; } Clear(); } break; case ConsoleKey.A: Clear(); bonneentrée = true; while (end == false) { ActionsAdmin(connexion); Clear(); WriteLine("Pour vous déconnecter tapez [N] sinon pour continuer,appuyez sur n'importe quelle autre touche"); if (ReadKey(true).Key == ConsoleKey.N) { end = true; } Clear(); } break; default: break; } } WriteLine("Merci d'avoir utilisé notre application ! A bientot !"); database.Deconnexion(connexion); ReadKey(); }