From 535aeff6c769957c2602c0103ebc37ccc713ca44 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sun, 2 Jun 2019 02:40:17 +0100 Subject: [PATCH] Implement create admin page for screens by machine. --- .../Controllers/ScreensByMachineController.cs | 49 ++++++++++++++++--- .../Views/ScreensByMachine/Create.cshtml | 20 +++++--- cicm_web/cicm_web.csproj | 2 +- 3 files changed, 55 insertions(+), 16 deletions(-) diff --git a/cicm_web/Areas/Admin/Controllers/ScreensByMachineController.cs b/cicm_web/Areas/Admin/Controllers/ScreensByMachineController.cs index 5a117e43..196e924d 100644 --- a/cicm_web/Areas/Admin/Controllers/ScreensByMachineController.cs +++ b/cicm_web/Areas/Admin/Controllers/ScreensByMachineController.cs @@ -52,8 +52,14 @@ namespace cicm_web.Areas.Admin.Controllers // GET: ScreensByMachine/Create public IActionResult Create() { - ViewData["MachineId"] = new SelectList(_context.Machines, "Id", "Name"); - ViewData["ScreenId"] = new SelectList(_context.Screens, "Id", "Type"); + ViewData["MachineId"] = + new + SelectList(_context.Machines.OrderBy(m => m.Company.Name).ThenBy(m => m.Name).Select(m => new {m.Id, Name = $"{m.Company.Name} {m.Name}"}), + "Id", "Name"); + ViewData["ScreenId"] = + new + SelectList(_context.Screens.Select(s => new {s.Id, Name = s.NativeResolution != null ? $"{s.Diagonal}\" {s.Type} with {s.NativeResolution}" : $"{s.Diagonal}\" {s.Type}"}).OrderBy(s => s.Name), + "Id", "Name"); return View(); } @@ -71,8 +77,14 @@ namespace cicm_web.Areas.Admin.Controllers return RedirectToAction(nameof(Index)); } - ViewData["MachineId"] = new SelectList(_context.Machines, "Id", "Name", screensByMachine.MachineId); - ViewData["ScreenId"] = new SelectList(_context.Screens, "Id", "Type", screensByMachine.ScreenId); + ViewData["MachineId"] = + new + SelectList(_context.Machines.OrderBy(m => m.Company.Name).ThenBy(m => m.Name).Select(m => new {m.Id, Name = $"{m.Company.Name} {m.Name}"}), + "Id", "Name", screensByMachine.MachineId); + ViewData["ScreenId"] = + new + SelectList(_context.Screens.Select(s => new {s.Id, Name = s.NativeResolution != null ? $"{s.Diagonal}\" {s.Type} with {s.NativeResolution}" : $"{s.Diagonal}\" {s.Type}"}).OrderBy(s => s.Name), + "Id", "Name", screensByMachine.ScreenId); return View(screensByMachine); } @@ -84,8 +96,14 @@ namespace cicm_web.Areas.Admin.Controllers ScreensByMachine screensByMachine = await _context.ScreensByMachine.FindAsync(id); if(screensByMachine == null) return NotFound(); - ViewData["MachineId"] = new SelectList(_context.Machines, "Id", "Name", screensByMachine.MachineId); - ViewData["ScreenId"] = new SelectList(_context.Screens, "Id", "Type", screensByMachine.ScreenId); + ViewData["MachineId"] = + new + SelectList(_context.Machines.OrderBy(m => m.Company.Name).ThenBy(m => m.Name).Select(m => new {m.Id, Name = $"{m.Company.Name} {m.Name}"}), + "Id", "Name", screensByMachine.MachineId); + ViewData["ScreenId"] = + new + SelectList(_context.Screens.Select(s => new {s.Id, Name = s.NativeResolution != null ? $"{s.Diagonal}\" {s.Type} with {s.NativeResolution}" : $"{s.Diagonal}\" {s.Type}"}).OrderBy(s => s.Name), + "Id", "Name", screensByMachine.ScreenId); return View(screensByMachine); } @@ -116,8 +134,14 @@ namespace cicm_web.Areas.Admin.Controllers return RedirectToAction(nameof(Index)); } - ViewData["MachineId"] = new SelectList(_context.Machines, "Id", "Name", screensByMachine.MachineId); - ViewData["ScreenId"] = new SelectList(_context.Screens, "Id", "Type", screensByMachine.ScreenId); + ViewData["MachineId"] = + new + SelectList(_context.Machines.OrderBy(m => m.Company.Name).ThenBy(m => m.Name).Select(m => new {m.Id, Name = $"{m.Company.Name} {m.Name}"}), + "Id", "Name", screensByMachine.MachineId); + ViewData["ScreenId"] = + new + SelectList(_context.Screens.Select(s => new {s.Id, Name = s.NativeResolution != null ? $"{s.Diagonal}\" {s.Type} with {s.NativeResolution}" : $"{s.Diagonal}\" {s.Type}"}).OrderBy(s => s.Name), + "Id", "Name", screensByMachine.ScreenId); return View(screensByMachine); } @@ -150,5 +174,14 @@ namespace cicm_web.Areas.Admin.Controllers { return _context.ScreensByMachine.Any(e => e.Id == id); } + + [AcceptVerbs("Get", "Post")] + public async Task VerifyUnique(int screenId, int machineId) + { + return await _context.ScreensByMachine.FirstOrDefaultAsync(i => i.ScreenId == screenId && + i.MachineId == machineId) is null + ? Json(true) + : Json("The selected machine already has the selected screen."); + } } } \ No newline at end of file diff --git a/cicm_web/Areas/Admin/Views/ScreensByMachine/Create.cshtml b/cicm_web/Areas/Admin/Views/ScreensByMachine/Create.cshtml index a4234632..a097b3f2 100644 --- a/cicm_web/Areas/Admin/Views/ScreensByMachine/Create.cshtml +++ b/cicm_web/Areas/Admin/Views/ScreensByMachine/Create.cshtml @@ -6,7 +6,7 @@

Create

-

ScreensByMachine

+

Screens by machine


@@ -15,36 +15,42 @@ class="text-danger">
- + +
- + +
-
- Back to List -
- @section Scripts { @{ await Html.RenderPartialAsync("_ValidationScriptsPartial"); } } \ No newline at end of file diff --git a/cicm_web/cicm_web.csproj b/cicm_web/cicm_web.csproj index c14173a9..7375a594 100644 --- a/cicm_web/cicm_web.csproj +++ b/cicm_web/cicm_web.csproj @@ -2,7 +2,7 @@ netcoreapp2.2 - 3.0.99.744 + 3.0.99.747 Canary Islands Computer Museum Copyright © 2003-2018 Natalia Portillo Canary Islands Computer Museum Website