{
{ "artistes", "Artiste" }, { "commentaires", "Commentaire" }, { "styles", "Style" }, { "titres", "Titre" },
@@ -39,9 +37,7 @@ public static class RouteConfiguration
defaults: new { area = "Administration", controller = route.Value, action = "Index" });
}
-
// --- AUTRE PROUTES ---
-
endpoints.MapControllerRoute(
name: "areas",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
From 6dc6a2e0eabf26af2032a59c5053e03126c8bf7a Mon Sep 17 00:00:00 2001
From: mirage <119869686+ClementBobin@users.noreply.github.com>
Date: Thu, 2 Apr 2026 16:34:05 +0200
Subject: [PATCH 03/10] =?UTF-8?q?fix:=20mettre=20=C3=A0=20jour=20Microsoft?=
=?UTF-8?q?.Extensions.Logging.Abstractions=20package=20r=C3=A9f=C3=A9renc?=
=?UTF-8?q?e=20=C3=A0=20la=20version=2010.0.0-preview.1.25080.5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Webzine.Business/Webzine.Business.csproj | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/Webzine.Business/Webzine.Business.csproj b/Webzine.Business/Webzine.Business.csproj
index ee626b0..9110639 100644
--- a/Webzine.Business/Webzine.Business.csproj
+++ b/Webzine.Business/Webzine.Business.csproj
@@ -25,12 +25,7 @@
-
-
-
-
- ..\..\..\..\..\..\..\.nuget\packages\microsoft.extensions.logging.abstractions\10.0.5\lib\net10.0\Microsoft.Extensions.Logging.Abstractions.dll
-
+
From ceb44f0d33f3a29964c78d23e77235fd0f277d74 Mon Sep 17 00:00:00 2001
From: mirage <119869686+ClementBobin@users.noreply.github.com>
Date: Thu, 2 Apr 2026 16:37:50 +0200
Subject: [PATCH 04/10] style: ajuster la mise en forme des balises HTML dans
Index.cshtml
---
.../Views/Titre/Index.cshtml | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/Webzine.WebApplication/Views/Titre/Index.cshtml b/Webzine.WebApplication/Views/Titre/Index.cshtml
index 215c08a..102c321 100644
--- a/Webzine.WebApplication/Views/Titre/Index.cshtml
+++ b/Webzine.WebApplication/Views/Titre/Index.cshtml
@@ -60,13 +60,14 @@
-
+
Editer
@@ -88,7 +89,7 @@
class="img-fluid rounded shadow"
alt="Jaquette"
loading="lazy"
- fetchpriority="high" />
+ fetchpriority="high"/>
@@ -121,7 +122,7 @@
+ required/>
@@ -131,9 +132,10 @@
+ rows="3"
+ class="form-control input-full"
+ placeholder="Votre commentaire..."
+ required>
@@ -168,7 +170,7 @@
width="50"
height="50"
class="rounded-circle me-3 shadow-sm"
- alt="avatar" />
+ alt="avatar"/>
@comment.Auteur ,
From 98635ba7bf8ffde2d7106cdddded90e73c42593e Mon Sep 17 00:00:00 2001
From: "b.nodon"
Date: Fri, 3 Apr 2026 09:35:35 +0200
Subject: [PATCH 05/10] #185 Message d'erreur pour les input vide.
---
.../ViewModels/Titre/AdminTitreForm.cs | 13 +++++++++++++
.../Areas/Administration/Views/Titre/_Form.cshtml | 10 ++++++++++
2 files changed, 23 insertions(+)
diff --git a/Webzine.WebApplication/Areas/Administration/ViewModels/Titre/AdminTitreForm.cs b/Webzine.WebApplication/Areas/Administration/ViewModels/Titre/AdminTitreForm.cs
index 5305732..22c5fd9 100644
--- a/Webzine.WebApplication/Areas/Administration/ViewModels/Titre/AdminTitreForm.cs
+++ b/Webzine.WebApplication/Areas/Administration/ViewModels/Titre/AdminTitreForm.cs
@@ -1,5 +1,7 @@
namespace Webzine.WebApplication.Areas.Administration.ViewModels.Titre;
+using System.ComponentModel.DataAnnotations;
+
using Microsoft.AspNetCore.Mvc.Rendering;
///
@@ -15,36 +17,47 @@ public class AdminTitreForm
///
/// Définit l'identifiant de l'artiste associé au titre.
///
+ [Required(ErrorMessage = "L'id de l'artiste est obligatoire.")]
+
public int IdArtiste { get; set; }
///
/// Définit le titre du titre.
///
+ [Required(ErrorMessage = "Le labelle est obligatoire.")]
+
public string Libelle { get; set; }
///
/// Définit le nom de l'album associé au titre.
///
+ [Required(ErrorMessage = "L'album est obligatoire.")]
+
public string Album { get; set; }
///
/// Définit la chronique du titre, peut-être une critique ou une description du titre.
///
+ [Required(ErrorMessage = "La chronique est obligatoire.")]
public string Chronique { get; set; }
///
/// Définit la date de sortie du titre.
///
+ [Required(ErrorMessage = "La date de est obligatoire.")]
+
public DateTime DateSortie { get; set; }
///
/// Définit la durée du titre en secondes.
///
+ [Required(ErrorMessage = "La durée est obligatoire.")]
public int Duree { get; set; }
///
/// Définit l'URL de la jaquette de l'album associé au titre.
///
+ [Required(ErrorMessage = "L'Url de la jaquette est obligatoire.")]
public string UrlJaquette { get; set; }
///
diff --git a/Webzine.WebApplication/Areas/Administration/Views/Titre/_Form.cshtml b/Webzine.WebApplication/Areas/Administration/Views/Titre/_Form.cshtml
index d1f4f8c..bc44d5a 100644
--- a/Webzine.WebApplication/Areas/Administration/Views/Titre/_Form.cshtml
+++ b/Webzine.WebApplication/Areas/Administration/Views/Titre/_Form.cshtml
@@ -8,6 +8,8 @@
+
+
@@ -16,6 +18,7 @@
Titre*
+
@@ -24,6 +27,7 @@
Album*
+
@@ -34,6 +38,8 @@
+
+
@@ -55,6 +61,8 @@
class="form-control"
type="number"
min="0" />
+
+
seconds
@@ -66,6 +74,8 @@
+
+
From acbf51a6e431ae7ddbd404b84f5f1cfa8c559e94 Mon Sep 17 00:00:00 2001
From: "m.curnillon"
Date: Fri, 3 Apr 2026 15:20:48 +0200
Subject: [PATCH 06/10] Actualiser Webzine.WebApplication/appsettings.json
---
Webzine.WebApplication/appsettings.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Webzine.WebApplication/appsettings.json b/Webzine.WebApplication/appsettings.json
index 46fd8b0..248f821 100644
--- a/Webzine.WebApplication/appsettings.json
+++ b/Webzine.WebApplication/appsettings.json
@@ -15,6 +15,6 @@
},
"AllowedHosts": "*",
"EfPerformance": {
- "SeuilMs": 10
+ "SeuilMs": 60
}
}
\ No newline at end of file
From 2550d39af5f5489c3f7484eb0abfc3acd466a758 Mon Sep 17 00:00:00 2001
From: mirage <119869686+ClementBobin@users.noreply.github.com>
Date: Fri, 3 Apr 2026 16:46:11 +0200
Subject: [PATCH 07/10] refactor: update namespaces and improve null handling
in view models and controllers
---
Webzine.Repository/DbStyleRepository.cs | 2 --
.../Administration/Controllers/ArtisteController.cs | 13 ++++++++-----
.../Administration/Controllers/StyleController.cs | 4 +++-
.../ViewModels/Artiste/AdminArtisteForm.cs | 4 ++--
.../ViewModels/Artiste/ArtisteEditViewModel.cs | 6 +-----
.../ViewModels/Styles/StyleCreateViewModel.cs | 2 +-
.../ViewModels/Styles/StyleDeleteViewModel.cs | 4 ++--
.../ViewModels/Styles/StyleEditViewModel.cs | 2 +-
.../Areas/Administration/Views/Style/Create.cshtml | 2 +-
.../Areas/Administration/Views/Style/Delete.cshtml | 2 +-
.../Areas/Administration/Views/Style/Edit.cshtml | 2 +-
Webzine.WebApplication/Program.cs | 2 +-
12 files changed, 22 insertions(+), 23 deletions(-)
diff --git a/Webzine.Repository/DbStyleRepository.cs b/Webzine.Repository/DbStyleRepository.cs
index 0412a90..57f42f3 100644
--- a/Webzine.Repository/DbStyleRepository.cs
+++ b/Webzine.Repository/DbStyleRepository.cs
@@ -94,7 +94,6 @@ public class DbStyleRepository : IStyleRepository
this.logger.LogDebug("Recherche du style avec l'ID: {Id}", id);
var style = this.context.Styles
- .AsNoTracking()
.Include(s => s.Titres)
.SingleOrDefault(s => s.IdStyle == id);
@@ -123,7 +122,6 @@ public class DbStyleRepository : IStyleRepository
this.logger.LogDebug("Tri des styles par libellé");
var styles = this.context.Styles
- .AsNoTracking()
.OrderBy(s => s.Libelle);
this.logger.LogDebug("La liste de styles a été récupérée.");
diff --git a/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs b/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs
index c68e99e..4d4311a 100644
--- a/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs
+++ b/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs
@@ -97,12 +97,15 @@ public class ArtisteController : Controller
[HttpPost]
public IActionResult Edit(ArtisteEditViewModel model)
{
- var artiste = new Artiste
+ var artiste = this.artisteRepository.Find(model.Id);
+
+ if (artiste == null)
{
- IdArtiste = model.Id,
- Nom = model.Nom,
- Biographie = model.Biographie,
- };
+ return this.RedirectToAction("Index");
+ }
+
+ artiste.Nom = model.Nom;
+ artiste.Biographie = model.Biographie;
this.artisteRepository.Update(artiste);
diff --git a/Webzine.WebApplication/Areas/Administration/Controllers/StyleController.cs b/Webzine.WebApplication/Areas/Administration/Controllers/StyleController.cs
index 578cf4d..cb08beb 100644
--- a/Webzine.WebApplication/Areas/Administration/Controllers/StyleController.cs
+++ b/Webzine.WebApplication/Areas/Administration/Controllers/StyleController.cs
@@ -2,9 +2,11 @@ namespace Webzine.WebApplication.Areas.Administration.Controllers;
using Microsoft.AspNetCore.Mvc;
+using ViewModels.Styles;
+
using Webzine.Entity;
using Webzine.Repository.Contracts;
-using Webzine.WebApplication.Areas.Administration.ViewModels.Style;
+using Webzine.WebApplication.Areas.Administration.ViewModels.Styles;
///
/// Controleur pour la gestion des styles dans l'administration du webzine.
diff --git a/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/AdminArtisteForm.cs b/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/AdminArtisteForm.cs
index c1700cb..ee14731 100644
--- a/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/AdminArtisteForm.cs
+++ b/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/AdminArtisteForm.cs
@@ -14,11 +14,11 @@
///
/// Définit le nom de l'artiste.
///
- public string Nom { get; set; }
+ public string? Nom { get; set; }
///
/// Définit la biographie de l'artiste.
///
- public string Biographie { get; set; }
+ public string? Biographie { get; set; }
}
}
\ No newline at end of file
diff --git a/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/ArtisteEditViewModel.cs b/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/ArtisteEditViewModel.cs
index 0d34c6f..98b3887 100644
--- a/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/ArtisteEditViewModel.cs
+++ b/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/ArtisteEditViewModel.cs
@@ -20,11 +20,7 @@
[StringLength(50, ErrorMessage = "Le nom ne doit pas dépasser 50 caractères.")]
public string Nom { get; set; }
-
- ///
- /// Biographie de l'artiste.
- ///
- [Required(ErrorMessage = "Le contenu de la biographie ne peut pas être vide.")]
+
public string Biographie { get; set; }
}
}
\ No newline at end of file
diff --git a/Webzine.WebApplication/Areas/Administration/ViewModels/Styles/StyleCreateViewModel.cs b/Webzine.WebApplication/Areas/Administration/ViewModels/Styles/StyleCreateViewModel.cs
index 2eba907..de912e7 100644
--- a/Webzine.WebApplication/Areas/Administration/ViewModels/Styles/StyleCreateViewModel.cs
+++ b/Webzine.WebApplication/Areas/Administration/ViewModels/Styles/StyleCreateViewModel.cs
@@ -2,7 +2,7 @@
// Copyright (c) Equipe 1 - BOBIN, MASI, NODON, VETU. All rights reserved.
//
-namespace Webzine.WebApplication.Areas.Administration.ViewModels.Style
+namespace Webzine.WebApplication.Areas.Administration.ViewModels.Styles
{
using System.ComponentModel.DataAnnotations;
diff --git a/Webzine.WebApplication/Areas/Administration/ViewModels/Styles/StyleDeleteViewModel.cs b/Webzine.WebApplication/Areas/Administration/ViewModels/Styles/StyleDeleteViewModel.cs
index fc94e54..daade0d 100644
--- a/Webzine.WebApplication/Areas/Administration/ViewModels/Styles/StyleDeleteViewModel.cs
+++ b/Webzine.WebApplication/Areas/Administration/ViewModels/Styles/StyleDeleteViewModel.cs
@@ -2,7 +2,7 @@
// Copyright (c) Equipe 1 - BOBIN, MASI, NODON, VETU. All rights reserved.
//
-namespace Webzine.WebApplication.Areas.Administration.ViewModels.Style
+namespace Webzine.WebApplication.Areas.Administration.ViewModels.Styles
{
///
/// ViewModel pour la suppression d'un style en administration.
@@ -17,6 +17,6 @@ namespace Webzine.WebApplication.Areas.Administration.ViewModels.Style
///
/// Obtient ou définit le libellé du style.
///
- public string Libelle { get; set; }
+ public string? Libelle { get; set; }
}
}
\ No newline at end of file
diff --git a/Webzine.WebApplication/Areas/Administration/ViewModels/Styles/StyleEditViewModel.cs b/Webzine.WebApplication/Areas/Administration/ViewModels/Styles/StyleEditViewModel.cs
index 671098c..b959456 100644
--- a/Webzine.WebApplication/Areas/Administration/ViewModels/Styles/StyleEditViewModel.cs
+++ b/Webzine.WebApplication/Areas/Administration/ViewModels/Styles/StyleEditViewModel.cs
@@ -2,7 +2,7 @@
// Copyright (c) Equipe 1 - BOBIN, MASI, NODON, VETU. All rights reserved.
//
-namespace Webzine.WebApplication.Areas.Administration.ViewModels.Style
+namespace Webzine.WebApplication.Areas.Administration.ViewModels.Styles
{
using System.ComponentModel.DataAnnotations;
diff --git a/Webzine.WebApplication/Areas/Administration/Views/Style/Create.cshtml b/Webzine.WebApplication/Areas/Administration/Views/Style/Create.cshtml
index c0cb8f7..ddc0c14 100644
--- a/Webzine.WebApplication/Areas/Administration/Views/Style/Create.cshtml
+++ b/Webzine.WebApplication/Areas/Administration/Views/Style/Create.cshtml
@@ -1,4 +1,4 @@
-@model Webzine.WebApplication.Areas.Administration.ViewModels.Style.StyleCreateViewModel
+@model Webzine.WebApplication.Areas.Administration.ViewModels.Styles.StyleCreateViewModel
@{
ViewData["Title"] = "Créer un style";
diff --git a/Webzine.WebApplication/Areas/Administration/Views/Style/Delete.cshtml b/Webzine.WebApplication/Areas/Administration/Views/Style/Delete.cshtml
index 47dad12..61dce02 100644
--- a/Webzine.WebApplication/Areas/Administration/Views/Style/Delete.cshtml
+++ b/Webzine.WebApplication/Areas/Administration/Views/Style/Delete.cshtml
@@ -1,4 +1,4 @@
-@model Webzine.WebApplication.Areas.Administration.ViewModels.Style.StyleDeleteViewModel
+@model Webzine.WebApplication.Areas.Administration.ViewModels.Styles.StyleDeleteViewModel
@{
ViewData["Title"] = "Supprimer un style";
diff --git a/Webzine.WebApplication/Areas/Administration/Views/Style/Edit.cshtml b/Webzine.WebApplication/Areas/Administration/Views/Style/Edit.cshtml
index 446cabe..bf57f66 100644
--- a/Webzine.WebApplication/Areas/Administration/Views/Style/Edit.cshtml
+++ b/Webzine.WebApplication/Areas/Administration/Views/Style/Edit.cshtml
@@ -1,4 +1,4 @@
-@model Webzine.WebApplication.Areas.Administration.ViewModels.Style.StyleEditViewModel
+@model Webzine.WebApplication.Areas.Administration.ViewModels.Styles.StyleEditViewModel
@{
ViewData["Title"] = "Editer un style";
diff --git a/Webzine.WebApplication/Program.cs b/Webzine.WebApplication/Program.cs
index 32c3737..4fcbc78 100644
--- a/Webzine.WebApplication/Program.cs
+++ b/Webzine.WebApplication/Program.cs
@@ -30,8 +30,8 @@ try
// controllers avec des vues.
builder.Services.AddControllersWithViews(options =>
{
+ // options.Filters.Add();
options.Filters.Add();
- options.Filters.Add();
})
// Ajoute la compilation des vues lors de l'execution de l'application.
From 71cdf8d179c8b189d792b956ad14e9f6f5adeced Mon Sep 17 00:00:00 2001
From: mirage <119869686+ClementBobin@users.noreply.github.com>
Date: Fri, 3 Apr 2026 16:52:55 +0200
Subject: [PATCH 08/10] fix: improve form handling for Create and Edit actions
in TitreController
---
.../Controllers/TitreController.cs | 55 +++++++++++++++++++
1 file changed, 55 insertions(+)
diff --git a/Webzine.WebApplication/Areas/Administration/Controllers/TitreController.cs b/Webzine.WebApplication/Areas/Administration/Controllers/TitreController.cs
index 3f33a2d..7607228 100644
--- a/Webzine.WebApplication/Areas/Administration/Controllers/TitreController.cs
+++ b/Webzine.WebApplication/Areas/Administration/Controllers/TitreController.cs
@@ -95,6 +95,33 @@ public class TitreController : Controller
[HttpPost]
public IActionResult Create(TitreAdminDTO model)
{
+ if (!this.ModelState.IsValid)
+ {
+ var form = new AdminTitreForm
+ {
+ IdArtiste = model.IdArtiste,
+ Libelle = model.Libelle,
+ Album = model.Album,
+ Chronique = model.Chronique,
+ DateSortie = model.DateSortie,
+ Duree = model.Duree,
+ UrlJaquette = model.UrlJaquette,
+ UrlEcoute = model.UrlEcoute,
+ Styles = model.Styles,
+ Artistes = this.artisteRepository.FindAll().Select(a => new SelectListItem
+ {
+ Value = a.IdArtiste.ToString(),
+ Text = a.Nom,
+ }).ToList(),
+ AllStyles = this.styleRepository.FindAll().Select(s => new SelectListItem
+ {
+ Value = s.IdStyle.ToString(),
+ Text = s.Libelle,
+ }).ToList(),
+ };
+ return this.View(form);
+ }
+
this.titreAdminService.CreerTitre(model);
return this.RedirectToAction("Index");
}
@@ -147,6 +174,34 @@ public class TitreController : Controller
[HttpPost]
public IActionResult Edit(TitreAdminDTO model)
{
+ if (!this.ModelState.IsValid)
+ {
+ var form = new AdminTitreForm
+ {
+ Id = model.Id,
+ IdArtiste = model.IdArtiste,
+ Libelle = model.Libelle,
+ Album = model.Album,
+ Chronique = model.Chronique,
+ DateSortie = model.DateSortie,
+ Duree = model.Duree,
+ UrlJaquette = model.UrlJaquette,
+ UrlEcoute = model.UrlEcoute,
+ Styles = model.Styles,
+ Artistes = this.artisteRepository.FindAll().Select(a => new SelectListItem
+ {
+ Value = a.IdArtiste.ToString(),
+ Text = a.Nom,
+ }).ToList(),
+ AllStyles = this.styleRepository.FindAll().Select(s => new SelectListItem
+ {
+ Value = s.IdStyle.ToString(),
+ Text = s.Libelle,
+ }).ToList(),
+ };
+ return this.View(form);
+ }
+
this.titreAdminService.ModifierTitre(model);
return this.RedirectToAction("Index");
}
From 80afb9b0bf7122a5d53d30afce064da880f2fd9d Mon Sep 17 00:00:00 2001
From: mirage <119869686+ClementBobin@users.noreply.github.com>
Date: Fri, 3 Apr 2026 16:54:46 +0200
Subject: [PATCH 09/10] fix: enable GlobalExceptionFilter in controller options
---
Webzine.WebApplication/Program.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Webzine.WebApplication/Program.cs b/Webzine.WebApplication/Program.cs
index 4fcbc78..089ee99 100644
--- a/Webzine.WebApplication/Program.cs
+++ b/Webzine.WebApplication/Program.cs
@@ -30,7 +30,7 @@ try
// controllers avec des vues.
builder.Services.AddControllersWithViews(options =>
{
- // options.Filters.Add();
+ options.Filters.Add();
options.Filters.Add();
})
From a42b430fb34bfae08ad94f84a32549ea167cc7d6 Mon Sep 17 00:00:00 2001
From: mirage <119869686+ClementBobin@users.noreply.github.com>
Date: Fri, 3 Apr 2026 17:18:03 +0200
Subject: [PATCH 10/10] fix: disable GlobalExceptionFilter in Program.cs
---
Webzine.WebApplication/Program.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Webzine.WebApplication/Program.cs b/Webzine.WebApplication/Program.cs
index 089ee99..4fcbc78 100644
--- a/Webzine.WebApplication/Program.cs
+++ b/Webzine.WebApplication/Program.cs
@@ -30,7 +30,7 @@ try
// controllers avec des vues.
builder.Services.AddControllersWithViews(options =>
{
- options.Filters.Add();
+ // options.Filters.Add();
options.Filters.Add();
})