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:
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