/// <summary> /// Méthode reliée au bouton CdR permettant de devenir CdR si on ne l'est pas, ou accéder à la page CdR si on l'est. Inaccessible pour les utilisateurs restreints en clients /// </summary> /// <param name="sender">Bouton ""</param> /// <param name="e">Evenement Click</param> private void CdR_Click(object sender, RoutedEventArgs e) { string query = $"select CdR from client where Identifiant = \"{this.id_client}\" ;"; List <List <string> > liste = Commandes_SQL.Select_Requete(query); if (Convert.ToInt32(liste[0][0]) == 0) { string query2 = $"Update cooking.client set CdR = 1 where Identifiant = \"{this.id_client}\" ;"; string ex = Commandes_SQL.Insert_Requete(query2); CdR.Content = "Page CdR"; } else { Page_CdR Page_CdR = new Page_CdR(this.id_client); this.NavigationService.Navigate(Page_CdR); } }
/// <summary> /// Méthode reliée au bouton "Créer la recette" permettant d'ajouter une nouvelle recette dans la database /// </summary> /// <param name="sender">Bouton "Créer la recette"</param> /// <param name="e">Evenement Click</param> private void Creer_Recette_Click(object sender, RoutedEventArgs e) { //récupération infos rentrées par l'utilisateur string nom_recette_input = Nom_Recette_Box.Text; string type_recette_input = Type_Recette_Box.Text; string prix_recette_input = Prix_Recette_Box.Text; string description_recette_input = Description_Recette_Box.Text; List <List <string> > liste_produit_nom_quantite = new List <List <string> >(); for (int i = 0; i < Produits_ListView.Items.Count; i++) { Produit produit_observe = Produits_ListView.Items[i] as Produit; // si la quantité du produit observé n'est pas nulle, il fait partie de la recette if (produit_observe.Quantite != null) { List <string> temp = new List <string>(); temp.Add(produit_observe.Nom_Produit); temp.Add(produit_observe.Quantite); liste_produit_nom_quantite.Add(temp); } } // sécurité pour les input if (nom_recette_input == "" || nom_recette_input.Length > 100) { Erreur_Message.Content = "Nom doit contenir 1 à 100 caractères"; } else if (type_recette_input == "" || !type_recette_input.All(Char.IsLetter)) { Erreur_Message.Content = "Type invalide"; } else if (prix_recette_input == "" || !int.TryParse(prix_recette_input, out _) || Convert.ToInt32(prix_recette_input) > 40 || Convert.ToInt32(prix_recette_input) < 10) { Erreur_Message.Content = "Prix doit être entre 10 et 40"; } else if (description_recette_input == "" || description_recette_input.Length > 256) { Erreur_Message.Content = "Description est limitée à 256 caractères"; } else if (liste_produit_nom_quantite.Count == 0) { Erreur_Message.Content = "Aucun produit ajouté"; } else { Erreur_Message.Content = ""; // query pour insérer la nouvelle recette dans la database avec les input comme valeurs string query1 = $"INSERT INTO cooking.recette VALUES (\"{nom_recette_input}\",\"{type_recette_input}\",\"{description_recette_input}\",\"{prix_recette_input}\",2,0,\"{this.id_client}\");"; string query2 = ""; string query4 = ""; for (int i = 0; i < liste_produit_nom_quantite.Count; i++) { // query pour insérer un nouveau produit relié à sa recette dans la database avec les input comme valeurs query2 += $"INSERT INTO cooking.composition_recette VALUES (\"{nom_recette_input}\",\"{liste_produit_nom_quantite[i][0]}\",{liste_produit_nom_quantite[i][1]});"; // mise à jour des sotck min et max des produits // on a décidé d'augmenter stock min de 1 fois la quantité nécessaire pour cette recette (choix expliqué dans le rapport) // stock max est augmenté de 2 fois la quantité nécessaire pour cette recette string query3 = $"Select Stock_min, Stock_max from cooking.produit where Nom_Produit = \"{liste_produit_nom_quantite[i][0]}\" ;"; List <List <string> > Liste_stock_min_max = Commandes_SQL.Select_Requete(query3); int Nv_Stock_min = Convert.ToInt32(Liste_stock_min_max[0][0]) + Convert.ToInt32(liste_produit_nom_quantite[i][1]); int Nv_Stock_max = Convert.ToInt32(Liste_stock_min_max[0][1]) + 2 * Convert.ToInt32(liste_produit_nom_quantite[i][1]); query4 += $"Update cooking.produit set Stock_min = {Nv_Stock_min}, Stock_max = {Nv_Stock_max} where Nom_Produit = \"{liste_produit_nom_quantite[i][0]}\" ;"; } string query = query1 + query2 + query4; // si la recette porte le même nom qu'une recette existante, l'exécution échoue à la query1. Cela empêche l'exécution des query 2 et 4 string ex = Commandes_SQL.Insert_Requete(query); if (ex == $"Duplicate entry '{nom_recette_input}' for key 'recette.PRIMARY'") // si le nom_recette (clé primaire) existe déjà dans la database.recette { Erreur_Message.Content = "Nom déjà utilisé"; } else { Page_CdR page_CdR = new Page_CdR(this.id_client); this.NavigationService.Navigate(page_CdR); } } }
/// <summary> /// Méthode reliée au bouton "Reinitialiser" servant à clear toutes les textbox /// </summary> /// <param name="sender">Bouton "Reinitialiser"</param> /// <param name="e">Evenement Click</param> private void Reset_Click(object sender, RoutedEventArgs e) { Page_CdR page_CdR = new Page_CdR(this.id_client); this.NavigationService.Navigate(page_CdR); }