diff --git a/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs b/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs
index 7df257a..e6ad7e5 100644
--- a/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs
+++ b/Webzine.WebApplication/Areas/Administration/Controllers/ArtisteController.cs
@@ -50,14 +50,37 @@ public class ArtisteController : Controller
/// Redirection.
public IActionResult Create()
{
- var model = new AdminArtisteForm
+ 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)
+ {
+ // vérifier si les données sont corrects.
+ if (!this.ModelState.IsValid)
{
- Id = 0,
- Nom = string.Empty,
- Biographie = string.Empty,
+ // Passer model en paramètre afin que
+ // l'utilisateur conserve sa saissie.
+ return this.View(model);
+ }
+
+ // Créer un objet Artiste avecc les paramètres.
+ var artiste = new Artiste
+ {
+ Nom = model.Nom,
+ Biographie = model.Biographie,
};
- return this.View(model);
+ // Persister les données.
+ this.artisteRepository.Add(artiste);
+
+ // Renvoyer sur la page Index.
+ return this.RedirectToAction("Index");
}
///
@@ -69,14 +92,37 @@ public class ArtisteController : Controller
{
var artiste = this.artisteRepository.Find(id);
- var model = new AdminArtisteForm
+ if (artiste == null)
{
- Id = artiste.IdArtiste,
- Nom = artiste.Nom,
- Biographie = artiste.Biographie,
+ 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,
};
- return this.View(model);
+ if (!this.ModelState.IsValid)
+ {
+ return this.View(artiste);
+ }
+
+ this.artisteRepository.Update(artiste);
+
+ return this.RedirectToAction("Index");
}
///
diff --git a/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/ArtisteCreateViewModel.cs b/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/ArtisteCreateViewModel.cs
new file mode 100644
index 0000000..1d4cb45
--- /dev/null
+++ b/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/ArtisteCreateViewModel.cs
@@ -0,0 +1,12 @@
+namespace Webzine.WebApplication.Areas.Administration.ViewModels.Artiste
+{
+ using System.ComponentModel.DataAnnotations;
+
+ public class ArtisteCreateViewModel
+ {
+ [Required]
+ public string Nom { 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
new file mode 100644
index 0000000..0625935
--- /dev/null
+++ b/Webzine.WebApplication/Areas/Administration/ViewModels/Artiste/ArtisteEditViewModel.cs
@@ -0,0 +1,15 @@
+namespace Webzine.WebApplication.Areas.Administration.ViewModels.Artiste
+{
+ using System.ComponentModel.DataAnnotations;
+
+ public class ArtisteEditViewModel
+ {
+ [Required]
+ public int Id { get; set; }
+
+ [Required]
+ public string Nom { get; set; }
+
+ public string Biographie { get; set; }
+ }
+}
\ No newline at end of file
diff --git a/Webzine.WebApplication/Areas/Administration/Views/Artiste/Create.cshtml b/Webzine.WebApplication/Areas/Administration/Views/Artiste/Create.cshtml
index 67e48be..38f842b 100644
--- a/Webzine.WebApplication/Areas/Administration/Views/Artiste/Create.cshtml
+++ b/Webzine.WebApplication/Areas/Administration/Views/Artiste/Create.cshtml
@@ -1,11 +1,41 @@
-@model Webzine.WebApplication.Areas.Administration.ViewModels.Artiste.AdminArtisteForm
+@model Webzine.WebApplication.Areas.Administration.ViewModels.Artiste.ArtisteCreateViewModel
Créer un artiste
\ No newline at end of file
diff --git a/Webzine.WebApplication/Areas/Administration/Views/Artiste/Edit.cshtml b/Webzine.WebApplication/Areas/Administration/Views/Artiste/Edit.cshtml
index c5cf9d2..8f75e10 100644
--- a/Webzine.WebApplication/Areas/Administration/Views/Artiste/Edit.cshtml
+++ b/Webzine.WebApplication/Areas/Administration/Views/Artiste/Edit.cshtml
@@ -1,4 +1,4 @@
-@model Webzine.WebApplication.Areas.Administration.ViewModels.Artiste.AdminArtisteForm
+@model Webzine.Entity.Artiste
Editer un artiste
@@ -6,7 +6,7 @@