MVC-databaskonstruktion

Log | Files | Refs | README

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 }