Ejemplo n.º 1
0
        /// <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);
            }
        }
Ejemplo n.º 2
0
        /// <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 = "";
                }
            }
        }