Compare commits
4 commits
5-assurer-
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 4e08081115 | |||
| bf03d509b0 | |||
| 6d175107ff | |||
|
|
d3c26085e3 |
25 changed files with 1051 additions and 140 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -360,4 +360,6 @@ MigrationBackup/
|
|||
.ionide/
|
||||
|
||||
# Fody - auto-generated XML schema
|
||||
FodyWeavers.xsd
|
||||
FodyWeavers.xsd
|
||||
/docs/tools
|
||||
/docs/phpdoc.dist.xml
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DocumentationFile>bin\Debug\MediaTekDocuments.xml</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
|
|
|
|||
|
|
@ -5,15 +5,30 @@ using System;
|
|||
|
||||
namespace MediaTekDocuments.controller
|
||||
{
|
||||
/// <summary>
|
||||
/// Contrôleur pour la fenêtre d'authentification
|
||||
/// </summary>
|
||||
class FrmAuthController
|
||||
{
|
||||
/// <summary>
|
||||
/// Objet d'accès aux données
|
||||
/// </summary>
|
||||
private readonly Access access;
|
||||
|
||||
/// <summary>
|
||||
/// Constructeur : récupère l'instance unique d'accès aux données
|
||||
/// </summary>
|
||||
public FrmAuthController()
|
||||
{
|
||||
access = Access.GetInstance();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Vérifie les identifiants de connexion
|
||||
/// </summary>
|
||||
/// <param name="login">Identifiant de l'utilisateur</param>
|
||||
/// <param name="pwd">Mot de passe de l'utilisateur</param>
|
||||
/// <returns>Objet Utilisateur si connexion réussie, null sinon</returns>
|
||||
public Utilisateur GetConnection(string login, string pwd)
|
||||
{
|
||||
return access.GetConnection(login, pwd);
|
||||
|
|
|
|||
|
|
@ -98,46 +98,90 @@ namespace MediaTekDocuments.controller
|
|||
return access.CreerExemplaire(exemplaire);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Récupère les commandes d'un document
|
||||
/// </summary>
|
||||
/// <param name="idDocument">Identifiant du document</param>
|
||||
/// <returns>Liste des commandes du document</returns>
|
||||
public List<CommandeDocument> GetCommandesDocument(string idDocument)
|
||||
{
|
||||
return Access.GetInstance().GetCommandesDocument(idDocument);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Supprime une commande de document
|
||||
/// </summary>
|
||||
/// <param name="commande">Objet CommandeDocument à supprimer</param>
|
||||
/// <returns>True si la suppression a pu se faire</returns>
|
||||
public bool SupprimerCommandeDocument(CommandeDocument commande)
|
||||
{
|
||||
return Access.GetInstance().DeleteCommande(commande.Id);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Récupère la liste des suivis
|
||||
/// </summary>
|
||||
/// <returns>Liste d'objets Categorie (suivi)</returns>
|
||||
public List<Categorie> GetAllSuivis()
|
||||
{
|
||||
return Access.GetInstance().GetAllSuivis();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Crée une nouvelle commande de document
|
||||
/// </summary>
|
||||
/// <param name="commande">Objet CommandeDocument à créer</param>
|
||||
/// <returns>True si la création a pu se faire</returns>
|
||||
public bool createCommande(CommandeDocument commande)
|
||||
{
|
||||
return access.CreerCommande(commande);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Récupère le prochain identifiant de commande
|
||||
/// </summary>
|
||||
/// <returns>Identifiant de commande formaté</returns>
|
||||
public string GetNextCommandeId()
|
||||
{
|
||||
return access.GetNextCommandeId();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Met à jour l'état de suivi d'une commande
|
||||
/// </summary>
|
||||
/// <param name="idCommande">Identifiant de la commande</param>
|
||||
/// <param name="idSuivi">Identifiant du nouvel état de suivi</param>
|
||||
/// <returns>True si la mise à jour a pu se faire</returns>
|
||||
public bool UpdateSuiviCommande(string idCommande, string idSuivi)
|
||||
{
|
||||
return access.UpdateSuiviCommande(idCommande, idSuivi);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Récupère les abonnements d'une revue
|
||||
/// </summary>
|
||||
/// <param name="idRevue">Identifiant de la revue</param>
|
||||
/// <returns>Liste des abonnements de la revue</returns>
|
||||
public List<Abonnement> GetAbonnements(string idRevue)
|
||||
{
|
||||
return access.GetAbonnements(idRevue);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Crée un nouvel abonnement
|
||||
/// </summary>
|
||||
/// <param name="abonnement">Objet Abonnement à créer</param>
|
||||
/// <returns>True si la création a pu se faire</returns>
|
||||
public bool CreerAbonnement(Abonnement abonnement)
|
||||
{
|
||||
return access.CreerAbonnement(abonnement);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Supprime un abonnement
|
||||
/// </summary>
|
||||
/// <param name="abonnement">Objet Abonnement à supprimer</param>
|
||||
/// <returns>True si la suppression a pu se faire</returns>
|
||||
public bool SupprimerAbonnement(Abonnement abonnement)
|
||||
{
|
||||
return access.SupprimerAbonnement(abonnement.Id);
|
||||
|
|
|
|||
|
|
@ -34,7 +34,8 @@ namespace MediaTekDocuments.dal
|
|||
private const string POST = "POST";
|
||||
/// <summary>
|
||||
/// méthode HTTP pour update
|
||||
///
|
||||
/// </summary>
|
||||
private const string PUT = "PUT";
|
||||
|
||||
/// <summary>
|
||||
/// méthode HTTP pour delete
|
||||
|
|
@ -68,6 +69,10 @@ namespace MediaTekDocuments.dal
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Création et retour de l'instance unique de la classe
|
||||
/// </summary>
|
||||
/// <returns>instance unique de la classe</returns>
|
||||
public static Access GetInstance()
|
||||
{
|
||||
if (instance == null)
|
||||
|
|
@ -266,6 +271,11 @@ namespace MediaTekDocuments.dal
|
|||
return lesCommandes;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Supprime une commande
|
||||
/// </summary>
|
||||
/// <param name="idCommande">ID de la commande à supprimer</param>
|
||||
/// <returns>True si la suppression a pu se faire</returns>
|
||||
public bool DeleteCommande(string idCommande)
|
||||
{
|
||||
|
||||
|
|
@ -282,12 +292,21 @@ namespace MediaTekDocuments.dal
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Récupère la liste des suivis
|
||||
/// </summary>
|
||||
/// <returns>Liste des suivis</returns>
|
||||
public List<Categorie> GetAllSuivis()
|
||||
{
|
||||
IEnumerable<Categorie> lesSuivis = TraitementRecup<Categorie>(GET, "suivi", null);
|
||||
return new List<Categorie>(lesSuivis);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Crée une commande de document
|
||||
/// </summary>
|
||||
/// <param name="commande">Objet CommandeDocument à créer</param>
|
||||
/// <returns>True si la création a pu se faire</returns>
|
||||
public bool CreerCommande(CommandeDocument commande)
|
||||
{
|
||||
String jsonExemplaire = JsonConvert.SerializeObject(commande, new CustomDateTimeConverter());
|
||||
|
|
@ -303,6 +322,10 @@ namespace MediaTekDocuments.dal
|
|||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Récupère le prochain identifiant de commande
|
||||
/// </summary>
|
||||
/// <returns>Prochain ID de commande au format string</returns>
|
||||
public string GetNextCommandeId()
|
||||
{
|
||||
List<dynamic> result = TraitementRecup<dynamic>(GET, "maxcommande", null);
|
||||
|
|
@ -321,6 +344,13 @@ namespace MediaTekDocuments.dal
|
|||
}
|
||||
return "0001";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Met à jour le suivi d'une commande
|
||||
/// </summary>
|
||||
/// <param name="idCommande">ID de la commande</param>
|
||||
/// <param name="idSuivi">Nouvel ID de suivi</param>
|
||||
/// <returns>True si la mise à jour a pu se faire</returns>
|
||||
public bool UpdateSuiviCommande(string idCommande, string idSuivi)
|
||||
{
|
||||
String jsonSuivi = convertToJson("idSuivi", idSuivi);
|
||||
|
|
@ -337,12 +367,22 @@ namespace MediaTekDocuments.dal
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Récupère les abonnements d'une revue
|
||||
/// </summary>
|
||||
/// <param name="idRevue">ID de la revue</param>
|
||||
/// <returns>Liste des abonnements</returns>
|
||||
public List<Abonnement> GetAbonnements(string idRevue)
|
||||
{
|
||||
string jsonIdRevue = convertToJson("id", idRevue);
|
||||
return TraitementRecup<Abonnement>(GET, "commanderevue/" + jsonIdRevue, null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Crée un abonnement
|
||||
/// </summary>
|
||||
/// <param name="abonnement">Objet Abonnement à créer</param>
|
||||
/// <returns>True si la création a pu se faire</returns>
|
||||
public bool CreerAbonnement(Abonnement abonnement)
|
||||
{
|
||||
string jsonAbonnement = JsonConvert.SerializeObject(abonnement, new CustomDateTimeConverter());
|
||||
|
|
@ -359,6 +399,11 @@ namespace MediaTekDocuments.dal
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Supprime un abonnement
|
||||
/// </summary>
|
||||
/// <param name="idAbonnement">ID de l'abonnement à supprimer</param>
|
||||
/// <returns>True si la suppression a pu se faire</returns>
|
||||
public bool SupprimerAbonnement(string idAbonnement)
|
||||
{
|
||||
string jsonId = convertToJson("id", idAbonnement);
|
||||
|
|
@ -373,6 +418,12 @@ namespace MediaTekDocuments.dal
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tente de connecter un utilisateur
|
||||
/// </summary>
|
||||
/// <param name="login">Login de l'utilisateur</param>
|
||||
/// <param name="pwd">Mot de passe de l'utilisateur</param>
|
||||
/// <returns>Objet Utilisateur si connecté, null sinon</returns>
|
||||
public Utilisateur GetConnection(string login, string pwd)
|
||||
{
|
||||
Dictionary<string, string> loginInfo = new Dictionary<string, string>
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ namespace MediaTekDocuments.manager
|
|||
/// </summary>
|
||||
/// <param name="uriApi">adresse de l'api</param>
|
||||
/// <param name="authenticationString">chaîne d'authentificatio (login:pwd)</param>
|
||||
/// <returns></returns>
|
||||
/// <returns>Instance unique de la classe ApiRest</returns>
|
||||
public static ApiRest GetInstance(String uriApi, String authenticationString)
|
||||
{
|
||||
if(instance == null)
|
||||
|
|
|
|||
|
|
@ -1,15 +1,41 @@
|
|||
using System;
|
||||
using System;
|
||||
|
||||
namespace MediaTekDocuments.model
|
||||
{
|
||||
/// <summary>
|
||||
/// Classe métier Abonnement (contient les informations sur un abonnement à une revue)
|
||||
/// </summary>
|
||||
public class Abonnement
|
||||
{
|
||||
/// <summary>
|
||||
/// Obtient ou définit l'identifiant de l'abonnement
|
||||
/// </summary>
|
||||
public string Id { get; set; }
|
||||
/// <summary>
|
||||
/// Obtient ou définit la date de la commande
|
||||
/// </summary>
|
||||
public DateTime DateCommande { get; set; }
|
||||
/// <summary>
|
||||
/// Obtient ou définit le montant de l'abonnement
|
||||
/// </summary>
|
||||
public double Montant { get; set; }
|
||||
/// <summary>
|
||||
/// Obtient ou définit la date de fin de l'abonnement
|
||||
/// </summary>
|
||||
public DateTime DateFinAbonnement { get; set; }
|
||||
/// <summary>
|
||||
/// Obtient ou définit l'identifiant de la revue associée
|
||||
/// </summary>
|
||||
public string IdRevue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Initialise une nouvelle instance de la classe <see cref="Abonnement"/>
|
||||
/// </summary>
|
||||
/// <param name="id">Identifiant de l'abonnement</param>
|
||||
/// <param name="dateCommande">Date de la commande</param>
|
||||
/// <param name="montant">Montant de l'abonnement</param>
|
||||
/// <param name="dateFinAbonnement">Date de fin de l'abonnement</param>
|
||||
/// <param name="idRevue">Identifiant de la revue associée</param>
|
||||
public Abonnement(string id, DateTime dateCommande, double montant, DateTime dateFinAbonnement, string idRevue)
|
||||
{
|
||||
this.Id = id;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
|
||||
|
||||
namespace MediaTekDocuments.model
|
||||
{
|
||||
/// <summary>
|
||||
|
|
@ -6,9 +6,20 @@ namespace MediaTekDocuments.model
|
|||
/// </summary>
|
||||
public class Categorie
|
||||
{
|
||||
/// <summary>
|
||||
/// Obtient l'identifiant de la catégorie
|
||||
/// </summary>
|
||||
public string Id { get; }
|
||||
/// <summary>
|
||||
/// Obtient le libellé de la catégorie
|
||||
/// </summary>
|
||||
public string Libelle { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Initialise une nouvelle instance de la classe <see cref="Categorie"/>
|
||||
/// </summary>
|
||||
/// <param name="id">Identifiant de la catégorie</param>
|
||||
/// <param name="libelle">Libellé de la catégorie</param>
|
||||
public Categorie(string id, string libelle)
|
||||
{
|
||||
this.Id = id;
|
||||
|
|
@ -18,7 +29,7 @@ namespace MediaTekDocuments.model
|
|||
/// <summary>
|
||||
/// Récupération du libellé pour l'affichage dans les combos
|
||||
/// </summary>
|
||||
/// <returns>Libelle</returns>
|
||||
/// <returns>Le libellé de la catégorie</returns>
|
||||
public override string ToString()
|
||||
{
|
||||
return this.Libelle;
|
||||
|
|
|
|||
|
|
@ -1,17 +1,51 @@
|
|||
using System;
|
||||
using System;
|
||||
|
||||
namespace MediaTekDocuments.model
|
||||
{
|
||||
/// <summary>
|
||||
/// Classe métier CommandeDocument (contient les informations sur une commande de livres ou de DVD)
|
||||
/// </summary>
|
||||
public class CommandeDocument
|
||||
{
|
||||
/// <summary>
|
||||
/// Obtient ou définit l'identifiant de la commande
|
||||
/// </summary>
|
||||
public string Id { get; set; }
|
||||
/// <summary>
|
||||
/// Obtient ou définit la date de la commande
|
||||
/// </summary>
|
||||
public DateTime DateCommande { get; set; }
|
||||
/// <summary>
|
||||
/// Obtient ou définit le montant de la commande
|
||||
/// </summary>
|
||||
public double Montant { get; set; }
|
||||
/// <summary>
|
||||
/// Obtient ou définit le nombre d'exemplaires commandés
|
||||
/// </summary>
|
||||
public int NbExemplaire { get; set; }
|
||||
/// <summary>
|
||||
/// Obtient ou définit l'identifiant du livre ou DVD associé
|
||||
/// </summary>
|
||||
public string IdLivreDvd { get; set; }
|
||||
/// <summary>
|
||||
/// Obtient ou définit l'identifiant de l'état de suivi de la commande
|
||||
/// </summary>
|
||||
public int IdSuivi { get; set; }
|
||||
/// <summary>
|
||||
/// Obtient ou définit le libellé de l'état de suivi
|
||||
/// </summary>
|
||||
public string LibelleSuivi { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Initialise une nouvelle instance de la classe <see cref="CommandeDocument"/>
|
||||
/// </summary>
|
||||
/// <param name="id">Identifiant de la commande</param>
|
||||
/// <param name="dateCommande">Date de la commande</param>
|
||||
/// <param name="montant">Montant de la commande</param>
|
||||
/// <param name="nbExemplaire">Nombre d'exemplaires</param>
|
||||
/// <param name="idLivreDvd">Identifiant du document (livre ou dvd)</param>
|
||||
/// <param name="idSuivi">Identifiant du suivi</param>
|
||||
/// <param name="libelleSuivi">Libellé du suivi</param>
|
||||
public CommandeDocument(string id, DateTime dateCommande, double montant, int nbExemplaire, string idLivreDvd, int idSuivi, string libelleSuivi)
|
||||
{
|
||||
this.Id = id;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
|
||||
|
||||
namespace MediaTekDocuments.model
|
||||
{
|
||||
/// <summary>
|
||||
|
|
@ -6,16 +6,55 @@ namespace MediaTekDocuments.model
|
|||
/// </summary>
|
||||
public class Document
|
||||
{
|
||||
/// <summary>
|
||||
/// Obtient l'identifiant du document
|
||||
/// </summary>
|
||||
public string Id { get; }
|
||||
/// <summary>
|
||||
/// Obtient le titre du document
|
||||
/// </summary>
|
||||
public string Titre { get; }
|
||||
/// <summary>
|
||||
/// Obtient l'URL de l'image du document
|
||||
/// </summary>
|
||||
public string Image { get; }
|
||||
/// <summary>
|
||||
/// Obtient l'identifiant du genre du document
|
||||
/// </summary>
|
||||
public string IdGenre { get; }
|
||||
/// <summary>
|
||||
/// Obtient le libellé du genre du document
|
||||
/// </summary>
|
||||
public string Genre { get; }
|
||||
/// <summary>
|
||||
/// Obtient l'identifiant du public du document
|
||||
/// </summary>
|
||||
public string IdPublic { get; }
|
||||
/// <summary>
|
||||
/// Obtient le libellé du public du document
|
||||
/// </summary>
|
||||
public string Public { get; }
|
||||
/// <summary>
|
||||
/// Obtient l'identifiant du rayon du document
|
||||
/// </summary>
|
||||
public string IdRayon { get; }
|
||||
/// <summary>
|
||||
/// Obtient le libellé du rayon du document
|
||||
/// </summary>
|
||||
public string Rayon { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Initialise une nouvelle instance de la classe <see cref="Document"/>
|
||||
/// </summary>
|
||||
/// <param name="id">Identifiant du document</param>
|
||||
/// <param name="titre">Titre du document</param>
|
||||
/// <param name="image">URL de l'image du document</param>
|
||||
/// <param name="idGenre">Identifiant du genre</param>
|
||||
/// <param name="genre">Libellé du genre</param>
|
||||
/// <param name="idPublic">Identifiant du public</param>
|
||||
/// <param name="lePublic">Libellé du public</param>
|
||||
/// <param name="idRayon">Identifiant du rayon</param>
|
||||
/// <param name="rayon">Libellé du rayon</param>
|
||||
public Document(string id, string titre, string image, string idGenre, string genre, string idPublic, string lePublic, string idRayon, string rayon)
|
||||
{
|
||||
Id = id;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
|
||||
|
||||
namespace MediaTekDocuments.model
|
||||
{
|
||||
/// <summary>
|
||||
|
|
@ -6,10 +6,34 @@ namespace MediaTekDocuments.model
|
|||
/// </summary>
|
||||
public class Dvd : LivreDvd
|
||||
{
|
||||
/// <summary>
|
||||
/// Obtient la durée du DVD
|
||||
/// </summary>
|
||||
public int Duree { get; }
|
||||
/// <summary>
|
||||
/// Obtient le réalisateur du DVD
|
||||
/// </summary>
|
||||
public string Realisateur { get; }
|
||||
/// <summary>
|
||||
/// Obtient le synopsis du DVD
|
||||
/// </summary>
|
||||
public string Synopsis { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Initialise une nouvelle instance de la classe <see cref="Dvd"/>
|
||||
/// </summary>
|
||||
/// <param name="id">Identifiant du DVD</param>
|
||||
/// <param name="titre">Titre du DVD</param>
|
||||
/// <param name="image">URL de l'image du DVD</param>
|
||||
/// <param name="duree">Durée du DVD</param>
|
||||
/// <param name="realisateur">Réalisateur du DVD</param>
|
||||
/// <param name="synopsis">Synopsis du DVD</param>
|
||||
/// <param name="idGenre">Identifiant du genre</param>
|
||||
/// <param name="genre">Libellé du genre</param>
|
||||
/// <param name="idPublic">Identifiant du public</param>
|
||||
/// <param name="lePublic">Libellé du public</param>
|
||||
/// <param name="idRayon">Identifiant du rayon</param>
|
||||
/// <param name="rayon">Libellé du rayon</param>
|
||||
public Dvd(string id, string titre, string image, int duree, string realisateur, string synopsis,
|
||||
string idGenre, string genre, string idPublic, string lePublic, string idRayon, string rayon)
|
||||
: base(id, titre, image, idGenre, genre, idPublic, lePublic, idRayon, rayon)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
|
||||
|
||||
namespace MediaTekDocuments.model
|
||||
{
|
||||
/// <summary>
|
||||
|
|
@ -6,9 +6,20 @@ namespace MediaTekDocuments.model
|
|||
/// </summary>
|
||||
public class Etat
|
||||
{
|
||||
/// <summary>
|
||||
/// Obtient ou définit l'identifiant de l'état
|
||||
/// </summary>
|
||||
public string Id { get; set; }
|
||||
/// <summary>
|
||||
/// Obtient ou définit le libellé de l'état
|
||||
/// </summary>
|
||||
public string Libelle { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Initialise une nouvelle instance de la classe <see cref="Etat"/>
|
||||
/// </summary>
|
||||
/// <param name="id">Identifiant de l'état</param>
|
||||
/// <param name="libelle">Libellé de l'état</param>
|
||||
public Etat(string id, string libelle)
|
||||
{
|
||||
this.Id = id;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
|
||||
namespace MediaTekDocuments.model
|
||||
{
|
||||
|
|
@ -7,12 +7,35 @@ namespace MediaTekDocuments.model
|
|||
/// </summary>
|
||||
public class Exemplaire
|
||||
{
|
||||
/// <summary>
|
||||
/// Obtient ou définit le numéro de l'exemplaire
|
||||
/// </summary>
|
||||
public int Numero { get; set; }
|
||||
/// <summary>
|
||||
/// Obtient ou définit l'URL de la photo de l'exemplaire
|
||||
/// </summary>
|
||||
public string Photo { get; set; }
|
||||
/// <summary>
|
||||
/// Obtient ou définit la date d'achat de l'exemplaire
|
||||
/// </summary>
|
||||
public DateTime DateAchat { get; set; }
|
||||
/// <summary>
|
||||
/// Obtient ou définit l'identifiant de l'état de l'exemplaire
|
||||
/// </summary>
|
||||
public string IdEtat { get; set; }
|
||||
/// <summary>
|
||||
/// Obtient ou définit l'identifiant du document associé
|
||||
/// </summary>
|
||||
public string Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Initialise une nouvelle instance de la classe <see cref="Exemplaire"/>
|
||||
/// </summary>
|
||||
/// <param name="numero">Numéro de l'exemplaire</param>
|
||||
/// <param name="dateAchat">Date d'achat</param>
|
||||
/// <param name="photo">URL de la photo</param>
|
||||
/// <param name="idEtat">Identifiant de l'état</param>
|
||||
/// <param name="idDocument">Identifiant du document</param>
|
||||
public Exemplaire(int numero, DateTime dateAchat, string photo, string idEtat, string idDocument)
|
||||
{
|
||||
this.Numero = numero;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
|
||||
|
||||
namespace MediaTekDocuments.model
|
||||
{
|
||||
/// <summary>
|
||||
|
|
@ -6,6 +6,11 @@ namespace MediaTekDocuments.model
|
|||
/// </summary>
|
||||
public class Genre : Categorie
|
||||
{
|
||||
/// <summary>
|
||||
/// Initialise une nouvelle instance de la classe <see cref="Genre"/>
|
||||
/// </summary>
|
||||
/// <param name="id">Identifiant du genre</param>
|
||||
/// <param name="libelle">Libellé du genre</param>
|
||||
public Genre(string id, string libelle) : base(id, libelle)
|
||||
{
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
|
||||
|
||||
namespace MediaTekDocuments.model
|
||||
{
|
||||
/// <summary>
|
||||
|
|
@ -6,10 +6,34 @@ namespace MediaTekDocuments.model
|
|||
/// </summary>
|
||||
public class Livre : LivreDvd
|
||||
{
|
||||
/// <summary>
|
||||
/// Obtient l'ISBN du livre
|
||||
/// </summary>
|
||||
public string Isbn { get; }
|
||||
/// <summary>
|
||||
/// Obtient l'auteur du livre
|
||||
/// </summary>
|
||||
public string Auteur { get; }
|
||||
/// <summary>
|
||||
/// Obtient la collection du livre
|
||||
/// </summary>
|
||||
public string Collection { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Initialise une nouvelle instance de la classe <see cref="Livre"/>
|
||||
/// </summary>
|
||||
/// <param name="id">Identifiant du livre</param>
|
||||
/// <param name="titre">Titre du livre</param>
|
||||
/// <param name="image">URL de l'image du livre</param>
|
||||
/// <param name="isbn">ISBN du livre</param>
|
||||
/// <param name="auteur">Auteur du livre</param>
|
||||
/// <param name="collection">Collection du livre</param>
|
||||
/// <param name="idGenre">Identifiant du genre</param>
|
||||
/// <param name="genre">Libellé du genre</param>
|
||||
/// <param name="idPublic">Identifiant du public</param>
|
||||
/// <param name="lePublic">Libellé du public</param>
|
||||
/// <param name="idRayon">Identifiant du rayon</param>
|
||||
/// <param name="rayon">Libellé du rayon</param>
|
||||
public Livre(string id, string titre, string image, string isbn, string auteur, string collection,
|
||||
string idGenre, string genre, string idPublic, string lePublic, string idRayon, string rayon)
|
||||
: base(id, titre, image, idGenre, genre, idPublic, lePublic, idRayon, rayon)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
|
||||
|
||||
namespace MediaTekDocuments.model
|
||||
{
|
||||
/// <summary>
|
||||
|
|
@ -6,6 +6,18 @@ namespace MediaTekDocuments.model
|
|||
/// </summary>
|
||||
public abstract class LivreDvd : Document
|
||||
{
|
||||
/// <summary>
|
||||
/// Initialise une nouvelle instance de la classe <see cref="LivreDvd"/>
|
||||
/// </summary>
|
||||
/// <param name="id">Identifiant du document</param>
|
||||
/// <param name="titre">Titre du document</param>
|
||||
/// <param name="image">URL de l'image du document</param>
|
||||
/// <param name="idGenre">Identifiant du genre</param>
|
||||
/// <param name="genre">Libellé du genre</param>
|
||||
/// <param name="idPublic">Identifiant du public</param>
|
||||
/// <param name="lePublic">Libellé du public</param>
|
||||
/// <param name="idRayon">Identifiant du rayon</param>
|
||||
/// <param name="rayon">Libellé du rayon</param>
|
||||
protected LivreDvd(string id, string titre, string image, string idGenre, string genre,
|
||||
string idPublic, string lePublic, string idRayon, string rayon)
|
||||
: base(id, titre, image, idGenre, genre, idPublic, lePublic, idRayon, rayon)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
|
||||
|
||||
namespace MediaTekDocuments.model
|
||||
{
|
||||
/// <summary>
|
||||
|
|
@ -6,6 +6,11 @@ namespace MediaTekDocuments.model
|
|||
/// </summary>
|
||||
public class Public : Categorie
|
||||
{
|
||||
/// <summary>
|
||||
/// Initialise une nouvelle instance de la classe <see cref="Public"/>
|
||||
/// </summary>
|
||||
/// <param name="id">Identifiant du public</param>
|
||||
/// <param name="libelle">Libellé du public</param>
|
||||
public Public(string id, string libelle) : base(id, libelle)
|
||||
{
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
|
||||
|
||||
namespace MediaTekDocuments.model
|
||||
{
|
||||
/// <summary>
|
||||
|
|
@ -6,6 +6,11 @@ namespace MediaTekDocuments.model
|
|||
/// </summary>
|
||||
public class Rayon : Categorie
|
||||
{
|
||||
/// <summary>
|
||||
/// Initialise une nouvelle instance de la classe <see cref="Rayon"/>
|
||||
/// </summary>
|
||||
/// <param name="id">Identifiant du rayon</param>
|
||||
/// <param name="libelle">Libellé du rayon</param>
|
||||
public Rayon(string id, string libelle) : base(id, libelle)
|
||||
{
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
|
||||
|
||||
namespace MediaTekDocuments.model
|
||||
{
|
||||
/// <summary>
|
||||
|
|
@ -6,9 +6,29 @@ namespace MediaTekDocuments.model
|
|||
/// </summary>
|
||||
public class Revue : Document
|
||||
{
|
||||
/// <summary>
|
||||
/// Obtient ou définit la périodicité de la revue
|
||||
/// </summary>
|
||||
public string Periodicite { get; set; }
|
||||
/// <summary>
|
||||
/// Obtient ou définit le délai de mise à disposition de la revue
|
||||
/// </summary>
|
||||
public int DelaiMiseADispo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Initialise une nouvelle instance de la classe <see cref="Revue"/>
|
||||
/// </summary>
|
||||
/// <param name="id">Identifiant de la revue</param>
|
||||
/// <param name="titre">Titre de la revue</param>
|
||||
/// <param name="image">URL de l'image de la revue</param>
|
||||
/// <param name="idGenre">Identifiant du genre</param>
|
||||
/// <param name="genre">Libellé du genre</param>
|
||||
/// <param name="idPublic">Identifiant du public</param>
|
||||
/// <param name="lePublic">Libellé du public</param>
|
||||
/// <param name="idRayon">Identifiant du rayon</param>
|
||||
/// <param name="rayon">Libellé du rayon</param>
|
||||
/// <param name="periodicite">Périodicité</param>
|
||||
/// <param name="delaiMiseADispo">Délai de mise à disposition</param>
|
||||
public Revue(string id, string titre, string image, string idGenre, string genre,
|
||||
string idPublic, string lePublic, string idRayon, string rayon,
|
||||
string periodicite, int delaiMiseADispo)
|
||||
|
|
|
|||
|
|
@ -1,12 +1,42 @@
|
|||
public class Utilisateur
|
||||
/// <summary>
|
||||
/// Classe métier Utilisateur (représente un utilisateur de l'application)
|
||||
/// </summary>
|
||||
public class Utilisateur
|
||||
{
|
||||
/// <summary>
|
||||
/// Obtient ou définit l'identifiant technique de l'utilisateur
|
||||
/// </summary>
|
||||
public string Id { get; set; }
|
||||
/// <summary>
|
||||
/// Obtient ou définit l'identifiant de connexion de l'utilisateur
|
||||
/// </summary>
|
||||
public string Identifiant { get; set; }
|
||||
/// <summary>
|
||||
/// Obtient ou définit le nom de l'utilisateur
|
||||
/// </summary>
|
||||
public string Nom { get; set; }
|
||||
/// <summary>
|
||||
/// Obtient ou définit le prénom de l'utilisateur
|
||||
/// </summary>
|
||||
public string Prenom { get; set; }
|
||||
/// <summary>
|
||||
/// Obtient ou définit l'identifiant du service de l'utilisateur
|
||||
/// </summary>
|
||||
public int IdService { get; set; }
|
||||
/// <summary>
|
||||
/// Obtient ou définit le libellé du service de l'utilisateur
|
||||
/// </summary>
|
||||
public string LibelleService { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Initialise une nouvelle instance de la classe <see cref="Utilisateur"/>
|
||||
/// </summary>
|
||||
/// <param name="id">Identifiant technique</param>
|
||||
/// <param name="identifiant">Identifiant de connexion</param>
|
||||
/// <param name="nom">Nom</param>
|
||||
/// <param name="prenom">Prénom</param>
|
||||
/// <param name="idService">Identifiant du service</param>
|
||||
/// <param name="libelleService">Libellé du service</param>
|
||||
public Utilisateur(string id, string identifiant, string nom, string prenom, int idService, string libelleService)
|
||||
{
|
||||
this.Id = id;
|
||||
|
|
|
|||
|
|
@ -10,23 +10,49 @@ using System.IO;
|
|||
|
||||
namespace MediaTekDocuments.view
|
||||
{
|
||||
/// <summary>
|
||||
/// Fenêtre d'authentification de l'application.
|
||||
/// Permet à l'utilisateur de se connecter en saisissant ses identifiants.
|
||||
/// </summary>
|
||||
public partial class FrmAuth : Form
|
||||
{
|
||||
/// <summary>
|
||||
/// Instance du contrôleur pour la gestion de l'authentification.
|
||||
/// </summary>
|
||||
private readonly FrmAuthController controller;
|
||||
|
||||
/// <summary>
|
||||
/// Obtient l'utilisateur authentifié.
|
||||
/// </summary>
|
||||
public Utilisateur user { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Initialise une nouvelle instance de la classe <see cref="FrmAuth"/>.
|
||||
/// Configure le contrôleur d'authentification.
|
||||
/// </summary>
|
||||
public FrmAuth()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.controller = new FrmAuthController();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gère l'événement de chargement du formulaire.
|
||||
/// </summary>
|
||||
/// <param name="sender">La source de l'événement.</param>
|
||||
/// <param name="e">Les données de l'événement.</param>
|
||||
private void FrmAuth_Load(object sender, EventArgs e)
|
||||
{
|
||||
// Méthode laissée vide intentionnellement.
|
||||
// Aucun traitement spécifique n'est requis au chargement du formulaire d'authentification.
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gère le clic sur le bouton de connexion.
|
||||
/// Vérifie les identifiants et le service de l'utilisateur pour autoriser l'accès.
|
||||
/// </summary>
|
||||
/// <param name="sender">La source de l'événement.</param>
|
||||
/// <param name="e">Les données de l'événement.</param>
|
||||
private void btnLogin_Click(object sender, EventArgs e)
|
||||
{
|
||||
string identifiant = txtIdentifiant.Text;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -50,6 +50,7 @@
|
|||
<Reference Include="System.Windows.Forms" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="documentTest.cs" />
|
||||
<Compile Include="UnitTest1.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
|
|
|
|||
104
Mediatek.Tests/documentTest.cs
Normal file
104
Mediatek.Tests/documentTest.cs
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
using MediaTekDocuments.model;
|
||||
using System;
|
||||
|
||||
namespace Mediatek.Tests
|
||||
{
|
||||
[TestClass]
|
||||
public class ModelTests
|
||||
{
|
||||
[TestMethod]
|
||||
public void TestLivre_Initialization()
|
||||
{
|
||||
// Données de test
|
||||
string id = "001";
|
||||
string titre = "Le Seigneur des Anneaux";
|
||||
string image = "image.jpg";
|
||||
string isbn = "123456";
|
||||
string auteur = "J.R.R. Tolkien";
|
||||
string collection = "Pocket";
|
||||
string idGenre = "G01";
|
||||
string genre = "Fantastique";
|
||||
string idPublic = "P01";
|
||||
string lePublic = "Adulte";
|
||||
string idRayon = "R01";
|
||||
string rayon = "Rayon 1";
|
||||
|
||||
// Instanciation
|
||||
Livre livre = new Livre(id, titre, image, isbn, auteur, collection, idGenre, genre, idPublic, lePublic, idRayon, rayon);
|
||||
|
||||
// Assertions
|
||||
Assert.AreEqual(id, livre.Id);
|
||||
Assert.AreEqual(titre, livre.Titre);
|
||||
Assert.AreEqual(auteur, livre.Auteur);
|
||||
Assert.AreEqual(isbn, livre.Isbn);
|
||||
Assert.AreEqual(genre, livre.Genre);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void TestRevue_Initialization()
|
||||
{
|
||||
Revue revue = new Revue("003", "Science et Vie", "img.jpg", "G03", "Science", "P01", "Adulte", "R03", "Rayon 3", "Mensuel", 15);
|
||||
|
||||
Assert.AreEqual("003", revue.Id);
|
||||
Assert.AreEqual("Science et Vie", revue.Titre);
|
||||
Assert.AreEqual("Mensuel", revue.Periodicite);
|
||||
Assert.AreEqual(15, revue.DelaiMiseADispo);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
[TestClass]
|
||||
public class CommandeModelTests
|
||||
{
|
||||
[TestMethod]
|
||||
public void TestAbonnement_Initialization()
|
||||
{
|
||||
string id = "A001";
|
||||
DateTime dateCommande = new DateTime(2023, 10, 01, 0, 0, 0, DateTimeKind.Local);
|
||||
double montant = 50.5;
|
||||
DateTime dateFin = new DateTime(2024, 10, 01, 0, 0, 0, DateTimeKind.Local);
|
||||
string idRevue = "R001";
|
||||
|
||||
Abonnement abo = new Abonnement(id, dateCommande, montant, dateFin, idRevue);
|
||||
|
||||
Assert.AreEqual(id, abo.Id);
|
||||
Assert.AreEqual(montant, abo.Montant);
|
||||
Assert.AreEqual(dateFin, abo.DateFinAbonnement);
|
||||
Assert.AreEqual(idRevue, abo.IdRevue);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void TestCommandeDocument_Initialization()
|
||||
{
|
||||
CommandeDocument cmd = new CommandeDocument("C001", DateTime.Now, 25.0, 5, "L001", 1, "En cours");
|
||||
|
||||
Assert.AreEqual(5, cmd.NbExemplaire);
|
||||
Assert.AreEqual("L001", cmd.IdLivreDvd);
|
||||
Assert.AreEqual("En cours", cmd.LibelleSuivi);
|
||||
}
|
||||
}
|
||||
|
||||
[TestClass]
|
||||
public class SystemModelTests
|
||||
{
|
||||
[TestMethod]
|
||||
public void TestUtilisateur_Initialization()
|
||||
{
|
||||
Utilisateur user = new Utilisateur("1", "jdupont", "dupont", "Jean", 2, "Prêts");
|
||||
|
||||
Assert.AreEqual("jdupont", user.Identifiant);
|
||||
Assert.AreEqual("Jean", user.Prenom);
|
||||
Assert.AreEqual("Prêts", user.LibelleService);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void TestEtat_Initialization()
|
||||
{
|
||||
Etat etat = new Etat("00001", "Neuf");
|
||||
Assert.AreEqual("00001", etat.Id);
|
||||
Assert.AreEqual("Neuf", etat.Libelle);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
157
docs/index.html
Normal file
157
docs/index.html
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Documentation Technique - MediaTekDocuments</title>
|
||||
<style>
|
||||
body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; line-height: 1.6; color: #333; margin: 0; display: flex; }
|
||||
nav { width: 300px; background: #f4f4f4; border-right: 1px solid #ddd; height: 100vh; overflow-y: auto; position: fixed; padding: 20px; }
|
||||
main { margin-left: 340px; padding: 40px; max-width: 1000px; }
|
||||
h1 { color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 10px; }
|
||||
h2 { color: #2980b9; margin-top: 40px; border-bottom: 1px solid #eee; }
|
||||
h3 { color: #16a085; background: #f9f9f9; padding: 5px 10px; border-left: 4px solid #16a085; }
|
||||
.namespace { font-weight: bold; color: #7f8c8d; text-transform: uppercase; font-size: 0.9em; }
|
||||
table { width: 100%; border-collapse: collapse; margin: 20px 0; }
|
||||
th, td { text-align: left; padding: 12px; border: 1px solid #ddd; }
|
||||
th { background: #f2f2f2; }
|
||||
code { background: #f8f8f8; padding: 2px 5px; border-radius: 3px; font-family: Consolas, Monaco, 'Andale Mono', monospace; }
|
||||
.summary { font-style: italic; color: #555; margin-bottom: 15px; }
|
||||
ul { list-style-type: none; padding: 0; }
|
||||
nav ul li { margin-bottom: 8px; }
|
||||
nav a { text-decoration: none; color: #34495e; font-size: 0.95em; }
|
||||
nav a:hover { color: #3498db; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<nav>
|
||||
<h3>Sommaire</h3>
|
||||
<ul>
|
||||
<li><strong>Contrôleurs</strong>
|
||||
<ul>
|
||||
<li><a href="#FrmAuthController">FrmAuthController</a></li>
|
||||
<li><a href="#FrmMediatekController">FrmMediatekController</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><strong>Data Access</strong>
|
||||
<ul>
|
||||
<li><a href="#Access">Access (DAL)</a></li>
|
||||
<li><a href="#ApiRest">ApiRest (Manager)</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><strong>Modèles</strong>
|
||||
<ul>
|
||||
<li><a href="#Livre">Livre</a></li>
|
||||
<li><a href="#Dvd">Dvd</a></li>
|
||||
<li><a href="#Revue">Revue</a></li>
|
||||
<li><a href="#Abonnement">Abonnement</a></li>
|
||||
<li><a href="#CommandeDocument">CommandeDocument</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<main>
|
||||
<h1>Documentation Technique MediaTekDocuments</h1>
|
||||
<p>Cette documentation détaille les classes, méthodes et structures de données de l'application de gestion MediaTekDocuments.</p>
|
||||
|
||||
<section id="controllers">
|
||||
<h2>Espace de noms : MediaTekDocuments.controller</h2>
|
||||
|
||||
<h3 id="FrmAuthController">Classe FrmAuthController</h3>
|
||||
<p class="summary">Contrôleur gérant l'authentification des utilisateurs.</p>
|
||||
<table>
|
||||
<tr><th>Méthode</th><th>Description</th></tr>
|
||||
<tr>
|
||||
<td><code>GetConnection(login, pwd)</code></td>
|
||||
<td>Vérifie les identifiants. Retourne un objet <code>Utilisateur</code> ou <code>null</code>.</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h3 id="FrmMediatekController">Classe FrmMediatekController</h3>
|
||||
<p class="summary">Contrôleur principal servant d'interface entre la vue et la couche d'accès aux données.</p>
|
||||
<table>
|
||||
<tr><th>Méthode</th><th>Description</th></tr>
|
||||
<tr><td><code>GetAllLivres() / GetAllDvd() / GetAllRevues()</code></td><td>Récupère l'intégralité des documents par type.</td></tr>
|
||||
<tr><td><code>GetExemplairesRevue(idDocument)</code></td><td>Récupère la liste des exemplaires pour une revue donnée.</td></tr>
|
||||
<tr><td><code>GetCommandesDocument(idDocument)</code></td><td>Récupère les commandes (Livres/DVD) associées à un document.</td></tr>
|
||||
<tr><td><code>UpdateSuiviCommande(idCommande, idSuivi)</code></td><td>Met à jour l'état d'avancement d'une commande.</td></tr>
|
||||
<tr><td><code>CreerAbonnement(abonnement)</code></td><td>Enregistre un nouvel abonnement en base de données.</td></tr>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
<section id="dal">
|
||||
<h2>Espace de noms : MediaTekDocuments.dal & manager</h2>
|
||||
|
||||
<h3 id="Access">Classe Access</h3>
|
||||
<p class="summary">Implémentation du pattern Singleton pour l'accès centralisé aux données via l'API.</p>
|
||||
<table>
|
||||
<tr><th>Membre</th><th>Description</th></tr>
|
||||
<tr><td><code>GetInstance()</code></td><td>Retourne l'instance unique de la classe Access.</td></tr>
|
||||
<tr><td><code>convertToJson(nom, valeur)</code></td><td>Sérialise un couple clé/valeur pour les envois à l'API.</td></tr>
|
||||
<tr><td><code>GetNextCommandeId()</code></td><td>Récupère le futur identifiant de commande disponible.</td></tr>
|
||||
</table>
|
||||
|
||||
<h3 id="ApiRest">Classe ApiRest</h3>
|
||||
<p class="summary">Gère les appels HTTP bas niveau vers l'API Rest.</p>
|
||||
<ul>
|
||||
<li><strong>RecupDistant(methode, message, parametres) :</strong> Point d'entrée unique pour GET, POST, PUT, DELETE.</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section id="models">
|
||||
<h2>Espace de noms : MediaTekDocuments.model</h2>
|
||||
<p>Les classes modèles représentent les entités métier du domaine.</p>
|
||||
|
||||
<h3 id="Livre">Classe Livre (hérite de LivreDvd)</h3>
|
||||
<table>
|
||||
<tr><th>Propriété</th><th>Type</th><th>Description</th></tr>
|
||||
<tr><td><code>Isbn</code></td><td>string</td><td>Code ISBN unique du livre.</td></tr>
|
||||
<tr><td><code>Auteur</code></td><td>string</td><td>Nom de l'auteur.</td></tr>
|
||||
<tr><td><code>Collection</code></td><td>string</td><td>Collection éditoriale.</td></tr>
|
||||
</table>
|
||||
|
||||
<h3 id="Dvd">Classe Dvd (hérite de LivreDvd)</h3>
|
||||
<table>
|
||||
<tr><th>Propriété</th><th>Type</th><th>Description</th></tr>
|
||||
<tr><td><code>Duree</code></td><td>int</td><td>Durée en minutes.</td></tr>
|
||||
<tr><td><code>Realisateur</code></td><td>string</td><td>Nom du réalisateur.</td></tr>
|
||||
<tr><td><code>Synopsis</code></td><td>string</td><td>Résumé du film.</td></tr>
|
||||
</table>
|
||||
|
||||
<h3 id="Abonnement">Classe Abonnement</h3>
|
||||
<p class="summary">Gère les informations liées aux contrats de revues.</p>
|
||||
<ul>
|
||||
<li><code>DateFinAbonnement</code> : Détermine la période de validité du contrat.</li>
|
||||
<li><code>Montant</code> : Coût de l'abonnement.</li>
|
||||
</ul>
|
||||
|
||||
<h3 id="CommandeDocument">Classe CommandeDocument</h3>
|
||||
<p class="summary">Représente l'achat d'un exemplaire de livre ou de DVD.</p>
|
||||
<ul>
|
||||
<li><code>NbExemplaire</code> : Quantité commandée.</li>
|
||||
<li><code>IdSuivi / LibelleSuivi</code> : État actuel (en cours, reçu, etc.).</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section id="views">
|
||||
<h2>Espace de noms : MediaTekDocuments.view</h2>
|
||||
<h3 id="FrmMediatek">Classe FrmMediatek</h3>
|
||||
<p class="summary">Interface principale de l'application. Elle contient la logique de filtrage et d'affichage.</p>
|
||||
<table>
|
||||
<tr><th>Méthode</th><th>Description</th></tr>
|
||||
<tr><td><code>AlerteAbonnementsExpirants()</code></td><td>Vérifie au démarrage les abonnements finissant sous 30 jours.</td></tr>
|
||||
<tr><td><code>PeutSupprimerAbonnement()</code></td><td>Contrôle métier : interdit la suppression si des exemplaires ont été reçus.</td></tr>
|
||||
<tr><td><code>RemplirComboCategorie()</code></td><td>Méthode générique pour peupler les listes déroulantes (Genre, Public, Rayon).</td></tr>
|
||||
</table>
|
||||
</section>
|
||||
|
||||
<hr>
|
||||
<footer>
|
||||
<p>Généré le : 30 mars 2026 - Documentation technique MediaTekDocuments</p>
|
||||
</footer>
|
||||
</main>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Reference in a new issue