diff --git a/StudentHouseDashboard/Data/EventRepository.cs b/StudentHouseDashboard/Data/EventRepository.cs
index 60f0b25..42c8b05 100644
--- a/StudentHouseDashboard/Data/EventRepository.cs
+++ b/StudentHouseDashboard/Data/EventRepository.cs
@@ -134,8 +134,8 @@ namespace Data
cmd.Parameters.AddWithValue("@id", id);
cmd.Parameters.AddWithValue("@desc", description);
cmd.Parameters.AddWithValue("@title", title);
- cmd.Parameters.AddWithValue("@status", startDate);
- cmd.Parameters.AddWithValue("@severity", endDate);
+ cmd.Parameters.AddWithValue("@start", startDate);
+ cmd.Parameters.AddWithValue("@end", endDate);
var writer = cmd.ExecuteNonQuery();
if (writer == -1)
{
diff --git a/StudentHouseDashboard/WebApp/Pages/DeleteEvent.cshtml b/StudentHouseDashboard/WebApp/Pages/DeleteEvent.cshtml
new file mode 100644
index 0000000..e5553d5
--- /dev/null
+++ b/StudentHouseDashboard/WebApp/Pages/DeleteEvent.cshtml
@@ -0,0 +1,31 @@
+@page
+@using Models;
+@model WebApp.Pages.DeleteEventModel
+@{
+ ViewData["Title"] = "Delete event";
+ Event _event = (Event)ViewData["event"];
+}
+
+@if (_event == null)
+{
+
+ Unable to find event! Do you have permission?
+
+ Return to all events
+}
+else
+{
+
+}
\ No newline at end of file
diff --git a/StudentHouseDashboard/WebApp/Pages/DeleteEvent.cshtml.cs b/StudentHouseDashboard/WebApp/Pages/DeleteEvent.cshtml.cs
new file mode 100644
index 0000000..e7c6d54
--- /dev/null
+++ b/StudentHouseDashboard/WebApp/Pages/DeleteEvent.cshtml.cs
@@ -0,0 +1,40 @@
+using Logic;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using Models;
+using System.Security.Claims;
+
+namespace WebApp.Pages
+{
+ [Authorize]
+ public class DeleteEventModel : PageModel
+ {
+ private readonly IEventRepository eventRepository;
+
+ public DeleteEventModel(IEventRepository eventRepository)
+ {
+ this.eventRepository = eventRepository;
+ }
+ [BindProperty]
+ public int EventId { get; set; }
+ public void OnGet(int id)
+ {
+ EventManager eventManager = new EventManager(eventRepository);
+ if (id != null)
+ {
+ Event @event = eventManager.GetEventById(id);
+ if (@event.Author.ID == int.Parse(User.FindFirstValue("id")) || User.IsInRole("ADMIN"))
+ {
+ ViewData["event"] = @event;
+ }
+ }
+ }
+ public IActionResult OnPost()
+ {
+ EventManager eventManager = new EventManager(eventRepository);
+ eventManager.DeleteEvent(EventId);
+ return RedirectToPage("Events");
+ }
+ }
+}
diff --git a/StudentHouseDashboard/WebApp/Pages/EditEvent.cshtml b/StudentHouseDashboard/WebApp/Pages/EditEvent.cshtml
new file mode 100644
index 0000000..b2fe998
--- /dev/null
+++ b/StudentHouseDashboard/WebApp/Pages/EditEvent.cshtml
@@ -0,0 +1,41 @@
+@page
+@using Models;
+@model WebApp.Pages.EditEventModel
+@{
+ ViewData["Title"] = "Edit event";
+ Model.Event = (Event)ViewData["event"];
+}
+
+
+
+@if (Model.Event == null)
+{
+ Create new event
+}
+else
+{
+ @ViewData["Title"]
+}
+
diff --git a/StudentHouseDashboard/WebApp/Pages/EditEvent.cshtml.cs b/StudentHouseDashboard/WebApp/Pages/EditEvent.cshtml.cs
new file mode 100644
index 0000000..d4bf0d5
--- /dev/null
+++ b/StudentHouseDashboard/WebApp/Pages/EditEvent.cshtml.cs
@@ -0,0 +1,53 @@
+using Logic;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using Models;
+using System.Security.Claims;
+
+namespace WebApp.Pages
+{
+ [Authorize]
+ public class EditEventModel : PageModel
+ {
+ private readonly IEventRepository _eventRepository;
+ private readonly IUserRepository _userRepository;
+
+ public EditEventModel(IEventRepository eventRepository, IUserRepository userRepository)
+ {
+ _eventRepository = eventRepository;
+ _userRepository = userRepository;
+ }
+ [BindProperty]
+ public Event Event { get; set; }
+ public void OnGet(int? id)
+ {
+ EventManager eventManager = new EventManager(_eventRepository);
+ if (id != null)
+ {
+ Event @event = eventManager.GetEventById(id.Value);
+ if (@event.Author.ID == int.Parse(User.FindFirstValue("id")) || User.IsInRole("ADMIN") )
+ {
+ ViewData["event"] = @event;
+ }
+ }
+ }
+ public IActionResult OnPost(bool? n)
+ {
+ if (n != null && n.Value)
+ {
+ UserManager userManager = new UserManager(_userRepository);
+ User user = userManager.GetUserById(int.Parse(User.FindFirstValue("id")));
+ EventManager eventManager = new EventManager(_eventRepository);
+ eventManager.CreateEvent(Event.Title, Event.Description, user, DateTime.Now, Event.StartDate, Event.EndDate);
+ }
+ else
+ {
+ EventManager eventManager = new EventManager(_eventRepository);
+ eventManager.UpdateEvent(Event.ID, Event.Title, Event.Description, Event.StartDate, Event.EndDate);
+ }
+
+ return RedirectToPage("Events");
+ }
+ }
+}
diff --git a/StudentHouseDashboard/WebApp/Pages/Event.cshtml b/StudentHouseDashboard/WebApp/Pages/Event.cshtml
new file mode 100644
index 0000000..91e70d1
--- /dev/null
+++ b/StudentHouseDashboard/WebApp/Pages/Event.cshtml
@@ -0,0 +1,26 @@
+@page
+@using Models;
+@using System.Globalization
+@using System.Security.Claims;
+@model WebApp.Pages.EventModel
+@{
+ Event _event = (Event)ViewData["event"];
+ ViewData["Title"] = $"{_event.Title}";
+}
+@_event.Title
+@_event.StartDate.ToString("g") - @_event.EndDate.ToString("g")
+
+ Published @_event.PublishDate.ToString("g") by @_event.Author.Name
+ @Html.Raw((_event.Author.Role == UserRole.ADMIN || _event.Author.Role == UserRole.MANAGER)
+ ? $"({CultureInfo.CurrentCulture.TextInfo.ToTitleCase(_event.Author.Role.ToString().ToLower())})"
+ : "")
+
+
+ @if (User.FindFirst(ClaimTypes.Role).Value == "ADMIN" || User.Identity.Name == _event.Author.Name)
+ {
+ Edit
+ Delete
+ }
+
+
+@Html.Raw(_event.Description.Replace(Environment.NewLine, "
"))
\ No newline at end of file
diff --git a/StudentHouseDashboard/WebApp/Pages/Event.cshtml.cs b/StudentHouseDashboard/WebApp/Pages/Event.cshtml.cs
new file mode 100644
index 0000000..3c66415
--- /dev/null
+++ b/StudentHouseDashboard/WebApp/Pages/Event.cshtml.cs
@@ -0,0 +1,25 @@
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using Logic;
+using Models;
+using Data;
+
+namespace WebApp.Pages
+{
+ [Authorize]
+ public class EventModel : PageModel
+ {
+ private readonly IEventRepository eventRepository;
+
+ public EventModel(IEventRepository eventRepository)
+ {
+ this.eventRepository = eventRepository;
+ }
+ public void OnGet(int id)
+ {
+ EventManager eventManager = new EventManager(eventRepository);
+ ViewData.Add("event", eventManager.GetEventById(id));
+ }
+ }
+}
diff --git a/StudentHouseDashboard/WebApp/Pages/Events.cshtml b/StudentHouseDashboard/WebApp/Pages/Events.cshtml
new file mode 100644
index 0000000..70b29d0
--- /dev/null
+++ b/StudentHouseDashboard/WebApp/Pages/Events.cshtml
@@ -0,0 +1,25 @@
+@page
+@using Models;
+@using System.Security.Claims;
+@model WebApp.Pages.EventsModel
+@{
+ ViewData["Title"] = "Events";
+ List events = ((List)ViewData["events"]).ToList();
+}
+
+Create new event
+
+
+ @foreach (Event _event in events)
+ {
+
+
+
@_event.Title
+
@_event.StartDate.ToString("g") - @_event.EndDate.ToString("g")
+
@_event.Author.Name
+
@_event.Description.PadRight(100).Substring(0,100).Trim()
+
More details
+
+
+ }
+
\ No newline at end of file
diff --git a/StudentHouseDashboard/WebApp/Pages/Events.cshtml.cs b/StudentHouseDashboard/WebApp/Pages/Events.cshtml.cs
new file mode 100644
index 0000000..7adf50a
--- /dev/null
+++ b/StudentHouseDashboard/WebApp/Pages/Events.cshtml.cs
@@ -0,0 +1,27 @@
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using Logic;
+using Models;
+using System.Security.Claims;
+using System.Dynamic;
+
+namespace WebApp.Pages
+{
+ [Authorize]
+ public class EventsModel : PageModel
+ {
+ private readonly IEventRepository _eventRepository;
+
+ public EventsModel(IEventRepository eventRepository)
+ {
+ _eventRepository = eventRepository;
+ }
+
+ public void OnGet()
+ {
+ EventManager eventManager = new EventManager(_eventRepository);
+ ViewData["events"] = eventManager.GetAllCurrentEvents();
+ }
+ }
+}
diff --git a/StudentHouseDashboard/WebApp/Pages/Shared/_Layout.cshtml b/StudentHouseDashboard/WebApp/Pages/Shared/_Layout.cshtml
index ae71aba..ec75e1b 100644
--- a/StudentHouseDashboard/WebApp/Pages/Shared/_Layout.cshtml
+++ b/StudentHouseDashboard/WebApp/Pages/Shared/_Layout.cshtml
@@ -30,15 +30,14 @@
Complaints
+
+ Events
+
}
@if (User.Identity.IsAuthenticated)
{
-
- -
- Logged in as @User.Identity.Name
-
@if (User.IsInRole("ADMIN") || User.IsInRole("MANAGER"))
{
-
@@ -46,7 +45,7 @@
}
-
- Change password
+ @User.Identity.Name
-
Logout
@@ -74,7 +73,7 @@
diff --git a/StudentHouseDashboard/WebApp/WebApp.csproj b/StudentHouseDashboard/WebApp/WebApp.csproj
index ad917eb..8ac8cbf 100644
--- a/StudentHouseDashboard/WebApp/WebApp.csproj
+++ b/StudentHouseDashboard/WebApp/WebApp.csproj
@@ -7,6 +7,10 @@
+
+ true
+ PreserveNewest
+
true
PreserveNewest