/// <summary> /// Initialisation, première étape du cycle de vie donc on en profite pour créer notre modèle seulement s'il n'existe pas dans la session /// Après quoi, on ne le referra pas inutilement /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Page_Init(object sender, EventArgs e) { //On ouvre pas une connexion si le modèle est déjà construit ! //Il y a une nuance avec le postback ici car si on a frappé un problème dans le code, on aura mis le modèle à null dans la session //Ceci nous laisse donc une chance de le reconstruire ! if (Session["modeleClient"] == null) { //Gestion des exception essentielle, on gère du code "dangereux" try { //On effectue la connexion et on l'obtient en retour bd = new ConnexionBD(); OleDbConnection connection = bd.ConnectToDB(sqlDataSource1.ConnectionString); //On Instancie notre modèle client en lui passant la connection reçue modeleClient = new Modele(connection); //Si tout a fonctionné, on stocke notre modèle dans la session. C'est la meilleure façon car un PostBack va tout effacer ce qu'on vient de faire ! Session["modeleClient"] = modeleClient; } catch (Exception exc) { //message d'erreur comme quoi la BD ne sera pas disponible modeleClient.RollbackTransaction(); System.Diagnostics.Debug.Write(exc); } } }
/// <summary> /// Cette méthode liste tous les Commandes de la base de données et envoie les données en construction dans la table /// </summary> public void ListerCommandes() { //Gestion des exception essentielle, on gère du code "dangereux" try { //On s'assure que le modèle client est disponible if (Session["modeleClient"] != null) { //On le récupère et on demande les enregistrements des clients selon la requête passée en paramètre Modele modele = (Modele)Session["modeleClient"]; //Récupère les informations de la commande à modifier. OleDbDataReader readerSelectTabSelected = modele.ReadClient("SELECT Jeu.Titre, Jeu.Prix, CommandeJeu.CodeJeu, CommandeJeu.Quantité, CommandeJeu.DateCommande,CommandeJeu.IdCommande, Entrepot.Ville, Entrepot.Pays" + " FROM Jeu INNER JOIN (CommandeJeu INNER JOIN Entrepot ON CommandeJeu.IdEntrepot=Entrepot.IdEntrepot) ON Jeu.CodeJeu=CommandeJeu.CodeJeu " + "WHERE IdCommande=" + Request.QueryString["IdCommande"] + " ORDER BY CommandeJeu.DateCommande"); //On envoie notre table en construction ConstruireLabelTabSelected(readerSelectTabSelected); //!!!!!!!!!!!!!!!!!!!!!!!! //CECI EST ESSENTIEL AVANT DE FAIRE UNE AUTRE REQUETE, CECI PERMETTRA UNE AUTRE //REQUÊTE SUR LA COMMANDE QUI A ÉTÉ OUVERTE DANS LE MODÈLE. MÊME SI C'ÉTAIT LA DERNIÈRE REQUÊTE DU LOT IL FAUT LE FAIRE !!! //!!!!!!!!!!!!!!!!!!!!!!!! readerSelectTabSelected.Close(); //Récupère le titre et le code de touts les jeux pour les ajouter dans la liste déroulante de jeu. OleDbDataReader readerSelectJeu = modele.ReadClient("SELECT Titre, CodeJeu FROM Jeu"); //On envoie notre table en construction ConstruireDropDownList(DropDownListJeu, readerSelectJeu, false); //!!!!!!!!!!!!!!!!!!!!!!!! //CECI EST ESSENTIEL AVANT DE FAIRE UNE AUTRE REQUETE, CECI PERMETTRA UNE AUTRE //REQUÊTE SUR LA COMMANDE QUI A ÉTÉ OUVERTE DANS LE MODÈLE. MÊME SI C'ÉTAIT LA DERNIÈRE REQUÊTE DU LOT IL FAUT LE FAIRE !!! //!!!!!!!!!!!!!!!!!!!!!!!! readerSelectJeu.Close(); //Récupère la ville, le pays et Id des entrepot de touts les entrepot pour les ajouter dans la liste déroulante de jeu. OleDbDataReader readerSelectEntrepot = modele.ReadClient("SELECT Ville, Pays, IdEntrepot FROM Entrepot"); //On envoie notre table en construction ConstruireDropDownList(DropDownListEntrepot, readerSelectEntrepot, true); //!!!!!!!!!!!!!!!!!!!!!!!! //CECI EST ESSENTIEL AVANT DE FAIRE UNE AUTRE REQUETE, CECI PERMETTRA UNE AUTRE //REQUÊTE SUR LA COMMANDE QUI A ÉTÉ OUVERTE DANS LE MODÈLE. MÊME SI C'ÉTAIT LA DERNIÈRE REQUÊTE DU LOT IL FAUT LE FAIRE !!! //!!!!!!!!!!!!!!!!!!!!!!!! readerSelectEntrepot.Close(); } } catch (Exception exc) { //Si le probleme provenait de la transaction du modele, on la Rollback Modele modele = (Modele)Session["modeleClient"]; modele.RollbackTransaction(); //et on invalide le modele, il pourra être reconstruit en PostBack Session["modeleClient"] = null; System.Diagnostics.Debug.Write(exc); } }
//Fonction qui liste le jeu sélectionné dans la page précédente. public void ListerJeuSelectionné() { //<sspeichert> //On récupère en get la clé du site web. string codeJeu = Request.QueryString["codeJeu"]; //</sspeichert> //Gestion des exceptions essentielle, on gère du code "dangereux" try { //On s'assure que le modèle client est disponible if (Session["modeleClient"] != null) { //On le récupère et on demande les enregistrements des clients selon la requête passée en paramètre Modele modele = (Modele)Session["modeleClient"]; //<sspeichert> OleDbDataReader readerSelect = modele.ReadClient("SELECT Jeu.CodeJeu, Jeu.Titre, Jeu.Prix, Jeu.Plateforme, TypeJeu.Genre, Jeu.CodeCompagnie, Jeu.Description, Jeu.Image FROM Jeu INNER JOIN TypeJeu ON Jeu.IdGenre = TypeJeu.IdGenre WHERE Jeu.CodeJeu ='" + codeJeu + "'"); //Pendant que le reader est en train d'être lu, on entre while (readerSelect.Read()) { if (codeJeu == readerSelect[0].ToString()) { //ImageJeu.ImageUrl = "~/img/miniatures/" + readerSelect["Image"].ToString(); LabelTitreDuJeu.Text = "Titre du jeu :" + readerSelect["Titre"].ToString(); LabelGenre.Text = "Genre :" + readerSelect["Genre"].ToString(); LabelPlateforme.Text = "Plateforme :" + readerSelect["Plateforme"].ToString(); LabelPrix.Text = "Prix :" + readerSelect["Prix"].ToString(); LabelDeveloppeur.Text = "Developpeur :" + readerSelect["CodeCompagnie"].ToString(); LabelSynopsis.Text = "Synopsis :" + readerSelect["Description"].ToString(); } } //!!!!!!!!!!!!!!!!!!!!!!!! //CECI EST ESSENTIEL AVANT DE FAIRE UNE AUTRE REQUETE, CECI PERMETTRA UNE AUTRE //REQUÊTE SUR LA COMMANDE QUI A ÉTÉ OUVERTE DANS LE MODÈLE. MÊME SI C'ÉTAIT LA DERNIÈRE REQUÊTE DU LOT IL FAUT LE FAIRE !!! //!!!!!!!!!!!!!!!!!!!!!!!! readerSelect.Close(); //<sspeichert> } } catch (Exception exc) { //Si le probleme provenait de la transaction du modele, on la Rollback Modele modele = (Modele)Session["modeleClient"]; modele.RollbackTransaction(); //et on invalide le modele, il pourra être reconstruit en PostBack Session["modeleClient"] = null; System.Diagnostics.Debug.Write(exc); } }
/// <summary> /// Cette méthode liste tous les clients de la base de données et envoie les données en construction dans la table /// </summary> public void ListerClients() { //Gestion des exception essentielle, on gère du code "dangereux" try { //On s'assure que le modèle client est disponible if (Session["modeleClient"] != null) { //On le récupère et on demande les enregistrements des clients selon la requête passée en paramètre Modele modele = (Modele)Session["modeleClient"]; //Récupère touts les jeux de la BD et les enregistre dans le reader avec un trie en ordre Ascendant ou descendant. if (orderByAsc) { OleDbDataReader readerSelect = modele.ReadClient("SELECT Jeu.Titre, Jeu.Prix, CommandeJeu.CodeJeu, CommandeJeu.Quantité, CommandeJeu.DateCommande,CommandeJeu.IdCommande, Entrepot.Ville, Entrepot.Pays" + " FROM Jeu INNER JOIN (CommandeJeu INNER JOIN Entrepot ON CommandeJeu.IdEntrepot=Entrepot.IdEntrepot) ON Jeu.CodeJeu=CommandeJeu.CodeJeu " + "ORDER BY CommandeJeu.DateCommande"); //On envoie notre table en construction ConstruireTable(Jeux, readerSelect); //!!!!!!!!!!!!!!!!!!!!!!!! //CECI EST ESSENTIEL AVANT DE FAIRE UNE AUTRE REQUETE, CECI PERMETTRA UNE AUTRE //REQUÊTE SUR LA COMMANDE QUI A ÉTÉ OUVERTE DANS LE MODÈLE. MÊME SI C'ÉTAIT LA DERNIÈRE REQUÊTE DU LOT IL FAUT LE FAIRE !!! //!!!!!!!!!!!!!!!!!!!!!!!! readerSelect.Close(); } else { OleDbDataReader readerSelect = modele.ReadClient("SELECT Jeu.Titre, Jeu.Prix, CommandeJeu.CodeJeu, CommandeJeu.Quantité, CommandeJeu.DateCommande,CommandeJeu.IdCommande, Entrepot.Ville, Entrepot.Pays" + " FROM Jeu INNER JOIN (CommandeJeu INNER JOIN Entrepot ON CommandeJeu.IdEntrepot=Entrepot.IdEntrepot) ON Jeu.CodeJeu=CommandeJeu.CodeJeu " + "ORDER BY CommandeJeu.DateCommande DESC"); //On envoie notre table en construction ConstruireTable(Jeux, readerSelect); //!!!!!!!!!!!!!!!!!!!!!!!! //CECI EST ESSENTIEL AVANT DE FAIRE UNE AUTRE REQUETE, CECI PERMETTRA UNE AUTRE //REQUÊTE SUR LA COMMANDE QUI A ÉTÉ OUVERTE DANS LE MODÈLE. MÊME SI C'ÉTAIT LA DERNIÈRE REQUÊTE DU LOT IL FAUT LE FAIRE !!! //!!!!!!!!!!!!!!!!!!!!!!!! readerSelect.Close(); } } } catch (Exception exc) { //Si le probleme provenait de la transaction du modele, on la Rollback Modele modele = (Modele)Session["modeleClient"]; modele.RollbackTransaction(); //et on invalide le modele, il pourra être reconstruit en PostBack Session["modeleClient"] = null; System.Diagnostics.Debug.Write(exc); } }
protected void ButtonEnvoyer_Click(object sender, EventArgs e) { //Gestion des exception essentielle, on gère du code "dangereux" try { //On s'assure que le modèle client est disponible if (Session["modeleClient"] != null) { //<sspeichert> //On le récupère et on demande les enregistrements des clients selon la requête passée en paramètre Modele modele = (Modele)Session["modeleClient"]; //Si les boîtes de textes ont plus que zéro caractères if (TextBoxCommentaire.Text.Length > 0 && TextBoxPrenom.Text.Length > 0 && TextBoxNom.Text.Length > 0) { //On exécute la requète int rows = modele.CreateClient("INSERT INTO COMMENTAIRE (DateCreation, CommentaireEcrit, iDTypeClient, Prenom, Nom) VALUES (Now(),'" + TextBoxCommentaire.Text + "',4,'" + TextBoxPrenom.Text + "','" + TextBoxNom.Text + "')"); //Et on change les contrôles s'il y a au moins une ligne d'insérée dans la base de données! if (rows > 0) { LabelValidation.ForeColor = Color.Green; LabelValidation.Text = "Votre commentaire a été envoyé!"; LabelCommentaire.Visible = false; LabelNom.Visible = false; LabelPrenom.Visible = false; TextBoxCommentaire.Visible = false; TextBoxNom.Visible = false; TextBoxPrenom.Visible = false; ButtonEnvoyer.Visible = false; } } else //Sinon, un message d'erreur s'affiche, et c'est la que les validateurs s'activent. { LabelValidation.ForeColor = Color.DarkRed; LabelValidation.Text = "D'Oh! Il y a eu un problème concernant votre connection..."; } //</sspeichert> } } catch (Exception exc) { //Si le probleme provenait de la transaction du modele, on la Rollback Modele modele = (Modele)Session["modeleClient"]; modele.RollbackTransaction(); //et on invalide le modele, il pourra être reconstruit en PostBack Session["modeleClient"] = null; System.Diagnostics.Debug.Write(exc); } }
/// <summary> /// Cette méthode liste tous les jeux et les entrepots de la base de données et envoie les données en construction dans la table /// </summary> public void ListerClients() { //Gestion des exception essentielle, on gère du code "dangereux" try { //On s'assure que le modèle client est disponible if (Session["modeleClient"] != null) { //On le récupère et on demande les enregistrements des clients selon la requête passée en paramètre Modele modele = (Modele)Session["modeleClient"]; //tout les jeux et leur code. OleDbDataReader readerSelectJeu = modele.ReadClient("SELECT Titre, CodeJeu FROM Jeu"); //On envoie notre table en construction ConstruireDropDownList(DropDownListJeu, readerSelectJeu, false); //!!!!!!!!!!!!!!!!!!!!!!!! //CECI EST ESSENTIEL AVANT DE FAIRE UNE AUTRE REQUETE, CECI PERMETTRA UNE AUTRE //REQUÊTE SUR LA COMMANDE QUI A ÉTÉ OUVERTE DANS LE MODÈLE. MÊME SI C'ÉTAIT LA DERNIÈRE REQUÊTE DU LOT IL FAUT LE FAIRE !!! //!!!!!!!!!!!!!!!!!!!!!!!! readerSelectJeu.Close(); //Tout les ville et les pays des entrepot. OleDbDataReader readerSelectEntrepot = modele.ReadClient("SELECT Ville, Pays, IdEntrepot FROM Entrepot"); //On envoie notre table en construction ConstruireDropDownList(DropDownListEntrepot, readerSelectEntrepot, true); //!!!!!!!!!!!!!!!!!!!!!!!! //CECI EST ESSENTIEL AVANT DE FAIRE UNE AUTRE REQUETE, CECI PERMETTRA UNE AUTRE //REQUÊTE SUR LA COMMANDE QUI A ÉTÉ OUVERTE DANS LE MODÈLE. MÊME SI C'ÉTAIT LA DERNIÈRE REQUÊTE DU LOT IL FAUT LE FAIRE !!! //!!!!!!!!!!!!!!!!!!!!!!!! readerSelectEntrepot.Close(); } } catch (Exception exc) { //Si le probleme provenait de la transaction du modele, on la Rollback Modele modele = (Modele)Session["modeleClient"]; modele.RollbackTransaction(); //et on invalide le modele, il pourra être reconstruit en PostBack Session["modeleClient"] = null; System.Diagnostics.Debug.Write(exc); } }
/// <summary> //Cette méthode effectue supprime une entrée, mais "en memoire" dans la BD. Pour un impact réel dans le fichier de base de données //Il ne faut pas oublier d'appler le CommitChanges au déchargement de la page /// </summary> public void SupprimerCommande() { //Gestion des exception essentielle, on gère du code "dangereux" try { //On s'assure que le modèle client est disponible if (Session["modeleClient"] != null) { //On le récupère et on demande les enregistrements des clients selon la requête passée en paramètre Modele modele = (Modele)Session["modeleClient"]; //On peut maintenant faire notre requete //Supprime la commande selectionnée dans le formulaire Administration.aspx int numRows = modele.CreateClient("DELETE FROM CommandeJeu WHERE IdCommande= " + Request.QueryString["IdCommande"]); if (numRows >= 1) { //message de succès à l'écran PanelCommande.Enabled = false; LabelConfirmation.Text = "Commande supprimer."; } else { //message d'erreur à l'écran LabelConfirmation.Text = "Il y a eu une erreur avec votre commande veuillez réessayer ultérieurement ou contacter votre administrateur réseau."; } } } catch (Exception exc) { //Si le probleme provenait de la transaction du modele, on la Rollback Modele modele = (Modele)Session["modeleClient"]; modele.RollbackTransaction(); //et on invalide le modele, il pourra être reconstruit en PostBack Session["modeleClient"] = null; System.Diagnostics.Debug.Write(exc); } }
/// <summary> //Cette méthode effectue une mise à jour, mais "en memoire" dans la BD. Pour un impact réel dans le fichier de base de données //Il ne faut pas oublier d'appler le CommitChanges au déchargement de la page /// </summary> public void MettreAJourClient() { //Gestion des exception essentielle, on gère du code "dangereux" try { //On s'assure que le modèle client est disponible if (Session["modeleClient"] != null) { //On le récupère et on demande les enregistrements des clients selon la requête passée en paramètre Modele modele = (Modele)Session["modeleClient"]; //On peut maintenant faire notre requete //Met à jour la commande selectionnée avec les valeurs selectionnées dans les listes déroulantes. int numRows = modele.CreateClient("UPDATE CommandeJeu SET CodeJeu='" + DropDownListJeu.SelectedValue + "', Quantité='" + DropDownListQuantite.SelectedValue + "', IdEntrepot=" + int.Parse(DropDownListEntrepot.SelectedValue) + " WHERE IdCommande =" + int.Parse(Request.QueryString["IdCommande"]) + ";"); if (numRows >= 1) { //message de succès à l'écran PanelCommande.Enabled = false; LabelConfirmation.Text = "Commande modifiée."; } else { //message d'erreur à l'écran LabelConfirmation.Text = "Il y a eu une erreur avec votre commande veuillez réessayer ultérieurement ou contacter votre administrateur réseau."; } } } catch (Exception exc) { //Si le probleme provenait de la transaction du modele, on la Rollback Modele modele = (Modele)Session["modeleClient"]; modele.RollbackTransaction(); //et on invalide le modele, il pourra être reconstruit en PostBack Session["modeleClient"] = null; System.Diagnostics.Debug.Write(exc); } }
//Fonction qui liste les points de distribution. public void ListerPointsDeDistribution() { //Gestion des exceptions essentielle, on gère du code "dangereux" try { //On s'assure que le modèle client est disponible if (Session["modeleClient"] != null) { //On le récupère et on demande les enregistrements des clients selon la requête passée en paramètre Modele modele = (Modele)Session["modeleClient"]; //La requète est exécutée OleDbDataReader readerSelect = modele.ReadClient("SELECT * FROM PointDistribution"); //On envoie notre table en construction while (readerSelect.Read()) { DropDownListVilles.Items.Add(new ListItem(readerSelect[2].ToString(), readerSelect[0].ToString())); //(text,value) } //!!!!!!!!!!!!!!!!!!!!!!!! //CECI EST ESSENTIEL AVANT DE FAIRE UNE AUTRE REQUETE, CECI PERMETTRA UNE AUTRE //REQUÊTE SUR LA COMMANDE QUI A ÉTÉ OUVERTE DANS LE MODÈLE. MÊME SI C'ÉTAIT LA DERNIÈRE REQUÊTE DU LOT IL FAUT LE FAIRE !!! //!!!!!!!!!!!!!!!!!!!!!!!! readerSelect.Close(); } } catch (Exception exc) { //Si le probleme provenait de la transaction du modele, on la Rollback Modele modele = (Modele)Session["modeleClient"]; modele.RollbackTransaction(); //et on invalide le modele, il pourra être reconstruit en PostBack Session["modeleClient"] = null; System.Diagnostics.Debug.Write(exc); } }
//Fonction qui liste les jeux de la base de données. public void ListerJeux() { //Gestion des exceptions essentielle, on gère du code "dangereux" try { //On s'assure que le modèle client est disponible if (Session["modeleClient"] != null) { //On le récupère et on demande les enregistrements des clients selon la requête passée en paramètre Modele modele = (Modele)Session["modeleClient"]; OleDbDataReader readerSelect = modele.ReadClient("SELECT Jeu.CodeJeu, Jeu.Titre, Jeu.Prix, Jeu.Plateforme, TypeJeu.Genre, Jeu.Description, Jeu.Image FROM Jeu INNER JOIN TypeJeu ON Jeu.IdGenre = TypeJeu.IdGenre"); //OleDbDataReader readerSelectNom = modele.ReadClient("SELECT Nom FROM CLIENT"); //On envoie notre table en construction ConstruireTable(TableClient, readerSelect); //!!!!!!!!!!!!!!!!!!!!!!!! //CECI EST ESSENTIEL AVANT DE FAIRE UNE AUTRE REQUETE, CECI PERMETTRA UNE AUTRE //REQUÊTE SUR LA COMMANDE QUI A ÉTÉ OUVERTE DANS LE MODÈLE. MÊME SI C'ÉTAIT LA DERNIÈRE REQUÊTE DU LOT IL FAUT LE FAIRE !!! //!!!!!!!!!!!!!!!!!!!!!!!! readerSelect.Close(); } } catch (Exception exc) { //Si le probleme provenait de la transaction du modele, on la Rollback Modele modele = (Modele)Session["modeleClient"]; modele.RollbackTransaction(); //et on invalide le modele, il pourra être reconstruit en PostBack Session["modeleClient"] = null; System.Diagnostics.Debug.Write(exc); } }
//Fonction qui liste les nouveautés de la base de données. public void ListerNouveautes() { //Gestion des exceptions essentielle, on gère du code "dangereux" try { //On s'assure que le modèle client est disponible if (Session["modeleClient"] != null) { //On le récupère et on demande les enregistrements des clients selon la requête passée en paramètre Modele modele = (Modele)Session["modeleClient"]; OleDbDataReader readerSelect = modele.ReadClient("SELECT Jeu.CodeJeu, Jeu.Titre, Jeu.Prix, Jeu.Plateforme, TypeJeu.Genre, Jeu.Description, Jeu.Image FROM Jeu INNER JOIN TypeJeu ON Jeu.IdGenre = TypeJeu.IdGenre WHERE Jeu.Nouveaute = TRUE"); //On place les éléments dans la boite-liste. while (readerSelect.Read()) { ListBoxNouveautes.Items.Add(new ListItem(readerSelect[1].ToString() + " " + readerSelect[2].ToString() + " " + readerSelect[3].ToString() + " " + readerSelect[4].ToString(), readerSelect[0].ToString())); //(text,value) } //!!!!!!!!!!!!!!!!!!!!!!!! //CECI EST ESSENTIEL AVANT DE FAIRE UNE AUTRE REQUETE, CECI PERMETTRA UNE AUTRE //REQUÊTE SUR LA COMMANDE QUI A ÉTÉ OUVERTE DANS LE MODÈLE. MÊME SI C'ÉTAIT LA DERNIÈRE REQUÊTE DU LOT IL FAUT LE FAIRE !!! //!!!!!!!!!!!!!!!!!!!!!!!! readerSelect.Close(); } } catch (Exception exc) { //Si le probleme provenait de la transaction du modele, on la Rollback Modele modele = (Modele)Session["modeleClient"]; modele.RollbackTransaction(); //et on invalide le modele, il pourra être reconstruit en PostBack Session["modeleClient"] = null; System.Diagnostics.Debug.Write(exc); } }