Afficher les adhérents avec les informations qui suivent :
nom
adresse
datePaiement (la dernière date de paiement de sa cotisation) au format JJ/MM/AAAA
ainsi que ces informations :
le nombre de livres empruntés par l’adhérent.
un message si le paiement de la cotisation est à renouveler avant un mois. (message en vert)
un message si la date de cotisation à renouveler est en retard. (message en rouge)
un petit symbole ou message si l’adhérent a emprunté un(des) livre(s) (livre(s) non rendu(s) ) et il est en retard sur sa cotisation.
Afficher des liens pour modifier ou supprimer ces enregistrements et un lien pour ajouter un enregistrement.
exemple d’interface
Affichage : On suppose que l’inscription dans la bibliothèque est valable 1 an. Indiquer à l’utilisateur si la date de cotisation à la bibliothèque est à renouveler avant 1 mois, le message est “paiement à renouveler”. Si la date de cotisation est dépassée le message est de la forme “paiement en retard depuis le jj/mm/aaaa”.
Interface pour “Ajouter, Modifier” des enregistrements de la table “adherent” :
vérifier que le nom est composé de 2 lettres au minimum
vérifier que l’adresse est composée de 2 lettres au minimum
vérifier que la date est correcte (format jj/mm/aaaa ou jj-mm-aaaa)
Lors de la création d’un enregistrement mettre la date d’aujourd’hui par défaut)
afficher les adhérents
Utiliser le code du tp précédent
Au niveau du modèle AdherentModel, récupérer les données dans la BDD avec la méthode findAllAdherents , voici un exemple de requête (il est fortement conseillé d’avoir testé la requête dans un terminal connecté à MySql)
exemple de code source
Dans le dossier “src/Controller”, compléter le code de la méthode afficherAdherents du contrôleur AdherentController, cette méthode recherche dans le modèle la liste des adhérents en utilisant la méthode findAllAdherents.
Réaliser le code de la vue showAdherents.html.twig dans le dossier templates/adherent en vous inspirant du code du précédent TP et du code ci-dessous (pour la partie date et affichage des informations)
exemple de code source
ajouter un adhérent
Objectif : afficher un formulaire pour ajouter un enregistrement dans la base de données. La date doit être saisie au format JJ/MM/AAAA.
La table “ADHERENT” est composée de 4 champs dont la clé primaire. Par rapport à la table précédente la principale difficulté est la présence d’une date. Cette date n’a pas le même format dans la base de données (format US) et sur l’interface (format Fr)
Réaliser le code de la méthode creerAdherent du contrôleur AdherentController (cette méthode affiche la vue showAdherents)
Passer à la vue la date d’aujourd’hui
$aujourdhui =new DateTime();
$donnees['datePaiement']=$aujourdhui->format('d/m/Y'); // date de cotisation convertie en chaîne de caractères
return $this->render('adherent/addAdherent.html.twig', ['donnees' => $donnees]);
Réaliser le code de la vue addAdherent.html.twig dans le dossier templates/adherent en vous inspirant du code du précédent TP et du code ci-dessous. Il n’y a pas de traitement dans un premier temps mais juste l’affichage d’un formulaire.
compléter le code de la méthode validatorAdherent du contrôleur AdherentController ; Consigne : Pour Ajouter et Modifier un enregistrement :
Il faut vérifier que le nom, l’adresse soient composés de 2 lettres au minimum.
Il faut vérifier que la date soit au bon format et ensuite que la date soit une date correcte (pas de 30/02/2020)
exemple de code source
Dans le dossier “src/Model”, réaliser le code de la méthode createAndPersistAdherent du modèle AdherentModel (il est fortement conseillé d’avoir testé la requête dans un terminal connecté à MySql). Cette méthode permet d’insérer un enregistrement dans la BDD à partir d’un tableau associatif de valeurs.
Réaliser le code de la méthode validFormCreerAdherent du contrôleur AdherentController
attention à la date en validant le formulaire, bien transformer la date
supprimer un adhérent
le code est presque identique que pour la table auteur
Consigne pour la “Suppression” : La suppression de données doit gérer les contraintes de clés étrangères. Par exemple lors de la suppression d’un adhérent, votre application doit vérifier que l’adhérent en question n’a pas d’enregistrement dans la table EMPRUNT. Si c’est le cas, prévenir l’utilisateur (message avec le nombre d’emprunts de cet adhérent dans la base à supprimer) et interdire la suppression. Autre solution, supprimer en cascade : Il est aussi possible de supprimer en cascade les enregistrements dans la table EMPRUNT puis l’adhérent après confirmation de l’utilisateur mais c’est plus délicat car il faut aussi vérifier que l’adhérent a rendu les livres.
Compléter le code de la méthode supprimerAdherent du contrôleur AdherentController
Dans le dossier “src/Model”, réaliser le code de la méthode removeByIdAdherent du modèle AdherentModel (il est fortement conseillé d’avoir testé la requête dans un terminal connecté à MySql)
Dans le dossier “src/Model”, réaliser le code de la méthode findByIdAdherentEmprunt du modèle EmpruntModel (cette requête récupère tous les emprunts dont l’identifiant de l’adhérent est passé en paramètre)
Compléter le code de la vue ErrorDeleteAdherent.html.twig dans le dossier templates/adherent
(le choix de la solution est prise en compte)
modifier un adhérent
Compléter le code de la méthode modifierAdherent du contrôleur AdherentController, cette méthode affiche la vue editAdherent.html.twig et utilise les données du modèle pour l’adhérent dont l’identifiant est passé dans l’URL. Pensez à transformer la date avant d’appeler la vue.
exemple de code source
Dans le dossier “src/Model”, réaliser le code de la méthode findOneByIdAdherent du modèle AdherentModel (il est fortement conseillé d’avoir testé la requête dans un terminal connecté à MySql)
Réaliser le code de la vue editAdherent.html.twig dans le dossier templates/adherent
Compléter le code de la méthode validFormModifierAdherent du contrôleur AdherentController,
avec comme contenu :
Traitement : si le formulaire est soumis, le navigateur envoie une requête HTTP au serveur APACHE avec comme URL le contenu de l’attribut “action”
Le routeur redirige sur la méthode passée dans l’URL
Cette méthode récupère le contenu des champs INPUT dans un tableau associatif de nom $_POST
Cette méthode vérifie que les contenus de ces champs INPUT sont corrects.
Si ces champs sont corrects, la méthode fait appel au modèle pour modifier un enregistrement et fait une redirection (changement d’URL) pour afficher le contenu de la table
Sinon le formulaire est ré-affiché avec le contenu des champs saisis, les erreurs sont aussi affichées.
évaluation
afficher les adhérents
créer un adhérent
valider sans saisir d’information
saisir votre nom et votre prénom
valider
créer un deuxième adhérent (saisir votre nom et un autre prénom)
modifier ce deuxième adhérent
supprimer le nom
valider sans saisir d’information
saisir un autre nom (qui commence par les mêmes lettres) et un autre prénom
valider
Tester les dates :
supprimer cet adhérent
essayer de supprimer un adhérent qui possède des emprunts enregistrées.