feat: implémentation TitreAdminService pour la gestion des titres et ajout TitreAdminModèle de commande

This commit is contained in:
mirage
2026-03-31 16:53:34 +02:00
parent 21e1ab438c
commit 7c373d081b
8 changed files with 276 additions and 23 deletions

View File

@@ -0,0 +1,22 @@
namespace Webzine.Business.Contracts;
using Webzine.Business.Contracts.Models;
/// <summary>
/// Service responsable des opérations d'administration sur les titres.
/// Orchestre la résolution des dépendances (artiste, styles) et la persistance.
/// </summary>
public interface ITitreAdminService
{
/// <summary>
/// Crée un nouveau titre à partir des données du formulaire d'administration.
/// </summary>
/// <param name="commande">Les données saisies dans le formulaire de création.</param>
void CreerTitre(TitreAdminCommande commande);
/// <summary>
/// Met à jour un titre existant à partir des données du formulaire d'administration.
/// </summary>
/// <param name="commande">Les données saisies dans le formulaire de modification.</param>
void ModifierTitre(TitreAdminCommande commande);
}

View File

@@ -0,0 +1,58 @@
namespace Webzine.Business.Contracts.Models;
/// <summary>
/// Commande transportant les données métier d'un titre saisi en administration.
/// Ne contient pas les listes de sélection (celles-ci restent dans le ViewModel).
/// </summary>
public class TitreAdminCommande
{
/// <summary>
/// Identifiant du titre (0 lors d'une création).
/// </summary>
public int Id { get; set; }
/// <summary>
/// Identifiant de l'artiste sélectionné.
/// </summary>
public int IdArtiste { get; set; }
/// <summary>
/// Libellé du titre.
/// </summary>
public string Libelle { get; set; } = string.Empty;
/// <summary>
/// Nom de l'album.
/// </summary>
public string Album { get; set; } = string.Empty;
/// <summary>
/// Texte de la chronique.
/// </summary>
public string Chronique { get; set; } = string.Empty;
/// <summary>
/// Date de sortie du titre.
/// </summary>
public DateTime DateSortie { get; set; }
/// <summary>
/// Durée en secondes.
/// </summary>
public int Duree { get; set; }
/// <summary>
/// URL de la jaquette.
/// </summary>
public string UrlJaquette { get; set; } = string.Empty;
/// <summary>
/// URL d'écoute.
/// </summary>
public string? UrlEcoute { get; set; }
/// <summary>
/// Identifiants des styles sélectionnés.
/// </summary>
public List<int> Styles { get; set; } = new ();
}