Projet Épreuve E5: EAAssistance

Le projet "EAAssistance" est un site web conçu pour offrir de l'aide et de la consultation sur des problèmes techniques. Les utilisateurs peuvent y poser des questions et obtenir des réponses sur divers sujets liés à la technologie.

Structure et Configuration du Projet

Ce code établit la connexion à ma base de données MySQL et configure les tables nécessaires pour l'application EAAssistance.
Il utilise le module mysql pour se connecter au serveur MySQL avec des paramètres tels que l'hôte et l'utilisateur.
Une fois la connexion réussie,le code va créer la base de données ea_assistance si elle n'existe pas encore, et bascule vers cette base de données.
Il utilise ensuite des fonctions spécifiques pour créer les tables User, qui stocke les informations des utilisateurs, Text, qui stocke les messages d'assistance des clients et Solutions, qui stocke des solution aux problèmes techniques traités.
Les étapes de connexion, de création de base de données, et de création des tables sont gérées avec des vérifications d'erreurs pour assurer que le processus se déroule sans problème.
Le module exporte la connexion pour permettre à d'autres parties de l'application de communiquer avec la base de données.

Ce code contient deux fonctions principales pour gérer les utilisateurs du EAAssistance: l'enregistrement (register) et la connexion (login).
La fonction register est une API qui permet d'enregistrer de nouveaux utilisateurs dans le système.
Elle prend les données d'enregistrement du corps de la requête HTTP, y compris le nom, le prénom, le nom d'utilisateur, l'e-mail, le mot de passe, et le numéro de téléphone.
Elle vérifie que tous les champs requis sont remplis avant de hacher le mot de passe avec bcrypt.
Si l'enregistrement réussit, les informations de l'utilisateur sont stockées dans la base de données MySQL, et un message de succès est renvoyé au client.
En cas d'erreur, des messages sont renvoyés pour indiquer le problème.
La fonction login est une API qui permet aux utilisateurs de se connecter à l'application.
Elle prend l'e-mail et le mot de passe depuis le corps de la requête, vérifie leur validité, et compare le mot de passe avec la valeur hachée stockée dans la base de données.
Si le mot de passe correspond, un token JWT est généré pour identifier l'utilisateur et autoriser son accès.
Ce token peut ensuite être utilisé pour des requêtes authentifiées.

Ce code définit plusieurs fonctions pour gérer des opérations liées aux textes des utilisateurs dans une application Node.js.
Il utilise mysql pour la connexion à la base de données, avec bcrypt, jsonwebtoken, et nodemailer pour des fonctionnalités supplémentaires comme le hachage de mots de passe, la gestion des tokens JWT, et l'envoi d'e-mails.
addText : Cette fonction ajoute les demandes des utilisateurs.
Elle prend des informations comme l'identifiant de l'utilisateur, le contenu du texte, le problème lié, et l'e-mail de l'utilisateur.
Les données sont insérées dans la table user_texts de la base de données MySQL.
En cas de succès, une réponse avec un code de statut 201 est renvoyée au client pour indiquer que le texte a été ajouté avec succès.
updateText : Cette fonction permet de mettre à jour le contenu d'une pratique existante.
Elle utilise une requête SQL pour mettre à jour le champ text_content dans la table user_texts pour un identifiant de texte donné.
Si la mise à jour réussit, une réponse de succès est envoyée au client.
deleteText : Cette fonction supprime les demandes de la base de données.
Elle utilise une requête SQL pour supprimer un enregistrement dans user_texts en fonction de son identifiant.
Si la suppression réussit, une réponse de succès est renvoyée au client.
getNotes : Cette fonction récupère tous les pratiques des utilisateurs depuis la table user_texts.
Elle utilise une requête SQL pour obtenir tous les enregistrements de la table et renvoie le résultat au client.
Ces fonctions fournissent des opérations CRUD (Create, Read, Update, Delete) pour la gestion des textes des utilisateurs dans une application Node.js, avec des mécanismes de gestion des erreurs pour garantir un bon fonctionnement.

Ce code définit une fonction d'envoi d'emails, sendEmail, et utilise nodemailer pour créer un transporteur afin d'envoyer des e-mails.
La fonction prend plusieurs données du corps de la requête, telles que le destinataire (to), l'identifiant (id), le problème décrit dans le texte, la solution correspondante, l'identifiant de l'utilisateur, et l'email de l'utilisateur.
Le code configure le transporteur SMTP avec un service de messagerie (Gmail), des identifiants d'authentification, et des paramètres TLS pour autoriser des connexions sécurisées.
Ensuite, il utilise ce transporteur pour envoyer un e-mail avec des détails sur la solution du problème.
Le contenu de l'email comprend des informations telles que l'ID de la note, le problème, et la solution proposée.
Après l'envoi de l'email, le code insère les données correspondantes dans la base de données MySQL.
Il utilise une requête SQL pour stocker des informations telles que l'identifiant de la solution, l'identifiant de l'utilisateur, l'email de l'utilisateur, le problème, et la solution dans une table appelée solutions.
Si une erreur survient lors de l'insertion dans la base de données, un message d'erreur est envoyé au client.
En cas de succès, le code renvoie un message confirmant que l'email a été envoyé avec succès et que les données ont été stockées dans la base de données.
Cette fonction est utile pour communiquer des solutions à des problèmes par email et pour enregistrer ces solutions dans une base de données afin de les conserver pour référence ultérieure.

Formulaire d'assistance du client :

Interface de l'assistance avec les tickets des clients :

Schéma de la base de données :