namespace Webzine.WebApplication.Areas.Administration.Controllers;
using Microsoft.AspNetCore.Mvc;
using Webzine.Entity;
using Webzine.Repository.Contracts;
using Webzine.WebApplication.Areas.Administration.ViewModels.Artiste;
///
/// Contrôleur pour la gestion des artistes dans l'administration du webzine.
///
[Area("Administration")]
public class ArtisteController : Controller
{
// Injection du logger via le constructeur
private readonly ILogger logger;
private readonly IArtisteRepository artisteRepository;
///
/// Initializes a new instance of the class.
/// Initialise une nouvelle instance de la classe .
///
/// Logger.
/// Repository pour les artistes.
public ArtisteController(
ILogger logger,
IArtisteRepository artisteRepository)
{
this.logger = logger;
this.artisteRepository = artisteRepository;
}
///
/// Affiche la liste des artistes.
///
/// Redirection.
public IActionResult Index()
{
IEnumerable artistes = this.artisteRepository.FindAll().OrderBy(t => t.Nom);
return this.View(artistes);
}
///
/// Renvoie à la page pour créer un artiste.
///
/// Redirection.
public IActionResult Create()
{
return this.View();
}
///
/// Formulaire de création d'un artiste.
///
/// Paramètre nécessaire pour la création d'un artiste.
/// Redirection sur la page Index.
[HttpPost]
public IActionResult Create(ArtisteCreateViewModel model)
{
// Créer un objet Artiste avecc les paramètres.
var artiste = new Artiste
{
Nom = model.Nom,
Biographie = model.Biographie,
};
// Persister les données.
this.artisteRepository.Add(artiste);
// Renvoyer sur la page Index.
return this.RedirectToAction("Index");
}
///
/// Renvoie à la page modifier un artiste.
///
/// L'identifiant de l'artiste à modifier.
/// Redirection.
public IActionResult Edit(int id)
{
var artiste = this.artisteRepository.Find(id);
if (artiste == null)
{
return this.RedirectToAction("Index");
}
return this.View(artiste);
}
///
/// Traitement du formulaire de modification d'un artiste.
///
/// Paramètre d'un artiste.
/// Redirection sur Index.
[HttpPost]
public IActionResult Edit(ArtisteEditViewModel model)
{
var artiste = new Artiste
{
IdArtiste = model.Id,
Nom = model.Nom,
Biographie = model.Biographie,
};
this.artisteRepository.Update(artiste);
return this.RedirectToAction("Index");
}
///
/// Renvoie à la page supprimer un artiste.
///
/// L'identifiant de l'artiste à supprimer.
/// Redirection.
public IActionResult Delete(int id)
{
var artiste = this.artisteRepository.Find(id);
if (artiste == null)
{
return this.RedirectToAction("Index");
}
var model = new AdminArtisteForm
{
Id = id,
Nom = artiste.Nom,
Biographie = artiste.Biographie,
};
return this.View(model);
}
///
/// Méthode POST pour supprimer un artiste.
///
/// L'artiste à supprimer.
/// Redirige vers la page d'index d'admin artiste.
[HttpPost]
public IActionResult Delete(AdminArtisteForm model)
{
var artiste = this.artisteRepository.Find(model.Id);
if (artiste != null)
{
this.artisteRepository.Delete(artiste);
}
return this.RedirectToAction("Index");
}
}