IncidentsModel.cs (8145B)
1 using Microsoft.AspNetCore.Mvc.Rendering; 2 using MVC_databaskonstruktion.Utils; 3 4 namespace MVC_databaskonstruktion.Models 5 { 6 public class IncidentsModel 7 { 8 private IConfiguration _configuration { get; set; } 9 private DatabaseRepository _databaseRepository { get; set; } 10 private TableObjectBuilder _tableBuilder { get; set; } 11 12 public IncidentsModel(IConfiguration configuration) 13 { 14 _configuration = configuration; 15 _databaseRepository = new DatabaseRepository(_configuration); 16 _tableBuilder = new TableObjectBuilder() 17 .SetPrimaryKeys(new List<string> { "IncidentName", "IncidentNumber" }) 18 .SetDeleteTable("Incident"); 19 } 20 21 public TableObject GetIncidents(string searchQuery) 22 { 23 return _tableBuilder 24 .SetDataTable(_databaseRepository.GetTable($"SELECT * FROM Incident WHERE IncidentName LIKE '%{searchQuery}%';")) 25 .SetRedirect("Details") 26 .Build(); 27 } 28 29 public TableObject GetReports(string IncidentName, int IncidentNumber) 30 { 31 var reportsTable = new TableObjectBuilder(); 32 33 return reportsTable 34 .SetDataTable(_databaseRepository.GetTable($"SELECT * FROM Report WHERE IncidentName = '{IncidentName}' AND IncidentNumber = '{IncidentNumber}';")) 35 .Build(); 36 } 37 38 public void DeleteIncident(string table, string incidentName, string incidentNumber) 39 { 40 List<KeyValuePair<string, object>> conditions = new List<KeyValuePair<string, object>> 41 { 42 new KeyValuePair<string, object>("IncidentName", incidentName), 43 new KeyValuePair<string, object>("IncidentNumber", incidentNumber) 44 }; 45 46 _databaseRepository.DeleteRow(table, conditions); 47 } 48 49 public TableObject GetOperations(string IncidentName, int IncidentNumber) 50 { 51 return _tableBuilder 52 .SetDataTable(_databaseRepository.GetTable($"SELECT * FROM Operation WHERE IncidentName = '{IncidentName}' AND IncidentNumber = '{IncidentNumber}';")) 53 .SetRedirect("Details") 54 .SetDeleteTable("Operation") 55 .SetPrimaryKeys(new List<string> { "IncidentName", "IncidentNumber", "OperationName", "StartDate" }) 56 .SetControllerName("Operations") 57 .Build(); 58 } 59 60 public ModalContext CreateIncidentModal() 61 { 62 var TerrainSelection = _databaseRepository.GetColumnAsDropdown("SELECT TerrainCode FROM Terrain;"); 63 64 var modalBuilder = new ModalBuilder() 65 .SetTitle("Create Incident") 66 .SetIdentifier("createIncidentModal") 67 .SetAction("Create", "Incidents") 68 .AddInput("IncidentName", "IncidentName", "normal", "IncidentName") 69 .AddInput("IncidentNumber", "IncidentNumber", "normal", "IncidentNumber") 70 .AddInput("RegionName", "RegionName", "normal", "RegionName") 71 .AddInput("Terrain", "Terrain", "dropdown", "", TerrainSelection) 72 .AddInput("Location", "Location", "normal", "Location"); 73 74 return modalBuilder.Build(); 75 } 76 77 public ModalContext CreateOperationModal(string IncidentName, int IncidentNumber) 78 { 79 var incidentSelection = _databaseRepository.GetColumnAsDropdown("SELECT IncidentName, IncidentNumber FROM Incident;"); 80 var groupLeaderSelection = _databaseRepository.GetColumnAsDropdown("SELECT CodeName FROM GroupLeaders"); 81 var successSelection = new List<SelectListItem> 82 { 83 new SelectListItem { Text = "Success", Value = "True" }, 84 new SelectListItem { Text = "Fail", Value = "False" } 85 }; 86 87 var modalBuilder = new ModalBuilder() 88 .SetTitle("Create Operation") 89 .SetIdentifier("createOperationModal") 90 .SetAction("CreateOperation", "Incidents") 91 .AddInput("OperationName", "OperationName", "normal", "OperationName") 92 .AddInput("StartDate", "StartDate", "datetime", "StartDate") 93 .AddInput("EndDate", "EndDate", "datetime", "EndDate") 94 .AddInput("SuccessRate", "Operation Result", "dropdown", "", successSelection) 95 .AddInput("GroupLeader", "GroupLeader", "dropdown", "", groupLeaderSelection) 96 .AddInput("IncidentName", "IncidentName", "hidden", IncidentName) 97 .AddInput("IncidentNumber", "IncidentNumber", "hidden", IncidentNumber.ToString()); 98 99 return modalBuilder.Build(); 100 } 101 102 public ModalContext CreateReportModal(string IncidentName, int IncidentNumber) 103 { 104 var AuthorSelection = _databaseRepository.GetColumnAsDropdown("SELECT CodeName FROM Agent"); 105 106 var modalBuilder = new ModalBuilder() 107 .SetTitle("Write report") 108 .SetIdentifier("createReportModal") 109 .SetAction("CreateReport", "Incidents") 110 .AddInput("Title", "Title", "normal", "Title") 111 .AddInput("DateCreated", "DateCreated", "datetime", "DateCreated") 112 .AddInput("Content", "Content", "multiline", "Content") 113 .AddInput("IncidentName", "IncidentName", "hidden", IncidentName) 114 .AddInput("IncidentNumber", "IncidentNumber", "hidden", IncidentNumber.ToString()) 115 .AddInput("Author", "Author", "dropdown", "", AuthorSelection); 116 117 return modalBuilder.Build(); 118 } 119 120 public void CreateIncident(string IncidentName, int IncidentNumber, string RegionName, int Terrain, string Location) 121 { 122 var IncidentData = new List<KeyValuePair<string, object>> 123 { 124 new KeyValuePair<string, object>("IncidentName", IncidentName), 125 new KeyValuePair<string, object>("IncidentNumber", IncidentNumber), 126 new KeyValuePair<string, object>("RegionName", RegionName), 127 new KeyValuePair<string, object>("Terrain", Terrain), 128 new KeyValuePair<string, object>("Location", Location) 129 }; 130 131 _databaseRepository.CreateRow("Incident", IncidentData); 132 } 133 134 public void CreateReport(string IncidentName, int IncidentNumber, string Title, DateTime DateCreated, string Content, string Author) 135 { 136 var ReportData = new List<KeyValuePair<string, object>> 137 { 138 new KeyValuePair<string, object>("IncidentName", IncidentName), 139 new KeyValuePair<string, object>("IncidentNumber", IncidentNumber), 140 new KeyValuePair<string, object>("Title", Title), 141 new KeyValuePair<string, object>("DateCreated", DateCreated.ToString("yyyy-M-d")), 142 new KeyValuePair<string, object>("Content", Content), 143 new KeyValuePair<string, object>("Author", Author) 144 }; 145 146 _databaseRepository.CreateRow("Report", ReportData); 147 } 148 149 public void CreateOperation(string OperationName, DateTime StartDate, DateTime EndDate, bool SuccessRate, string GroupLeader, string IncidentName, int IncidentNumber) 150 { 151 var OperationData = new List<KeyValuePair<string, object>> 152 { 153 new KeyValuePair<string, object>("OperationName", OperationName), 154 new KeyValuePair<string, object>("StartDate", StartDate.ToString("yyyy-M-d")), 155 new KeyValuePair<string, object>("EndDate", EndDate.ToString("yyyy-M-d")), 156 new KeyValuePair<string, object>("SuccessRate", SuccessRate), 157 new KeyValuePair<string, object>("GroupLeader", GroupLeader), 158 new KeyValuePair<string, object>("IncidentName", IncidentName), 159 new KeyValuePair<string, object>("IncidentNumber", IncidentNumber) 160 }; 161 162 _databaseRepository.CreateRow("Operation", OperationData); 163 } 164 } 165 }