/// <summary> /// Méthode reliée au bouton "Valider" permettant de valider la commande et passer au paiement. Le bouton est innaccessible quand le panier est vide /// </summary> /// <param name="sender">Bouton "Valider"</param> /// <param name="e">Evenement Click</param> private void Valider_Click(object sender, RoutedEventArgs e) { if (Panier.Items.Count > 0) //s'il y a des choses dans le panier { List <List <string> > liste_panier = new List <List <string> >(); for (int index_panier = 0; index_panier < Panier.Items.Count; index_panier++) { Recette_Panier recette = Panier.Items[index_panier] as Recette_Panier; List <string> liste_recette_quantite = new List <string>(); liste_recette_quantite.Add(recette.Nom_Recette); liste_recette_quantite.Add(recette.Quantite_Recette); liste_panier.Add(liste_recette_quantite); } Validation_Paiement page_validation = new Validation_Paiement(Total.Content.ToString(), Solde.Content.ToString(), this.id_client, liste_panier); this.NavigationService.Navigate(page_validation); } }
/// <summary> /// Méthode reliée au bouton "Ajouter" permettant de passer le montant choisi de la recette sélectionnée dans le panier. La quantité faisable pour chaque recette se met à jour après l'ajout dans le panier /// Le montant total de la commande se met à jour après chaque ajout /// </summary> /// <param name="sender">Bouton "Ajouter"</param> /// <param name="e">Evenement Click</param> private void Ajouter_Click(object sender, RoutedEventArgs e) { Recette_complete selection = Liste_Recette.SelectedItem as Recette_complete; if (selection == null) { erreur.Content = "Aucune recette sélectionnée"; } if (Quantité.Text == "" || !int.TryParse(Quantité.Text, out _) || Convert.ToInt32(Quantité.Text) <= 0) { erreur.Content = "Quantité invalide"; } else { erreur.Content = ""; Recette_Panier recette_selectionnee = new Recette_Panier { Nom_Recette = selection.Nom_Recette, Quantite_Recette = Quantité.Text, Prix = selection.Prix }; List <Recette_Panier> Liste_Recette_Panier = new List <Recette_Panier>(); Liste_Recette_Panier.Add(recette_selectionnee); for (int i = 0; i < Panier.Items.Count; i++) { Liste_Recette_Panier.Add(Panier.Items[i] as Recette_Panier); } //Liste_Recette_Panier contient toutes les recettes qu'on veut évaluer List <List <string> > Nom_Conso = new List <List <string> >(); for (int i = 0; i < Liste_Recette_Panier.Count; i++) { string query = $"select Nom_Produit, Quantite_Produit from cooking.composition_recette where Nom_Recette = \"{Liste_Recette_Panier[i].Nom_Recette}\";"; List <List <string> > List_Produit_QT_dans_recette = Commandes_SQL.Select_Requete(query); for (int j = 0; j < List_Produit_QT_dans_recette.Count; j++) // pour chaque produit de cette recette { if (Nom_Conso.Count == 0) //premier item { List <string> premieritem = new List <string>(); premieritem.Add(List_Produit_QT_dans_recette[j][0]); premieritem.Add(Convert.ToString(Convert.ToInt32(List_Produit_QT_dans_recette[j][1]) * Convert.ToInt32(Liste_Recette_Panier[i].Quantite_Recette))); Nom_Conso.Add(premieritem); } else { bool copie = false; for (int k = 0; k < Nom_Conso.Count; k++) //pour chaque produit déjà enregistré { if (Nom_Conso[k][0] == List_Produit_QT_dans_recette[j][0]) { copie = true; Nom_Conso[k][1] = Convert.ToString(Convert.ToInt32(Nom_Conso[k][1]) + (Convert.ToInt32(List_Produit_QT_dans_recette[j][1]) * Convert.ToInt32(Liste_Recette_Panier[i].Quantite_Recette))); } } if (!copie) { List <string> nv_item = new List <string>(); nv_item.Add(List_Produit_QT_dans_recette[j][0]); nv_item.Add(Convert.ToString(Convert.ToInt32(List_Produit_QT_dans_recette[j][1]) * Convert.ToInt32(Liste_Recette_Panier[i].Quantite_Recette))); Nom_Conso.Add(nv_item); } } } } //on récupère le vrai stock string query2 = "Select Nom_Produit, Stock from cooking.produit"; List <List <string> > Nom_Stock = Commandes_SQL.Select_Requete(query2); bool check = true; for (int i = 0; i < Nom_Stock.Count; i++) { for (int j = 0; j < Nom_Conso.Count; j++) { if (Nom_Stock[i][0] == Nom_Conso[j][0]) { Nom_Stock[i][1] = Convert.ToString(Convert.ToInt32(Nom_Stock[i][1]) - Convert.ToInt32(Nom_Conso[j][1])); if (Convert.ToInt32(Nom_Stock[i][1]) < 0) { check = false; //pas assez de stock } } } } if (!check) { erreur.Content = "ERREUR pas assez de stock"; } else { Valider.IsEnabled = true; // on réactive le bouton erreur.Content = ""; List <Recette_complete> nouvelle_table = new List <Recette_complete>(); for (int i = 0; i < Liste_Recette.Items.Count; i++) { Recette_complete recette_observee = Liste_Recette.Items[i] as Recette_complete; string nom_recette = recette_observee.Nom_Recette; string query = $"select Nom_Produit, Quantite_Produit from cooking.composition_recette where Nom_Recette = \"{nom_recette}\";"; List <List <string> > List_Produit_QT_dans_recette = Commandes_SQL.Select_Requete(query); int min_qt_faisable = int.MaxValue; for (int j = 0; j < List_Produit_QT_dans_recette.Count; j++) //pour chaque produit { int stock_produit = 0; for (int k = 0; k < Nom_Stock.Count; k++) { if (Nom_Stock[k][0] == List_Produit_QT_dans_recette[j][0]) { stock_produit = Convert.ToInt32(Nom_Stock[k][1]); } } int quantite_pour_recette = Convert.ToInt32(List_Produit_QT_dans_recette[j][1]); int qt_faisable = stock_produit / quantite_pour_recette; if (qt_faisable < min_qt_faisable) { min_qt_faisable = qt_faisable; } } recette_observee.Qt_Faisable = min_qt_faisable; Recette_complete copie_recette = new Recette_complete { Nom_Recette = recette_observee.Nom_Recette, Type = recette_observee.Type, Descriptif = recette_observee.Descriptif, Prix = recette_observee.Prix, Qt_Faisable = min_qt_faisable }; nouvelle_table.Add(copie_recette); } Liste_Recette.Items.Clear(); for (int i = 0; i < nouvelle_table.Count; i++) { Liste_Recette.Items.Add(nouvelle_table[i]); } int ajout = Convert.ToInt32(selection.Prix) * Convert.ToInt32(Quantité.Text); Total.Content = Convert.ToString(Convert.ToInt32(Total.Content) + ajout); Panier.Items.Add(new Recette_Panier { Nom_Recette = selection.Nom_Recette, Quantite_Recette = Quantité.Text, Prix = selection.Prix }); Quantité.Text = ""; } } }