MVC-databaskonstruktion

Log | Files | Refs | README

commit 47eaf4854922da7d2d5f1d5bd122e95547a554ff
parent 5ca452b81580c2215b221c7271458e359e60c667
Author: William Lindholm <william_lindholm@outlook.com>
Date:   Fri, 20 Oct 2023 12:12:19 +0200

Added ability to create new reports.

Diffstat:
MMVC-databaskonstruktion/Controllers/IncidentsController.cs | 33+++++++++++++++++++++++++++++++++
MMVC-databaskonstruktion/Models/IncidentsModel.cs | 33+++++++++++++++++++++++++++++++++
MMVC-databaskonstruktion/Views/Incidents/Details.cshtml | 9+++++++--
3 files changed, 73 insertions(+), 2 deletions(-)

diff --git a/MVC-databaskonstruktion/Controllers/IncidentsController.cs b/MVC-databaskonstruktion/Controllers/IncidentsController.cs @@ -28,6 +28,7 @@ namespace MVC_databaskonstruktion.Controllers ViewBag.Operations = _incidentsModel.GetOperations(IncidentName, incidentNumber); ViewBag.AddOperationModal = _incidentsModel.CreateOperationModal(IncidentName, incidentNumber); ViewBag.Reports = _incidentsModel.GetReports(IncidentName, incidentNumber); + ViewBag.AddReportModal = _incidentsModel.CreateReportModal(IncidentName, incidentNumber); return View(); } @@ -85,6 +86,38 @@ namespace MVC_databaskonstruktion.Controllers return RedirectToAction("Index"); } + public IActionResult CreateReport(string IncidentName, int IncidentNumber, string Title, DateTime DateCreated, string Content, string Author) + { + try + { + _incidentsModel.CreateReport(IncidentName, IncidentNumber, Title, DateCreated, Content, Author); + } + catch (MySqlException e) + { + switch (e.Number) + { + case 1062: + TempData["ErrorMessage"] = "Incident already exists!"; + break; + case 1406: + TempData["ErrorMessage"] = "Data too long!"; + break; + case 3819: + TempData["ErrorMessage"] = "Invalid Data!"; + break; + default: + TempData["ErrorMessage"] = $"Something went wrong: {e.Number}"; + break; + } + } + + return RedirectToAction("Details", new + { + IncidentName, + IncidentNumber + }); + } + public IActionResult CreateOperation(string OperationName, DateTime StartDate, DateTime EndDate, bool SuccessRate, string GroupLeader, string IncidentName, int IncidentNumber) { try diff --git a/MVC-databaskonstruktion/Models/IncidentsModel.cs b/MVC-databaskonstruktion/Models/IncidentsModel.cs @@ -99,6 +99,24 @@ namespace MVC_databaskonstruktion.Models return modalBuilder.Build(); } + public ModalContext CreateReportModal(string IncidentName, int IncidentNumber) + { + var AuthorSelection = _databaseRepository.GetColumnAsDropdown("SELECT CodeName FROM Agent"); + + var modalBuilder = new ModalBuilder() + .SetTitle("Write report") + .SetIdentifier("createReportModal") + .SetAction("CreateReport", "Incidents") + .AddInput("Title", "Title", "normal", "Title") + .AddInput("DateCreated", "DateCreated", "datetime", "DateCreated") + .AddInput("Content", "Content", "multiline", "Content") + .AddInput("IncidentName", "IncidentName", "hidden", IncidentName) + .AddInput("IncidentNumber", "IncidentNumber", "hidden", IncidentNumber.ToString()) + .AddInput("Author", "Author", "dropdown", "", AuthorSelection); + + return modalBuilder.Build(); + } + public void CreateIncident(string IncidentName, int IncidentNumber, string RegionName, int Terrain, string Location) { var IncidentData = new List<KeyValuePair<string, object>> @@ -113,6 +131,21 @@ namespace MVC_databaskonstruktion.Models _databaseRepository.CreateRow("Incident", IncidentData); } + public void CreateReport(string IncidentName, int IncidentNumber, string Title, DateTime DateCreated, string Content, string Author) + { + var ReportData = new List<KeyValuePair<string, object>> + { + new KeyValuePair<string, object>("IncidentName", IncidentName), + new KeyValuePair<string, object>("IncidentNumber", IncidentNumber), + new KeyValuePair<string, object>("Title", Title), + new KeyValuePair<string, object>("DateCreated", DateCreated.ToString("yyyy-M-d")), + new KeyValuePair<string, object>("Content", Content), + new KeyValuePair<string, object>("Author", Author) + }; + + _databaseRepository.CreateRow("Report", ReportData); + } + public void CreateOperation(string OperationName, DateTime StartDate, DateTime EndDate, bool SuccessRate, string GroupLeader, string IncidentName, int IncidentNumber) { var OperationData = new List<KeyValuePair<string, object>> diff --git a/MVC-databaskonstruktion/Views/Incidents/Details.cshtml b/MVC-databaskonstruktion/Views/Incidents/Details.cshtml @@ -16,4 +16,9 @@ <label>Add operation to incident</label> <br /> -<partial name="_ModalPartial" model="ViewBag.AddOperationModal" /> -\ No newline at end of file +<partial name="_ModalPartial" model="ViewBag.AddOperationModal" /> +<hr /> + +<label>Write new report</label> +<br /> +<partial name="_ModalPartial" model="ViewBag.AddReportModal" /> +\ No newline at end of file