/// <summary>
        /// Méthode reliée au bouton "Se connecter" côté client qui vérifie si l'identifiant et le mdp rentrés par l'utilisateur correspondent à un couple identifiant/mdp dans la database
        /// </summary>
        /// <param name="sender">Bouton "Se connecter"</param>
        /// <param name="e">Evenement Click</param>
        private void Button_Click_connect_client(object sender, RoutedEventArgs e)
        {
            // Récupération des input
            string id  = ID_client.Text;
            string mdp = MDP_client.Password;

            // sécurité sur le mdp pour éviter le caractère retournant une erreur MySQL (fonction Caractere_interdit ne fonctionne pas sur les passwordBox)
            if (mdp.Contains('"'))
            {
                error_label.Content = "Guillemets (\") interdits";
            }
            else
            {
                // query pour rechercher si le couple identifiant/mdp rentré par l'utilisateur correspondant à un couple dans la database
                string query = $"Select count(*) from cooking.client where Identifiant=\"{id}\" and Mot_de_passe=\"{mdp}\";";
                List <List <string> > liste = Commandes_SQL.Select_Requete(query);
                if (liste[0][0] == "1") // si on trouve une occurence de ce couple alors le client existe
                {
                    // on navigue vers la page client en conservant l'id
                    Page_Client page_client = new Page_Client(id);
                    this.NavigationService.Navigate(page_client);
                }
                else
                {
                    error_label.Content = "Erreur client non reconnu";
                }
            }
        }
        /// <summary>
        /// Méthode reliée au bouton "Client" ramenant sur la page_Client
        /// </summary>
        /// <param name="sender">Bouton "Client"</param>
        /// <param name="e">Evenement Click</param>
        private void Client_Click(object sender, RoutedEventArgs e)
        {
            Page_Client page_client = new Page_Client(this.id_client);

            this.NavigationService.Navigate(page_client);
        }
예제 #3
0
        /// <summary>
        /// Méthode reliée au bouton "Valider" permettant de Valider le paiement.
        /// Si le contenu du bouton est "Payer le reste par CB", aucune action n'est effectuée et le client est envoyé sur la page Page_Payer_CB
        /// Si le contenu du bouton est "Confirmer", on effectue les actions suivantes :
        /// - Décrémenter le nb de crédit du client
        /// - Créer une instance de Commande
        /// --> Pour chaque recette commandée
        ///         * Rémunérer le/les CdR
        ///         * Augmenter le compteur des recettes utilisées de la quantité prise
        ///         * Augmenter le prix de vente
        ///         * Augmenter la rémunération de la recette
        ///         * Créer ses instances de Recette_Commande
        ///         * Diminuer les produits
        /// </summary>
        /// <param name="sender">Bouton "Valider"</param>
        /// <param name="e">Evenement Click</param>
        private void Valider_Click(object sender, RoutedEventArgs e)
        {
            if (Valider.Content.ToString() == "Confirmer")
            {
                // Décrémenter le nb de crédit du client
                int    nouveau_solde = Convert.ToInt32(Nv_Solde.Content);
                string query         = $"Update cooking.client set Credit_Cook = {nouveau_solde}  where Identifiant = \"{this.id_client}\" ;";
                string ex            = Commandes_SQL.Insert_Requete(query);

                // Créer une instance de Commande

                string date = $"{DateTime.Now.Year}/{DateTime.Now.Month}/{DateTime.Now.Day}";
                query = $"Insert into cooking.commande (Date, prix, Identifiant) VALUES(\"{date}\",{Total.Content},\"{this.id_client}\");";
                ex    = Commandes_SQL.Insert_Requete(query);

                // Actions pour chacune des recettes
                for (int i = 0; i < this.liste_panier.Count; i++)
                {
                    // Rémunérer le/les CdR

                    string nom_recette = this.liste_panier[i][0];
                    int    qt          = Convert.ToInt32(this.liste_panier[i][1]);
                    query = $"Select Identifiant, Remuneration, compteur, Prix_Vente from cooking.recette where Nom_Recette = \"{nom_recette}\";";
                    List <List <string> > info_recette = Commandes_SQL.Select_Requete(query);
                    string identifiant_CdR             = info_recette[0][0];
                    int    remuneration = Convert.ToInt32(info_recette[0][1]);
                    int    ajout_credit = remuneration * qt;

                    query = $"Select Credit_Cook from cooking.client where Identifiant = \"{identifiant_CdR}\";";
                    List <List <string> > Credit_CdR = Commandes_SQL.Select_Requete(query);

                    int nvCredit_CdR = Convert.ToInt32(Credit_CdR[0][0]) + ajout_credit;
                    query = $"Update cooking.client set Credit_Cook = {nvCredit_CdR} where Identifiant = \"{identifiant_CdR}\"; ";
                    ex    = Commandes_SQL.Insert_Requete(query);

                    // Augmenter le compteur des recettes utilisées de la quantité prise

                    int nvcompteur = Convert.ToInt32(info_recette[0][2]) + qt;
                    query = $"Update cooking.recette set compteur = {nvcompteur} where Nom_Recette = \"{nom_recette}\";";
                    ex    = Commandes_SQL.Insert_Requete(query);

                    // Augmenter le prix de vente
                    // Augmenter la rémunération de la recette

                    if (nvcompteur > 10 && Convert.ToInt32(info_recette[0][2]) <= 10) //nv compteur >10 et ancien <=10
                    {
                        int nv_prix          = 2 + Convert.ToInt32(info_recette[0][3]);
                        int remuneration_CdR = 2;
                        if (nvcompteur > 50 && Convert.ToInt32(info_recette[0][2]) <= 50)//nv compteur >50 et ancien <=50
                        {
                            nv_prix          = 5 + Convert.ToInt32(info_recette[0][3]);
                            remuneration_CdR = 4;
                        }
                        query = $"Update cooking.recette set Prix_Vente = {nv_prix}, Remuneration = {remuneration_CdR} where Nom_Recette = \"{nom_recette}\";";
                        ex    = Commandes_SQL.Insert_Requete(query);
                    }

                    // Créer ses instances de Recette_Commande
                    query = $"select count(*) from cooking.commande"; //notre commande est la dernière, donc Ref_Commande = count(*)
                                                                      //En effet ref_commande est un autoincrement
                    List <List <string> > List_Ref_Commande = Commandes_SQL.Select_Requete(query);


                    query = $"Insert into cooking.composition_commande VALUES (\"{nom_recette}\",{List_Ref_Commande[0][0]}, {qt} );";
                    ex    = Commandes_SQL.Insert_Requete(query);


                    //Diminuer les produits

                    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);

                    for (int j = 0; j < List_Produit_QT_dans_recette.Count; j++)
                    {
                        int diminution = qt * Convert.ToInt32(List_Produit_QT_dans_recette[j][1]);
                        query = $"select Stock from cooking.produit where Nom_Produit = \"{List_Produit_QT_dans_recette[j][0]}\";";
                        List <List <string> > List_Stock = Commandes_SQL.Select_Requete(query);
                        int nv_Stock = Convert.ToInt32(List_Stock[0][0]) - diminution;
                        query = $"Update cooking.produit set Stock = \"{nv_Stock}\" where Nom_Produit = \"{List_Produit_QT_dans_recette[j][0]}\" ;";
                        Commandes_SQL.Insert_Requete(query);
                    }
                }

                Page_Client page_Client = new Page_Client(this.id_client);
                this.NavigationService.Navigate(page_Client);
            }
            else
            {
                Page_Payer_CB page_payer_cb = new Page_Payer_CB();
                this.NavigationService.Navigate(page_payer_cb);
            }
        }