Browse Source

Refact: mise en place d'une vue Delete commune pour les objets simples

olivier.massot 7 năm trước cách đây
mục cha
commit
65e3b48585

+ 2 - 0
CD67.FicheCollege.MVC/CD67.FicheCollege.MVC.csproj

@@ -205,6 +205,7 @@
     <Compile Include="Models\ActionEduCollegeViewModel.cs" />
     <Compile Include="Models\ActionEduAxeViewModel.cs" />
     <Compile Include="Models\ActionEduThematiqueViewModel.cs" />
+    <Compile Include="Models\DeleteViewModel.cs" />
     <Compile Include="Models\CheckBoxListItem.cs" />
     <Compile Include="Models\ImportActionEduViewModel.cs" />
     <Compile Include="Models\ImportCollegeViewModel.cs" />
@@ -497,6 +498,7 @@
     <Content Include="Views\RestaurationTypeRepas\Edit.cshtml" />
     <Content Include="Views\RestaurationTypeRepas\Index.cshtml" />
     <Content Include="Views\RestaurationParametres\Edit.cshtml" />
+    <Content Include="Views\Shared\_AdminDeleteWarning.cshtml" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="App_Data\" />

+ 6 - 0
CD67.FicheCollege.MVC/Content/cd67-custom.less

@@ -15,6 +15,12 @@
     flex: 1;
 }
 
+.align-center>* {
+    display: flex;
+    flex-direction: row;
+    justify-content: center;
+}
+
 /* Breadcrumb et mise en avant */
 .color1 {
     color: @color1;

+ 3 - 2
CD67.FicheCollege.MVC/Controllers/ActionEduAxesController.cs

@@ -92,8 +92,9 @@ namespace CD67.FicheCollege.MVC.Controllers
             {
                 return HttpNotFound();
             }
-            ActionEduAxeViewModel model = new ActionEduAxeViewModel(axe);
-            return View(model);
+
+            DeleteViewModel model = new DeleteViewModel(axe, "Axe", axe.Nom);
+            return View("~/Views/Shared/_AdminDeleteWarning.cshtml", model);
         }
 
         // POST: ActionEduAxe/Delete/5

+ 2 - 2
CD67.FicheCollege.MVC/Controllers/ActionEduThematiquesController.cs

@@ -91,8 +91,8 @@ namespace CD67.FicheCollege.MVC.Controllers
             {
                 return HttpNotFound();
             }
-            ActionEduThematiqueViewModel model = new ActionEduThematiqueViewModel(thematique, db);
-            return View(model);
+            DeleteViewModel model = new DeleteViewModel(thematique, "Thématique", thematique.Nom);
+            return View("~/Views/Shared/_AdminDeleteWarning.cshtml", model);
         }
 
         // POST: ActionEduThematique/Delete/5

+ 2 - 2
CD67.FicheCollege.MVC/Controllers/ActionsEduActeursController.cs

@@ -112,8 +112,8 @@ namespace CD67.FicheCollege.MVC.Controllers
             {
                 return HttpNotFound();
             }
-            ActionEduActeurViewModel model = new ActionEduActeurViewModel(actionEduActeur, db);
-            return View(model);
+            DeleteViewModel model = new DeleteViewModel(actionEduActeur, "Acteur", actionEduActeur.Nom);
+            return View("~/Views/Shared/_AdminDeleteWarning.cshtml", model);
         }
 
         // POST: ActionEduAxe/Delete/5

+ 2 - 2
CD67.FicheCollege.MVC/Controllers/ActionsEduCollegeController.cs

@@ -126,8 +126,8 @@ namespace CD67.FicheCollege.MVC.Controllers
             {
                 return HttpNotFound();
             }
-            ActionEduCollegeViewModel model = new ActionEduCollegeViewModel(actionEduCollege, db);
-            return View(model);
+            DeleteViewModel model = new DeleteViewModel(actionEduCollege, "Affectation", actionEduCollege.College.Libelle);
+            return View("~/Views/Shared/_AdminDeleteWarning.cshtml", model);
         }
 
         // POST: ActionEduAxe/Delete/5

+ 2 - 2
CD67.FicheCollege.MVC/Controllers/RestaurationTypeRepasController.cs

@@ -92,8 +92,8 @@ namespace CD67.FicheCollege.MVC.Controllers
             {
                 return HttpNotFound();
             }
-            RestaurationTypeRepaViewModel model = new RestaurationTypeRepaViewModel(repas);
-            return View(model);
+            DeleteViewModel model = new DeleteViewModel(repas, "Type de Repas", repas.Libelle);
+            return View("~/Views/Shared/_AdminDeleteWarning.cshtml", model);
         }
 
         // POST: RestaurationTypeRepas/Delete/5

+ 2 - 2
CD67.FicheCollege.MVC/Controllers/RestaurationTypesController.cs

@@ -92,8 +92,8 @@ namespace CD67.FicheCollege.MVC.Controllers
             {
                 return HttpNotFound();
             }
-            RestaurationTypeViewModel model = new RestaurationTypeViewModel(type);
-            return View(model);
+            DeleteViewModel model = new DeleteViewModel(type, "Type de Restauration", type.Libelle);
+            return View("~/Views/Shared/_AdminDeleteWarning.cshtml", model);
         }
 
         // POST: RestaurationTypes/Delete/5

+ 2 - 2
CD67.FicheCollege.MVC/Controllers/TerritoireController.cs

@@ -91,8 +91,8 @@ namespace CD67.FicheCollege.MVC.Controllers
             {
                 return HttpNotFound();
             }
-            TerritoireViewModel model = new TerritoireViewModel(territoire, ModeAcces.Suppression);
-            return View(model);
+            DeleteViewModel model = new DeleteViewModel(territoire, "Territoire", territoire.Libelle);
+            return View("~/Views/Shared/_AdminDeleteWarning.cshtml", model);
         }
 
         // POST: Territoire/Delete/5

+ 2 - 2
CD67.FicheCollege.MVC/Controllers/TypeCollegeController.cs

@@ -114,8 +114,8 @@ namespace CD67.FicheCollege.MVC.Controllers
             {
                 return HttpNotFound();
             }
-            TypeCollegeViewModel model = new TypeCollegeViewModel(typeCollege, ModeAcces.Suppression);
-            return View(model);
+            DeleteViewModel model = new DeleteViewModel(typeCollege, "Type de Collège", typeCollege.Libelle);
+            return View("~/Views/Shared/_AdminDeleteWarning.cshtml", model);
         }
 
         // POST: TypeCollege/Delete/5

+ 35 - 0
CD67.FicheCollege.MVC/Models/DeleteViewModel.cs

@@ -0,0 +1,35 @@
+using CD67.FicheCollege.Entity;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+
+namespace CD67.FicheCollege.MVC.Models
+{
+
+    // Modèle utilisé pour les pages de confirmation avant suppression des pages d'administration
+    public class DeleteViewModel
+    {
+        public object Obj;
+        public string TypeObjet { get; }
+        public string NomObjet { get; }
+
+        // (Facultatif) Mode d'accès à la page
+        // Defaut: Lecture
+        public ModeAcces Acces { get; set; }
+
+        // Utilisateur courant
+        public UtilisateurConnecte User;
+
+        // ***************************
+        // Constructeurs de base
+        public DeleteViewModel(object model, string TypeObjet, string NomObjet)
+        {
+            this.Obj = model;
+            this.TypeObjet = TypeObjet;
+            this.NomObjet = NomObjet;
+            Acces = ModeAcces.Suppression;
+            User = Internal.UtilisateurConnecteFactory.getUtilisateurConnecte();
+        }
+
+
+    }
+}

+ 27 - 0
CD67.FicheCollege.MVC/Views/Shared/_AdminDeleteWarning.cshtml

@@ -0,0 +1,27 @@
+@using CD67.FicheCollege.MVC.Models
+@model DeleteViewModel
+
+@{
+    ViewBag.Title = "Suppression";
+    Layout = "~/Views/Shared/_AdminLayout.cshtml";
+}
+
+<div class="align-center">
+    <h2 class="text-danger"><i class="glyphicon glyphicon-alert"></i>&nbsp; Attention</h2>
+
+    <span>Vous vous apprêtez à supprimer définitivement l'objet &nbsp;<b>@Model.TypeObjet</b>&nbsp; nommé &nbsp;<b>@Model.NomObjet</b>&nbsp;</span>
+
+    <span>Voulez-vous continuer?</span>
+</div>
+
+<div>
+    @using (Html.BeginForm())
+    {
+        @Html.AntiForgeryToken()
+        <div class="form-group btn-bar">
+            <a href=@Url.Action("Index") class="btn btn-default">Annuler</a>
+            <input type="submit" value="Supprimer" class="btn btn-danger" />
+        </div>
+
+    }
+</div>