diff --git a/Webzine.Repository/DbStyleRepository.cs b/Webzine.Repository/DbStyleRepository.cs
index 8cb5120..d831ead 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 ff1fa43..c5df960 100644
--- a/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs
+++ b/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs
@@ -113,12 +113,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 5fc6067..51b9d80 100644
--- a/Webzine.WebApplication/Areas/Administration/Controllers/StyleController.cs
+++ b/Webzine.WebApplication/Areas/Administration/Controllers/StyleController.cs
@@ -2,9 +2,10 @@ 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;
///
/// Controleur pour la gestion des styles dans l'administration du webzine.
diff --git a/Webzine.WebApplication/Areas/Administration/Controllers/TitreController.cs b/Webzine.WebApplication/Areas/Administration/Controllers/TitreController.cs
index f4557d6..a42bdb4 100644
--- a/Webzine.WebApplication/Areas/Administration/Controllers/TitreController.cs
+++ b/Webzine.WebApplication/Areas/Administration/Controllers/TitreController.cs
@@ -114,6 +114,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");
}
@@ -166,6 +193,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");
}
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/ArtisteCreateViewModel.cs b/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/ArtisteCreateViewModel.cs
index bdb43de..68dedd6 100644
--- a/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/ArtisteCreateViewModel.cs
+++ b/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/ArtisteCreateViewModel.cs
@@ -10,12 +10,15 @@
///
/// Nom de l'artiste.
///
- [Required]
+ [Required(ErrorMessage = "Le nom de l'auteur est obligatoire.")]
+ [StringLength(50, ErrorMessage = "Le nom ne doit pas dépasser 50 caractères.")]
public string Nom { get; set; }
///
/// Biographie de l'artiste.
- ///
+ /// *
+ [Required(ErrorMessage = "La biographie ne peux pas etre vide.")]
+
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 bf2d503..7d40252 100644
--- a/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/ArtisteEditViewModel.cs
+++ b/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/ArtisteEditViewModel.cs
@@ -16,12 +16,11 @@
///
/// Nom de l'artiste.
///
- [Required]
+ [Required(ErrorMessage = "Le nom de l'auteur est obligatoire.")]
+ [StringLength(50, ErrorMessage = "Le nom ne doit pas dépasser 50 caractères.")]
+
public string Nom { get; set; }
- ///
- /// Biographie de l'artiste.
- ///
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 86abbde..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;
@@ -14,7 +14,7 @@ namespace Webzine.WebApplication.Areas.Administration.ViewModels.Style
///
/// Obtient ou définit le libellé du style.
///
- [Required]
+ [Required(ErrorMessage = "Le libelle du style est obligatoire.")]
public string Libelle { get; set; }
}
}
\ No newline at end of file
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 093c130..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;
@@ -19,7 +19,7 @@ namespace Webzine.WebApplication.Areas.Administration.ViewModels.Style
///
/// Obtient ou definit le libelle du style.
///
- [Required]
+ [Required(ErrorMessage = "Le libelle du style est obligatoire.")]
public string Libelle { get; set; }
}
}
\ No newline at end of file
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/Artiste/Create.cshtml b/Webzine.WebApplication/Areas/Administration/Views/Artiste/Create.cshtml
index 38f842b..b9dc4ca 100644
--- a/Webzine.WebApplication/Areas/Administration/Views/Artiste/Create.cshtml
+++ b/Webzine.WebApplication/Areas/Administration/Views/Artiste/Create.cshtml
@@ -11,6 +11,8 @@
+
+
@@ -19,6 +21,8 @@
+
+
diff --git a/Webzine.WebApplication/Areas/Administration/Views/Artiste/_Form.cshtml b/Webzine.WebApplication/Areas/Administration/Views/Artiste/_Form.cshtml
index 960ad3f..c7fbf2e 100644
--- a/Webzine.WebApplication/Areas/Administration/Views/Artiste/_Form.cshtml
+++ b/Webzine.WebApplication/Areas/Administration/Views/Artiste/_Form.cshtml
@@ -6,6 +6,8 @@
+
+
@@ -14,7 +16,10 @@
+
+
+
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/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 @@
+
@@ -24,6 +27,7 @@
+
@@ -34,6 +38,8 @@
+
+
@@ -55,6 +61,8 @@
class="form-control"
type="number"
min="0" />
+
+
seconds
@@ -66,6 +74,8 @@
+
+
diff --git a/Webzine.WebApplication/Program.cs b/Webzine.WebApplication/Program.cs
index 4340186..4ef5711 100644
--- a/Webzine.WebApplication/Program.cs
+++ b/Webzine.WebApplication/Program.cs
@@ -31,6 +31,7 @@ try
// controllers avec des vues.
builder.Services.AddControllersWithViews(options =>
{
+ // options.Filters.Add();
options.Filters.Add();
options.Filters.Add();
});
@@ -55,7 +56,7 @@ try
});
builder.Services.AddSingleton();
- // En fonction de la configuration, utilise soit les repositories basés sur une base de données, soit les repositories basés sur des listes locales.
+ // En fonction de la configuration, utilise soit les repositories basés sur une base de données, soit les repositories basés sur des listes locales.
// En fonction de la configuration, utilise soit les repositories bases sur une base de donnees, soit les repositories bases sur des listes locales.
var repositoryType = builder.Configuration.GetValue("Repository");
var seederType = builder.Configuration.GetValue("Seeder");
diff --git a/Webzine.WebApplication/appsettings.json b/Webzine.WebApplication/appsettings.json
index 70bc2e7..cc61318 100644
--- a/Webzine.WebApplication/appsettings.json
+++ b/Webzine.WebApplication/appsettings.json
@@ -26,6 +26,6 @@
},
"AllowedHosts": "*",
"EfPerformance": {
- "SeuilMs": 10
+ "SeuilMs": 60
}
}
\ No newline at end of file