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) +{ + + Return to all events +} +else +{ +
+

Are you sure you want to delete this event?

+
+
+
@_event.Title
+
@_event.Author.Name - @_event.PublishDate
+

@Html.Raw(_event.Description.Replace(Environment.NewLine, "
"))

+
+
+ + + No +
+} \ 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"]

+} +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ @if (ViewData["event"] == null) + { + + } + +
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 @@ + }