using Microsoft.AspNetCore.Mvc.Rendering;

namespace Webzine.WebApplication.Areas.Administration.ViewModels.Titre;

/// <summary>
/// ViewModel pour la création et la modification d'un titre dans l'administration.
/// </summary>
public class AdminTitreForm
{
    /// <summary>
    /// Définit l'identifiant du titre.
    /// </summary>
    public int Id { get; set; }

    /// <summary>
    /// Définit l'identifiant de l'artiste associé au titre.
    /// </summary>
    public int IdArtiste { get; set; }

    /// <summary>
    /// Définit le titre du titre.
    /// </summary>
    public string Libelle { get; set; }

    /// <summary>
    /// Définit le nom de l'album associé au titre.
    /// </summary>
    public string Album { get; set; }

    /// <summary>
    /// Définit la chronique du titre, peut-être une critique ou une description du titre.
    /// </summary>
    public string Chronique { get; set; }

    /// <summary>
    /// Définit la date de sortie du titre.
    /// </summary>
    public DateTime DateSortie { get; set; }

    /// <summary>
    /// Définit la durée du titre en secondes.
    /// </summary>
    public int Duree { get; set; }

    /// <summary>
    /// Définit l'URL de la jaquette de l'album associé au titre.
    /// </summary>
    public string UrlJaquette { get; set; }

    /// <summary>
    /// Définit l'URL d'écoute du titre.
    /// </summary>
    public string UrlEcoute { get; set; }

    /// <summary>
    /// Définit le nombre de lectures du titre.
    /// </summary>
    public int NbLectures { get; set; }

    /// <summary>
    /// Définit le nombre de likes du titre.
    /// </summary>
    public int NbLikes { get; set; }

    /// <summary>
    /// Définit la liste des identifiants des styles associés au titre.
    /// </summary>
    public List<int> Styles { get; set; } = new();

    /// <summary>
    /// Définit la liste des artistes disponibles pour la sélection dans le formulaire de création ou de modification d'un titre.
    /// </summary>
    public List<SelectListItem> Artistes { get; set; }

    /// <summary>
    /// Définit la liste des styles disponibles pour la sélection dans le formulaire de création ou de modification d'un titre.
    /// </summary>
    public List<SelectListItem> AllStyles { get; set; }
}