Documentation & code cleanup

This commit is contained in:
Dimitar Byalkov
2023-06-09 11:51:42 +02:00
parent 0ac97bd31a
commit 1832e111e3
61 changed files with 140 additions and 325 deletions

View File

@@ -1,5 +1,24 @@
# Student House Dashboard
Work in progress
Project documentation is available in the docs folder
## Default user details
### System administrator
admin
admin
### Manager
manager
manager
### Tenant
room1
room1
room2
room2
## FHICT Luna server
The web application is hosted on the FHICT Luna server at: https://i509645.luna.fhict.nl/

View File

@@ -1,13 +1,8 @@
using Models;
using Logic;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Logic;
using Logic.Exceptions;
using System.Reflection;
using Models;
using System.Data.SqlClient;
using System.Text;
namespace Data
{

View File

@@ -1,8 +1,7 @@
using System.ComponentModel.Design;
using System.Data.SqlClient;
using Models;
using Logic;
using Logic.Exceptions;
using Models;
using System.Data.SqlClient;
namespace Data;

View File

@@ -1,12 +1,8 @@
using Logic;
using Logic.Exceptions;
using Models;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Data
{

View File

@@ -1,12 +1,7 @@
using Logic;
using Logic.Exceptions;
using Models;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Data
{

View File

@@ -1,10 +1,5 @@
using Logic.Exceptions;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Data
{

View File

@@ -1,13 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using Logic;
using Models;
using System.Data;
using System.Xml.Linq;
using Logic;
using System.Data.SqlClient;
namespace Data
{
@@ -115,7 +108,7 @@ namespace Data
}
}
public User GetUserByName(string userName)
public User? GetUserByName(string userName)
{
using (SqlConnection conn = SqlConnectionHelper.CreateConnection())
{
@@ -124,9 +117,15 @@ namespace Data
cmd.Parameters.AddWithValue("@userName", userName);
var reader = cmd.ExecuteReader();
if (reader.HasRows)
{
reader.Read();
return new User(Convert.ToInt32(reader["ID"]), reader["Name"].ToString(),
reader["Password"].ToString(), (UserRole)reader["Role"]);
}
else { return null; }
}
}
}
}

View File

@@ -1,11 +1,5 @@
using Models;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace Logic
{

View File

@@ -1,9 +1,4 @@
using Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Logic
{

View File

@@ -1,9 +1,4 @@
using Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Logic
{

View File

@@ -1,9 +1,4 @@
using Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Logic
{

View File

@@ -1,9 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Net;
namespace Logic.Exceptions
{

View File

@@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Logic.Exceptions
namespace Logic.Exceptions
{
public class DatabaseOperationException : ApplicationException
{

View File

@@ -1,10 +1,4 @@
using Models;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Logic
{

View File

@@ -1,5 +1,3 @@
using System.ComponentModel.Design;
using System.Data.SqlClient;
using Models;
namespace Logic;

View File

@@ -1,10 +1,4 @@
using Logic.Exceptions;
using Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Models;
namespace Logic
{

View File

@@ -1,9 +1,4 @@
using Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Logic
{
@@ -17,4 +12,3 @@ namespace Logic
public void DeleteEvent(int id);
}
}

View File

@@ -1,9 +1,4 @@
using Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Logic
{

View File

@@ -1,14 +1,4 @@
using BCrypt.Net;
using Models;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net.Http;
using System.Security.Claims;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
using Models;
namespace Logic
{

View File

@@ -1,9 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Models
namespace Models
{
public class Announcement : GenericMessage
{
@@ -19,12 +14,12 @@ namespace Models
}
public List<Comment> Comments
{
get;set;
get; set;
}
public bool IsImportant
{
get;set;
get; set;
}
public bool IsSticky

View File

@@ -1,9 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Models
namespace Models
{
public class Comment : GenericMessage
{

View File

@@ -1,9 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Models
namespace Models
{
public class Complaint : GenericMessage
{
@@ -19,17 +14,17 @@ namespace Models
public ComplaintStatus Status
{
get;set;
get; set;
}
public ComplaintSeverity Severity
{
get;set;
get; set;
}
public List<Comment> Responses
{
get;set;
get; set;
}
public override string ToString()
{

View File

@@ -1,8 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.ComponentModel;
namespace Models
{

View File

@@ -1,8 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.ComponentModel;
namespace Models
{

View File

@@ -1,9 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Models
namespace Models
{
public class Event : GenericMessage
{
@@ -19,12 +14,12 @@ namespace Models
public DateTime StartDate
{
get;set;
get; set;
}
public DateTime EndDate
{
get;set;
get; set;
}
public override string ToString()
{

View File

@@ -1,8 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;
namespace Models
{
@@ -27,16 +23,16 @@ namespace Models
public User Author
{
get;set;
get; set;
}
public string Description
{
get;set;
get; set;
}
[StringLength(255)]
public string Title
{
get;set;
get; set;
}
public DateTime PublishDate
{

View File

@@ -1,9 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;
namespace Models
{
@@ -25,13 +20,17 @@ namespace Models
{
get; set;
}
[Required]
[StringLength(255)]
public string Name
{
get; set;
}
[Required]
[DataType(DataType.Password)]
[StringLength(int.MaxValue, MinimumLength = 4)]
public string Password
{
get; set;

View File

@@ -1,9 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.ComponentModel;
namespace Models
{

View File

@@ -1,10 +1,5 @@
using Logic;
using Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tests.Mocks;
namespace Tests

View File

@@ -1,13 +1,6 @@
using Logic;
using Models;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
namespace Tests.Mocks
{

View File

@@ -1,10 +1,5 @@
using Models;
using Logic;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Logic;
using Models;
namespace Tests.Mocks
{

View File

@@ -1,4 +1,3 @@
using BCrypt.Net;
using Logic;
using Models;
using Tests.Mocks;

View File

@@ -1,5 +1,4 @@
using Logic;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Models;

View File

@@ -1,9 +1,6 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Logic;
using Models;
using Data;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace WebApp.Pages
{

View File

@@ -1,9 +1,7 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Logic;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Models;
using System.Security.Claims;
namespace WebApp.Pages
{

View File

@@ -1,9 +1,6 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Logic;
using Models;
using Data;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace WebApp.Pages
{

View File

@@ -1,8 +1,6 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Logic;
using Models;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.RazorPages;
using System.Security.Claims;
namespace WebApp.Pages

View File

@@ -24,7 +24,7 @@ namespace WebApp.Pages
if (id != null)
{
Announcement announcement = announcementManager.GetAnnouncementById(id);
if (announcement.Author.ID == int.Parse(User.FindFirstValue("id")) || User.IsInRole("ADMIN") )
if (announcement.Author.ID == int.Parse(User.FindFirstValue("id")) || User.IsInRole("ADMIN"))
{
ViewData["announcement"] = announcement;
}

View File

@@ -26,7 +26,7 @@ namespace WebApp.Pages
if (id != null)
{
Event @event = eventManager.GetEventById(id.Value);
if (@event.Author.ID == int.Parse(User.FindFirstValue("id")) || User.IsInRole("ADMIN") )
if (@event.Author.ID == int.Parse(User.FindFirstValue("id")) || User.IsInRole("ADMIN"))
{
ViewData["event"] = @event;
}

View File

@@ -1,4 +1,3 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace WebApp.Pages.Error

View File

@@ -1,4 +1,3 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace WebApp.Pages.Error

View File

@@ -1,9 +1,6 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Logic;
using Models;
using Data;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace WebApp.Pages
{

View File

@@ -1,10 +1,6 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Logic;
using Models;
using System.Security.Claims;
using System.Dynamic;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace WebApp.Pages
{

View File

@@ -1,6 +1,4 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace WebApp.Pages
{

View File

@@ -1,11 +1,11 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Data;
using Logic;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Models;
using Logic;
using System.Security.Claims;
using Data;
namespace WebApp.Pages
{

View File

@@ -1,5 +1,4 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace WebApp.Pages
{

View File

@@ -1,8 +1,8 @@
using Data;
using Logic;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Logic;
using Models;
using Data;
namespace WebApp.Pages
{
@@ -16,10 +16,22 @@ namespace WebApp.Pages
public void OnPost()
{
var userManager = new UserManager(new UserRepository());
if (userManager.CreateUser(MyUser.Name, BCrypt.Net.BCrypt.HashPassword(MyUser.Password), MyUser.Role) != null)
User? result = null;
try
{
result = userManager.CreateUser(MyUser.Name, BCrypt.Net.BCrypt.HashPassword(MyUser.Password), MyUser.Role);
}
catch (ArgumentException)
{
ViewData["confirm"] = "An error has occurred. Try a different username.";
}
finally
{
if (result != null)
{
ViewData["confirm"] = $"Successfully registered {MyUser.Name}!";
}
}
}
}
}

View File

@@ -13,7 +13,8 @@ namespace WebApp
// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(options => {
builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(options =>
{
options.LoginPath = new PathString("/Login");
options.AccessDeniedPath = new PathString("/Error/401");
});

View File

@@ -1,15 +1,6 @@
using Data;
using Logic;
using Models;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WinForms
{

View File

@@ -1,15 +1,6 @@
using Data;
using Logic;
using Models;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WinForms
{

View File

@@ -1,15 +1,6 @@
using Data;
using Logic;
using Models;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WinForms
{

View File

@@ -1,15 +1,6 @@
using Data;
using Logic;
using Models;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WinForms
{

View File

@@ -1,15 +1,6 @@
using Data;
using Logic;
using Models;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WinForms
{

View File

@@ -1,15 +1,6 @@
using Data;
using Logic;
using Models;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WinForms
{

BIN
docs/project-report.docx Normal file

Binary file not shown.

Binary file not shown.

BIN
docs/testplan.pdf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,6 +1,7 @@
USE dbi509645
GO
-- User roles
INSERT INTO UserRole ([Role])
VALUES
('TENANT'),
@@ -8,6 +9,7 @@ VALUES
('ADMIN')
GO
-- Default users
INSERT INTO Users ([Name], [Password], [Role])
VALUES
('admin', 'admin', 2),
@@ -15,6 +17,7 @@ VALUES
('room1', 'room1', 0)
GO
-- Complaint status
INSERT INTO ComplaintStatus ([Status])
VALUES
('FILED'),
@@ -23,6 +26,7 @@ VALUES
('ARCHIVED')
GO
-- Complaint severity
INSERT INTO ComplaintSeverity ([Severity])
VALUES
('LOW'),
@@ -30,5 +34,3 @@ VALUES
('HIGH'),
('URGENT')
GO
SELECT * FROM Users u JOIN UserRole r ON u.[Role] = r.ID

View File

@@ -15,6 +15,8 @@ CREATE TABLE Users (
)
GO
-- Used only in previous versions for a contact form
-- no longer needed
CREATE TABLE ContactForm (
ID INT PRIMARY KEY IDENTITY NOT NULL,
[Name] NVARCHAR(255) NOT NULL,