MVC-databaskonstruktion

Log | Files | Refs | README

commit 0bf410846cece5304f77ce26266748ae2a6e9717
parent faadd65488e915e6cca66158408b4f65468c14fc
Author: William Lindholm <a22willi@student.his.se>
Date:   Thu, 12 Oct 2023 11:28:44 +0200

Added ability to view details of rows.

Diffstat:
MMVC-databaskonstruktion.sln | 2+-
MMVC-databaskonstruktion/Controllers/AgentsController.cs | 9++++++---
MMVC-databaskonstruktion/Models/AgentsModel.cs | 23++++++++++++++---------
MMVC-databaskonstruktion/Utils/TableObjectBuilder.cs | 3++-
AMVC-databaskonstruktion/Views/Agents/FieldAgentDetails.cshtml | 3+++
MMVC-databaskonstruktion/Views/Shared/_TablePartial.cshtml | 38++++++++++++++++++++++++++------------
6 files changed, 52 insertions(+), 26 deletions(-)

diff --git a/MVC-databaskonstruktion.sln b/MVC-databaskonstruktion.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.3.32804.467 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MVC-databaskonstruktion", "MVC-databaskonstruktion\MVC-databaskonstruktion.csproj", "{87C79C5B-BD7C-4962-9897-EB4642A65D90}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MVC-databaskonstruktion", "MVC-databaskonstruktion\MVC-databaskonstruktion.csproj", "{87C79C5B-BD7C-4962-9897-EB4642A65D90}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/MVC-databaskonstruktion/Controllers/AgentsController.cs b/MVC-databaskonstruktion/Controllers/AgentsController.cs @@ -22,6 +22,12 @@ namespace MVC_databaskonstruktion.Controllers return View(); } + public IActionResult FieldAgentDetails(string CodeName) + { + ViewBag.AgentOperations = _agentsModel.GetAgentOperations(CodeName); + return View(); + } + public IActionResult Delete(string table, string CodeName) { try @@ -38,9 +44,6 @@ namespace MVC_databaskonstruktion.Controllers case 1452: TempData["ErrorMessage"] = "Foreign Key Constraint Failed!"; break; - case 1062: - TempData["ErrorMessage"] = "Unique Constraint Failed!"; - break; default: TempData["ErrorMessage"] = $"Something went wrong: {e.Number}"; break; diff --git a/MVC-databaskonstruktion/Models/AgentsModel.cs b/MVC-databaskonstruktion/Models/AgentsModel.cs @@ -14,15 +14,7 @@ namespace MVC_databaskonstruktion.Models _databaseRepository = new DatabaseRepository(_configuration); _tableBuilder = new TableObjectBuilder() .SetPrimaryKeys(new List<string> { "CodeName" }) - .SetDeleteTable("Agent") - .SetRedirect("Index"); - } - - public TableObject GetAgents() - { - return _tableBuilder.SetControllerName("Agents") - .SetDataTable(_databaseRepository.GetTable("Agent")) - .Build(); + .SetDeleteTable("Agent"); } public void DeleteAgent(string table, string CodeName) @@ -39,6 +31,7 @@ namespace MVC_databaskonstruktion.Models { return _tableBuilder .SetDataTable(_databaseRepository.GetTable("FieldAgents")) + .SetRedirect("FieldAgentDetails") .Build(); } @@ -46,6 +39,7 @@ namespace MVC_databaskonstruktion.Models { return _tableBuilder .SetDataTable(_databaseRepository.GetTable("GroupLeaders")) + .SetRedirect(string.Empty) .Build(); } @@ -53,7 +47,18 @@ namespace MVC_databaskonstruktion.Models { return _tableBuilder .SetDataTable(_databaseRepository.GetTable("Managers")) + .SetRedirect(string.Empty) .Build(); } + + public TableObject GetAgentOperations(string CodeName) + { + + string query = $"SELECT * FROM OperatesIn WHERE CodeName = '{CodeName}';"; + return _tableBuilder.SetDataTable(_databaseRepository.GetTable(query)) + .SetDeleteTable(string.Empty) + .SetRedirect(string.Empty) + .Build(); + } } } diff --git a/MVC-databaskonstruktion/Utils/TableObjectBuilder.cs b/MVC-databaskonstruktion/Utils/TableObjectBuilder.cs @@ -14,9 +14,10 @@ namespace MVC_databaskonstruktion.Utils { _dataTable = dataTable; } + public TableObjectBuilder() { - //empty constructor if you want to set the DataTable later + //empty constructor to be able to set DataTable later } public TableObjectBuilder SetControllerName(string controllerName) diff --git a/MVC-databaskonstruktion/Views/Agents/FieldAgentDetails.cshtml b/MVC-databaskonstruktion/Views/Agents/FieldAgentDetails.cshtml @@ -0,0 +1,2 @@ +<h3>Agent is part of Operations:</h3> +<partial name="_TablePartial" model="ViewBag.AgentOperations" /> +\ No newline at end of file diff --git a/MVC-databaskonstruktion/Views/Shared/_TablePartial.cshtml b/MVC-databaskonstruktion/Views/Shared/_TablePartial.cshtml @@ -3,6 +3,8 @@ @{ var dataTable = Model.DataSet; + var urlQuery = new RouteValueDictionary(); + var deleteQuery = new RouteValueDictionary(); } <table class="table table-striped table-bordered"> @@ -14,7 +16,13 @@ @column.ColumnName </th> } - @if (!string.IsNullOrEmpty(Model.DeleteTable) && Model.PrimaryKeys?.Count > 0) + @if (!string.IsNullOrEmpty(Model.Redirect)) + { + <th scope="col"> + Details + </th> + } + @if (!string.IsNullOrEmpty(Model.DeleteTable)) { <th scope="col"> Delete @@ -32,19 +40,25 @@ @row[col] </td> } - - @if (!string.IsNullOrEmpty(Model.DeleteTable) && Model.PrimaryKeys?.Count > 0) + @if (Model.PrimaryKeys?.Count > 0) { - <td> - @{ - var deleteParams = new RouteValueDictionary(); - deleteParams["Table"] = Model.DeleteTable; - foreach (var key in Model.PrimaryKeys) - { - deleteParams[key] = row[key]; - } + foreach (var key in Model.PrimaryKeys) + { + urlQuery[key] = row[key]; } - @Html.ActionLink("Delete", "Delete", Model.ControllerName, deleteParams, new { @class = "btn btn-danger" }) + deleteQuery = new RouteValueDictionary(urlQuery); + deleteQuery["Table"] = Model.DeleteTable; + } + @if (!string.IsNullOrEmpty(Model.Redirect)) + { + <td> + @Html.ActionLink("Details", Model.Redirect, Model.ControllerName, urlQuery, new { @class = "btn btn-info" }) + </td> + } + @if (!string.IsNullOrEmpty(Model.DeleteTable)) + { + <td> + @Html.ActionLink("Delete", "Delete", Model.ControllerName, deleteQuery, new { @class = "btn btn-danger" }) </td> } </tr>