diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.Archive/TeamHobby.HobbyProjectGenerator.Archive.csproj b/Source Code/TeamHobby.HobbyProjectGenerator.Archive/TeamHobby.HobbyProjectGenerator.Archive.csproj
index 09da541..65fcde5 100644
--- a/Source Code/TeamHobby.HobbyProjectGenerator.Archive/TeamHobby.HobbyProjectGenerator.Archive.csproj
+++ b/Source Code/TeamHobby.HobbyProjectGenerator.Archive/TeamHobby.HobbyProjectGenerator.Archive.csproj
@@ -4,6 +4,7 @@
net6.0
enable
enable
+ AnyCPU;x86
diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.ArchiveTests/ArchivingTests.cs b/Source Code/TeamHobby.HobbyProjectGenerator.ArchiveTests/ArchivingTests.cs
index 88e7b50..7da2223 100644
--- a/Source Code/TeamHobby.HobbyProjectGenerator.ArchiveTests/ArchivingTests.cs
+++ b/Source Code/TeamHobby.HobbyProjectGenerator.ArchiveTests/ArchivingTests.cs
@@ -40,8 +40,8 @@ namespace TeamHobby.HobbyProjectGenerator.ArchiveTests
{
Directory.Delete(folderPath, true);
}
- catch {
- Console.WriteLine("Folder failed to be deleted");
+ catch {
+ Console.WriteLine("Folder failed to be deleted");
}
}
else
@@ -75,21 +75,125 @@ namespace TeamHobby.HobbyProjectGenerator.ArchiveTests
}
- public void CopyingToAFileTest(IDataSource sqlDAO)
+ // [Test Method]
+ public void IsCSVFileExist(IDataSource sqlDAO)
{
// Arrange
ArchiveManager archiveManager = new ArchiveManager(sqlDAO);
SqlDAO sqlDS = null;
-
+ string folderPath = @"C:/HobbyArchive";
+
+ try
+ {
+ bool folderRes = archiveManager.CreateArchiveFolder();
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine("Folder creation for copying failed");
+ }
+ string filePath = archiveManager.CreateOutFileName();
+ bool expectedVal = true;
+
if (sqlDAO.GetType() == typeof(SqlDAO))
{
sqlDS = (SqlDAO)sqlDAO;
}
// Act
-
-
+ bool actualVal = false;
+ if (sqlDS != null)
+ {
+ try
+ {
+ actualVal = sqlDS.CopyToFile(filePath);
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine("Copying to a file failed !!");
+ Console.WriteLine(ex.Message);
+ }
+ }
// Assert
+ bool result = File.Exists(filePath);
+ if (result)
+ {
+ Console.WriteLine("Expected: {0}, Actual: {1}. CSV file created correctly", expectedVal, actualVal);
+ // Clean up the folder use to test.
+ try
+ {
+ Directory.Delete(folderPath, true);
+ }
+ catch
+ {
+ Console.WriteLine("Folder failed to be deleted");
+ }
+ }
+ else
+ {
+ Console.WriteLine("Expected: {0}, Actual: {1}. CSV file created incorrectly", expectedVal, actualVal);
+ }
+
+ }
+
+ // [Test Method]
+ public void IsProcessFlowCompleted(IDataSource sqlDAO)
+ {
+ // Arrange
+ ArchiveManager archive = new ArchiveManager(sqlDAO);
+
+ // Act
+ // Testing archive Manager
+ int i = -10;
+ while (i < 20)
+ {
+ DateTime date1 = new DateTime(2021, 12, 1, 0, 0, 0);
+ //Console.WriteLine("Testing first of month: {0}", date1.ToString("dd"));
+ //string currentDate = DateTime.Now.ToString("dd");
+ //string currentTime = DateTime.Now.ToString("T");
+ string currentTime = "00:00:00 AM";
+ string currentDate = i.ToString();
+
+ if (i == 1)
+ {
+ currentDate = date1.ToString("dd");
+ //ArchiveManager archive = new ArchiveManager(sqlDAO);
+ //archive.Controller();
+ }
+
+ //Console.WriteLine("Current date: {0}, Current Time: {1}", currentDate, currentTime);
+ Console.WriteLine("Current date: {0}, Current Time: {1}", currentDate, currentTime);
+ if (String.Equals(currentDate, "01") && String.Equals(currentTime, "00:00:00 AM"))
+ {
+ Console.WriteLine("Archiving process Start");
+ //ArchiveManager archive = new ArchiveManager(sqlDAO);
+ archive.Controller();
+ }
+
+ i++;
+ }
+
+ }
+
+ public void IsCleaningUpCompleted(IDataSource sqlDAO)
+ {
+ //Arrange
+ ArchiveManager archive = new ArchiveManager(sqlDAO);
+ bool actualVal = false;
+ bool expectedVal = false;
+
+ // Act
+ actualVal = archive.Controller();
+
+ // Assert
+ //bool result = !(actualVal && expectedVal);
+ if (expectedVal == actualVal)
+ {
+ Console.WriteLine("Expected: {0}, Actual: {1}. Error handle correctly", expectedVal, actualVal);
+ }
+ else
+ {
+ Console.WriteLine("Expected: {0}, Actual: {1}. Error handle incorrectly", expectedVal, actualVal);
+ }
}
@@ -116,6 +220,18 @@ namespace TeamHobby.HobbyProjectGenerator.ArchiveTests
Console.WriteLine("");
+ // Testing file creation
+ test.IsCSVFileExist(sqlDAO);
+ Console.WriteLine("-----------------");
+ Console.WriteLine("");
+
+
+
+ // Testing clean up sequence
+ //test.IsCleaningUpCompleted(sqlDAO);
+ //Console.WriteLine("-----------------");
+ //Console.WriteLine("");
+
}
}
diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.DataAccess/Class1.cs b/Source Code/TeamHobby.HobbyProjectGenerator.DataAccess/Class1.cs
deleted file mode 100644
index e92f039..0000000
--- a/Source Code/TeamHobby.HobbyProjectGenerator.DataAccess/Class1.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace TeamHobby.HobbyProjectGenerator.DataAccess
-{
- public class Class1
- {
-
- }
-}
\ No newline at end of file
diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.DataAccess/Implementations/SqlDAO.cs b/Source Code/TeamHobby.HobbyProjectGenerator.DataAccess/Implementations/SqlDAO.cs
index 7a14a05..949eb5d 100644
--- a/Source Code/TeamHobby.HobbyProjectGenerator.DataAccess/Implementations/SqlDAO.cs
+++ b/Source Code/TeamHobby.HobbyProjectGenerator.DataAccess/Implementations/SqlDAO.cs
@@ -17,9 +17,9 @@ namespace TeamHobby.HobbyProjectGenerator.DataAccess
public SqlDAO(string info)
{
try {
- Console.WriteLine("Establising Connection...");
+ //Console.WriteLine("Establising Connection...");
_conn = new OdbcConnection(info);
- Console.WriteLine("Connection established.");
+ //Console.WriteLine("Connection established.");
}
catch {
//_conn = null;
@@ -238,14 +238,12 @@ namespace TeamHobby.HobbyProjectGenerator.DataAccess
string sqlCmd = "DELETE FROM log WHERE DATEDIFF(current_timestamp, log.LtimeStamp) > 30";
- try{
- DeleteData(sqlCmd);
- return true;
- }
- catch {
- Console.WriteLine("Eeep! an error in Remove Entries, not to worry, will be handled higher up the call stack");
- throw;
- }
+ if (DeleteData(sqlCmd) == false)
+ {
+ throw new Exception("Error in removing entries,not to worry, will be handled higher up the call stack");
+ };
+
+ return true;
}
//public Object ReadPreparedStmt(string table){
diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.DataAccess/Implementations/UiPrint.cs b/Source Code/TeamHobby.HobbyProjectGenerator.DataAccess/Implementations/UiPrint.cs
index e197fbb..6d06cb8 100644
--- a/Source Code/TeamHobby.HobbyProjectGenerator.DataAccess/Implementations/UiPrint.cs
+++ b/Source Code/TeamHobby.HobbyProjectGenerator.DataAccess/Implementations/UiPrint.cs
@@ -4,20 +4,12 @@ namespace TeamHobby.HobbyProjectGenerator.DataAccess
{
public class UiPrint
{
- public void InitialMenu()
- {
- // Create intial menu
- Console.WriteLine("What would you like to access?");
- int num = 1;
- Console.WriteLine(num + ".User Management");
- num += 1;
- Console.WriteLine(num + ".Logging");
- }
public void UserManagementMenu(string username)
{
// Menu for all UserManagement options
int menu = 0;
- Console.WriteLine($"Welcome {username} to User Management.\n");
+ Console.WriteLine("-------------------------------------\n");
+ Console.WriteLine($"\nWelcome {username} to User Management.\n");
Console.WriteLine("What would you like to do?\n");
Console.WriteLine(menu + ") To exit User Management.\n");
menu += 1;
@@ -31,9 +23,9 @@ namespace TeamHobby.HobbyProjectGenerator.DataAccess
menu += 1;
Console.WriteLine(menu + ") Enable an account.\n");
menu += 1;
- Console.WriteLine(menu + ") View logs.\n");
+ Console.WriteLine(menu + ") View log path.\n");
menu += 1;
- Console.WriteLine(menu + ") View archive.\n");
+ Console.WriteLine(menu + ") View archive path.\n");
}
}
}
diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Contracts/ILogger.cs b/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Contracts/ILogger.cs
index e24ee79..bf17d92 100644
--- a/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Contracts/ILogger.cs
+++ b/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Contracts/ILogger.cs
@@ -10,7 +10,7 @@ namespace TeamHobby.HobbyProjectGenerator.Logging
{
bool Log(LogEntry log);
- IList GetAllLogs();
+ // IList GetAllLogs();
}
}
diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Contracts/ILoggerFactory.cs b/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Contracts/ILoggerFactory.cs
index 430df4c..28ab00f 100644
--- a/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Contracts/ILoggerFactory.cs
+++ b/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Contracts/ILoggerFactory.cs
@@ -10,6 +10,7 @@ namespace TeamHobby.HobbyProjectGenerator.Logging.Contracts
{
ILogger CreateLogger()
{
+ return new DBLogger();
}
}
}
diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Implementations/ConsoleLogger.cs b/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Implementations/ConsoleLogger.cs
index a7e9f89..ba0c24d 100644
--- a/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Implementations/ConsoleLogger.cs
+++ b/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Implementations/ConsoleLogger.cs
@@ -1,22 +1,16 @@
-/*using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+// using System;
+// using System.Collections.Generic;
+// using System.Linq;
+// using System.Text;
+// using System.Threading.Tasks;
-namespace TeamHobby.HobbyProjectGenerator.Logging
-{
- public class ConsoleLogger : ILogger
- {
- public IList GetAllLogs()
- {
- throw new NotImplementedException();
- }
-
- public bool Log(string description)
- {
- throw new NotImplementedException();
- }
- }
-}
-*/
\ No newline at end of file
+// namespace TeamHobby.HobbyProjectGenerator.Logging
+// {
+// public class ConsoleLogger : ILogger
+// {
+// public bool Log(LogEntry log)
+// {
+// return true;
+// }
+// }
+// }
diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Implementations/FileLogger.cs b/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Implementations/FileLogger.cs
index 7f3582d..b4e4a75 100644
--- a/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Implementations/FileLogger.cs
+++ b/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Implementations/FileLogger.cs
@@ -1,18 +1,23 @@
-/*using System;
+// using System;
-namespace TeamHobby.HobbyProjectGenerator.Logging
-{
- public class FileLogger : ILogger
- {
- public IList GetAllLogs()
- {
- throw new NotImplementedException();
- }
+// namespace TeamHobby.HobbyProjectGenerator.Logging
+// {
+// public class FileLogger : Ilogger
+// {
+// public FileLogger()
+// {
+// }
- public bool Log(string description)
- {
- throw new NotImplementedException();
- }
- }
+// public IList GetAllLogs()
+// {
+// throw new NotImplementedException();
+// }
-}*/
\ No newline at end of file
+// public bool Log(LogEntry log)
+// {
+// throw new NotImplementedException();
+// }
+
+// }
+
+// }
diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Implementations/InMemoryLogger.cs b/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Implementations/InMemoryLogger.cs
index 6e51ed9..eea5e87 100644
--- a/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Implementations/InMemoryLogger.cs
+++ b/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Implementations/InMemoryLogger.cs
@@ -1,38 +1,58 @@
-/*using System;
-using System.Collections.Generic;
-namespace TeamHobby.HobbyProjectGenerator.Logging
-{
- // implementation of ILogger that stores logs as they initialize
- public class InMemoryLogger : ILogger
- {
- // make readonly to prevent it from being changed somewhere other than in the constructor
- private readonly IList _logStore;
+// using System;
+// using System.Collections.Generic;
+// namespace TeamHobby.HobbyProjectGenerator.Logging
+// {
+// // implementation of ILogger that stores logs as they initialize
+// public class InMemoryLogger : ILogger
+// {
+// // make readonly to prevent it from being changed somewhere other than in the constructor
+// private readonly IList _logStore;
- public InMemoryLogger()
- {
- // list of current logs
- _logStore = new List();
- }
+// public InMemoryLogger()
+// {
+// // list of current logs
+// _logStore = new List();
+// }
+// public InMemoryLogger(IList logStore)
+// {
+// _logStore = logStore;
+// }
+// public bool Log(LogEntry entry)
+// {
+// if (entry is null)
+// {
+// throw new ArgumentNullException(nameof(entry));
+// }
- public bool Log(string description)
- {
- try
- {
- // string interpolation to add UTC timestamp to log description
- _logStore.Add($"{DateTime.UtcNow}-> {description}");
- return true;
- }
- catch
- {
- return false;
- }
- }
- public IList GetAllLogs()
- {
- return _logStore;
- }
- }
+// try
+// {
+// // string interpolation to add UTC timestamp to log description
+// //_logStore.Add($"{DateTime.UtcNow}-> {description}");
+// return true;
+// }
+// catch
+// {
+// return false;
+// }
+// }
+// public IList GetAllLogs()
+// {
+// return _logStore;
+// }
-}*/
\ No newline at end of file
+
+// public override bool Equals(object? obj)
+// {
+// return obj is InMemoryLogger logger &&
+// EqualityComparer>.Default.Equals(_logStore, logger._logStore);
+// }
+
+// public override int GetHashCode()
+// {
+// return HashCode.Combine(_logStore);
+// }
+// }
+
+// }
diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.Logging/LogEntry.cs b/Source Code/TeamHobby.HobbyProjectGenerator.Logging/LogEntry.cs
index bfd99fe..c422760 100644
--- a/Source Code/TeamHobby.HobbyProjectGenerator.Logging/LogEntry.cs
+++ b/Source Code/TeamHobby.HobbyProjectGenerator.Logging/LogEntry.cs
@@ -26,6 +26,28 @@ namespace TeamHobby.HobbyProjectGenerator.Logging
public string description { get; init; }
public DateTime timestamp { get; init; }
+
+ // Constructor requireing only the description as an arg
+ // Assigns default values for LogLevel (Info), LogCategory (Server), user ("System"), and the UTC time at initialization for timestamp
+ public LogEntry(string description)
+ {
+ this.level = LogLevel.Info;
+ this.category = LogCategory.Server;
+ this.user = "System";
+ this.description = description;
+ this.timestamp = DateTime.UtcNow;
+ }
+ // Constructor with args for all fields except timestamp
+ // timestamp is always set to the UTC time at the time of initialization
+ public LogEntry(LogLevel level, string user, LogCategory category, string description)
+ {
+ this.level = level;
+ this.category = category;
+ this.user = user;
+ this.description = description;
+ this.timestamp = DateTime.UtcNow;
+ }
+
+
}
}
-*/
\ No newline at end of file
diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.Logging/LoggingController.cs b/Source Code/TeamHobby.HobbyProjectGenerator.Logging/LoggingManager.cs
similarity index 81%
rename from Source Code/TeamHobby.HobbyProjectGenerator.Logging/LoggingController.cs
rename to Source Code/TeamHobby.HobbyProjectGenerator.Logging/LoggingManager.cs
index cea8e12..f9c9d3a 100644
--- a/Source Code/TeamHobby.HobbyProjectGenerator.Logging/LoggingController.cs
+++ b/Source Code/TeamHobby.HobbyProjectGenerator.Logging/LoggingManager.cs
@@ -9,23 +9,23 @@ using TeamHobby.HobbyProjectGenerator.Logging.Implementations;
namespace TeamHobby.HobbyProjectGenerator.Logging
{
- internal class LoggingController
+ internal class LoggingManager
{
private readonly IDataSource _conn;
private readonly ILogger _logger;
private readonly ILoggerFactory _factory;
- // private readonly LogEntry _logEntry;
+ private readonly LogEntry _logEntry;
// Both Constructors take an IDataSource arg to make logging extensible to future data sources
// first constructor has no additional args - defaults to using the DBFactiry implementation
- public LoggingController(IDataSource dataSource)
+ public LoggingManager(IDataSource dataSource)
{
_conn = dataSource;
_factory = new DBLoggerFactory();
_logger = _factory.CreateLogger();
}
// second constructor takes an additional ILoggerFactory arg - allows for extensible logger types
- public LoggingController(IDataSource dataSource, ILoggerFactory factory)
+ public LoggingManager(IDataSource dataSource, ILoggerFactory factory)
{
_conn = dataSource;
_factory = factory;
@@ -35,7 +35,7 @@ namespace TeamHobby.HobbyProjectGenerator.Logging
public void Process()
{
- _logger.Log();
+ _logger.Log(_logEntry);
}
diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.Logging/TeamHobby.HobbyProjectGenerator.Logging.csproj b/Source Code/TeamHobby.HobbyProjectGenerator.Logging/TeamHobby.HobbyProjectGenerator.Logging.csproj
index 20a5fff..c9596e5 100644
--- a/Source Code/TeamHobby.HobbyProjectGenerator.Logging/TeamHobby.HobbyProjectGenerator.Logging.csproj
+++ b/Source Code/TeamHobby.HobbyProjectGenerator.Logging/TeamHobby.HobbyProjectGenerator.Logging.csproj
@@ -4,6 +4,7 @@
net6.0
enable
enable
+ AnyCPU;x86
diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.Models/Credentials.cs b/Source Code/TeamHobby.HobbyProjectGenerator.Models/Credentials.cs
deleted file mode 100644
index 2670e8f..0000000
--- a/Source Code/TeamHobby.HobbyProjectGenerator.Models/Credentials.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace TeamHobby.HobbyProjectGenerator.Models
-{
- public class Credentials
- {
- public string userName { get; set; }
-
- // Syntactic sugar
- public string Password { get; set; }
- }
-}
\ No newline at end of file
diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/AccountService.cs b/Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/AccountService.cs
index 198f16c..cf332f7 100644
--- a/Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/AccountService.cs
+++ b/Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/AccountService.cs
@@ -29,53 +29,74 @@ namespace TeamHobby.HobbyProjectGenerator.UserManagement
return false;
}
}
- public bool EditUserRecord(UserAccount newUser, string CreatedBy, IDataSource dbSource)
+ public bool EditUserRecord(UserAccount editUser, string CreatedBy, IDataSource dbSource)
{
-/* // Insert into users table
- string sqlUser = $"UPDATE hobby.roles r SET r.Role = 'regular',r.CreatedBy = 'colin'WHERE r.RoleID = 5; ";
-
- Object insertNewUser = dbSource.WriteData(sqlUser);
- // Insert into users table
- string sqlRoles = $"INSERT INTO roles (Role, CreatedBy, CreatedDate) " +
- $"VALUES ('{newUser.NewRole}', '{CreatedBy}', NOW());";
- Object insertNewRole = dbSource.WriteData(sqlUser);
- // Create string for confirming user account
- string confirmUser = $"Select * from users where username = {newUser.NewUserName} " +
- $"and password = {newUser.NewPassword};";
- Object conUser = dbSource.ReadData(confirmUser);
-
- //Console.WriteLine("type of Reesult:" + confirmAdmin.GetType());
- OdbcDataReader reader = null;
-
- if (conUser.GetType() == typeof(OdbcDataReader))
+ try
{
- reader = (OdbcDataReader)conUser;
- }
+ // Insert into users table
+ string sqlUser = $"UPDATE users t SET t.Password = '{editUser.password}', " +
+ $"t.Role = '{editUser.role}',t.Email = '{editUser.email}' " +
+ $"WHERE t.UserName = '{editUser.username}';";
- // Read Sql query results
- while (reader.Read())
+ bool updateNewUser = dbSource.UpdateData(sqlUser);
+ return updateNewUser;
+
+ }
+ catch (Exception ex)
{
- Console.WriteLine(reader.GetString(0));
+ return false;
}
+ }
+ public bool DeleteUserRecord(UserAccount deleteUser, string CreatedBy, IDataSource dbSource)
+ {
+ try
+ {
+ // Insert into users table
+ string sqlUser = $"DELETE from users WHERE UserName = '{deleteUser.username}' " +
+ $"and Password = '{deleteUser.password}';";
- SqlDAO sqlDS = (SqlDAO)dbSource;
- Console.WriteLine("");
+ bool deleteNewUser = dbSource.DeleteData(sqlUser);
+ return deleteNewUser;
- // Closing the connection
- sqlDS.getConnection().Close();*/
- return true;
+ }
+ catch (Exception ex)
+ {
+ return false;
+ }
}
- public bool DeleteUserRecord(UserAccount newUser, IDataSource dbSource)
+ public bool DisableUser(UserAccount disableUser, string CreatedBy, IDataSource dbSource)
{
- return true;
+ try
+ {
+ // Insert into users table
+ string sqlUser = $"UPDATE users u SET u.IsActive = 0 WHERE u.UserName = '{disableUser.username}'" +
+ $"and u.Role = '{disableUser.role}';";
+
+ bool disableNewUser = dbSource.UpdateData(sqlUser);
+ return disableNewUser;
+
+ }
+ catch (Exception ex)
+ {
+ return false;
+ }
}
- public bool DisableUser(UserAccount newUser, IDataSource dbSource)
+ public bool EnableUser(UserAccount enableUser, string CreatedBy, IDataSource dbSource)
{
- return true;
- }
- public bool EnableUser(UserAccount newUser, IDataSource dbSource)
- {
- return true;
+ try
+ {
+ // Insert into users table
+ string sqlUser = $"UPDATE users u SET u.IsActive = 1 WHERE u.UserName = '{enableUser.username}'" +
+ $"and u.Role = '{enableUser.role}';";
+
+ bool disableNewUser = dbSource.UpdateData(sqlUser);
+ return disableNewUser;
+
+ }
+ catch (Exception ex)
+ {
+ return false;
+ }
}
}
}
diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/SystemAccountManager.cs b/Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/SystemAccountManager.cs
index 954d9fa..49b0e48 100644
--- a/Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/SystemAccountManager.cs
+++ b/Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/SystemAccountManager.cs
@@ -175,6 +175,7 @@ namespace TeamHobby.HobbyProjectGenerator.UserManagement
if (checkSql == "Admin")
{
+ Console.WriteLine("-- Logged in successfully.");
return true;
}
else
@@ -217,47 +218,91 @@ namespace TeamHobby.HobbyProjectGenerator.UserManagement
{
// Exit menu
case 0:
- return "Exiting UserManagement.\n";
- break;
+ return "Back to Login";
// Create account
case 1:
+ // Get all credentials and create newUser
UserAccount newUser = new UserAccount(newCredentials.GetUserName(),
- newCredentials.GetPassword(), newCredentials.GetEmail(),
+ newCredentials.ConfirmPassword(), newCredentials.GetEmail(),
newCredentials.GetRole(), DateTime.UtcNow);
- bool accountValid = accountService.CreateUserRecord(newUser,user.username, dbSource);
+ bool accountValid = accountService.CreateUserRecord(newUser, user.username, dbSource);
if (accountValid is true)
{
- Console.WriteLine("Account created Successfully");
+ Console.WriteLine("\nAccount created Successfully");
break;
}
else
{
return "Database Timed out";
}
- //break;
// Edit account
case 2:
- /* UserAccount newEditUser = new UserAccount(newCredentials.GetUserName(),
- newCredentials.GetPassword(), DateTime.UtcNow);
- accountService.EditUserRecord(newEditUser, dbSource);*/
+ // State what account is being edited
+ string userName = newCredentials.GetUserName();
+ string userRole = newCredentials.GetRole();
+
+ // Notify the user of what can be edited
+ Console.WriteLine($"\n****The following information will be used to update {userName}");
+
+ // Get updated parameters
+ UserAccount newEditUser = new UserAccount(userName,
+ newCredentials.GetPassword(), newCredentials.GetEmail(),
+ newCredentials.GetRole(), DateTime.UtcNow);
+ bool editValid = accountService.EditUserRecord(newEditUser, user.username, dbSource);
+ if (editValid is true)
+ {
+ Console.WriteLine("\nAccount updated Successfully");
+ break;
+ }
+ else
+ {
+ return "Database Timed out";
+ }
break;
// Delete account
case 3:
UserAccount newDeleteUser = new UserAccount(newCredentials.GetUserName(),
newCredentials.GetPassword(), DateTime.UtcNow);
- accountService.DeleteUserRecord(newDeleteUser, dbSource);
+ bool deleteValid = accountService.DeleteUserRecord(newDeleteUser, user.username , dbSource);
+ if (deleteValid is true)
+ {
+ Console.WriteLine("\nAccount deleted Successfully");
+ break;
+ }
+ else
+ {
+ return "User does not exist";
+ }
break;
// Disable account
case 4:
UserAccount newDisableUser = new UserAccount(newCredentials.GetUserName(),
- newCredentials.GetPassword(), DateTime.UtcNow);
- accountService.DisableUser(newDisableUser, dbSource);
+ newCredentials.GetRole());
+ bool disableValid = accountService.DisableUser(newDisableUser, user.username , dbSource);
+ if (disableValid is true)
+ {
+ Console.WriteLine("\nAccount disabled Successfully");
+ break;
+ }
+ else
+ {
+ return "User does not exist";
+ }
break;
// Enable account
case 5:
UserAccount newEnableUser = new UserAccount(newCredentials.GetUserName(),
- newCredentials.GetPassword(), DateTime.UtcNow);
- accountService.EnableUser(newEnableUser, dbSource);
+ newCredentials.GetRole());
+ bool enableValid = accountService.EnableUser(newEnableUser, user.username , dbSource);
+ if (enableValid is true)
+ {
+ Console.WriteLine("\nAccount enabled Successfully");
+ break;
+ }
+ else
+ {
+ return "User does not exist";
+ }
break;
// View logs
case 6:
@@ -266,14 +311,11 @@ namespace TeamHobby.HobbyProjectGenerator.UserManagement
case 7:
break;
default:
- Console.WriteLine("Invalid input.\nPlease enter a valid option.\n" +
- "------------------------------------\n\n");
+ Console.WriteLine("Invalid input.\nPlease enter a valid option.\n");
break;
}
}
-
- string dbAction = user.username;
- return dbAction;
+ return "Back to Login";
}
}
}
diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/UserAccount.cs b/Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/UserAccount.cs
index 4b9a38f..58d6b13 100644
--- a/Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/UserAccount.cs
+++ b/Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/UserAccount.cs
@@ -5,7 +5,7 @@ using System.Text;
using System.Threading.Tasks;
namespace TeamHobby.HobbyProjectGenerator.UserManagement
-{
+{ // Class for getting user credentials
public class GetCredentials
{
public string? GetUserName()
@@ -20,11 +20,26 @@ namespace TeamHobby.HobbyProjectGenerator.UserManagement
string? userPassword = Console.ReadLine();
return userPassword;
}
- /*public string ConfirmPassword()
+ public string ConfirmPassword()
{
- Console.WriteLine();
- string confirmPassword = newUser.NewPassword;
- }*/
+ while (true)
+ {
+ Console.WriteLine("Please enter a password:");
+ string? userPassword = Console.ReadLine();
+ // Confirm Password
+ Console.WriteLine("Please re-enter the password:");
+ string checkPsswd = Console.ReadLine();
+ // Check if passwords match
+ if (userPassword == checkPsswd)
+ {
+ return userPassword;
+ }
+ else
+ {
+ Console.WriteLine("Passwords do not match.\n");
+ }
+ }
+ }
public string GetEmail()
{
Console.WriteLine("Please enter an email:");
@@ -52,6 +67,12 @@ namespace TeamHobby.HobbyProjectGenerator.UserManagement
_password = pwd;
_Time = TimeStamp;
}
+ public UserAccount(string un, string role)
+ {
+ _userName = un;
+ _Role = role;
+ _Time = DateTime.UtcNow;
+ }
public UserAccount(string newUN, string newPWD, string Email, string role, DateTime newTime)
{
_userName = newUN;
diff --git a/Source Code/TeamHobby.HobbyProjectGenerator/TeamHobby.HobbyProjectGenerator.sln b/Source Code/TeamHobby.HobbyProjectGenerator/TeamHobby.HobbyProjectGenerator.sln
index b7c8ff3..60e405e 100644
--- a/Source Code/TeamHobby.HobbyProjectGenerator/TeamHobby.HobbyProjectGenerator.sln
+++ b/Source Code/TeamHobby.HobbyProjectGenerator/TeamHobby.HobbyProjectGenerator.sln
@@ -4,6 +4,10 @@ Microsoft Visual Studio Solution File, Format Version 12.00
VisualStudioVersion = 17.0.31919.166
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.UserManagement.Tests", "..\TeamHobby.UserManagement.Tests\TeamHobby.UserManagement.Tests.csproj", "{5C5A44B4-EC3C-44F2-8F39-F917F8ED932F}"
+ ProjectSection(ProjectDependencies) = postProject
+ {AA48A66C-FA36-4AF9-A782-CEC22838EB8F} = {AA48A66C-FA36-4AF9-A782-CEC22838EB8F}
+ {2E7193B8-86B6-48DA-9671-CD84615A5F5D} = {2E7193B8-86B6-48DA-9671-CD84615A5F5D}
+ EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.Models", "..\TeamHobby.HobbyProjectGenerator.Models\TeamHobby.HobbyProjectGenerator.Models.csproj", "{75DED6C2-D404-4E71-A58B-0F616DB5C062}"
EndProject
@@ -11,109 +15,53 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "main", "..\main\main.csproj
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.Archive", "..\TeamHobby.HobbyProjectGenerator.Archive\TeamHobby.HobbyProjectGenerator.Archive.csproj", "{B88ED0D9-72E2-4245-BD8F-856FF42E500C}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.Main", "..\TeamHobby.Main\TeamHobby.Main.csproj", "{ED126EFB-B337-42F9-BE4B-65A5AE90503B}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.DataAccess", "..\TeamHobby.HobbyProjectGenerator.DataAccess\TeamHobby.HobbyProjectGenerator.DataAccess.csproj", "{AA48A66C-FA36-4AF9-A782-CEC22838EB8F}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.Logging", "..\TeamHobby.HobbyProjectGenerator.Logging\TeamHobby.HobbyProjectGenerator.Logging.csproj", "{C0494115-838E-43A3-8896-133E5D1E874A}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.UserManagement", "..\TeamHobby.HobbyProjectGenerator.UserManagement\TeamHobby.HobbyProjectGenerator.UserManagement.csproj", "{2E7193B8-86B6-48DA-9671-CD84615A5F5D}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.Logging.Tests", "..\TeamHobby.HobbyProjectGenerator.Logging.Tests\TeamHobby.HobbyProjectGenerator.Logging.Tests.csproj", "{CA8D11CF-807C-4C90-A529-0371F73518F6}"
-EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.ArchiveTests", "..\TeamHobby.HobbyProjectGenerator.ArchiveTests\TeamHobby.HobbyProjectGenerator.ArchiveTests.csproj", "{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeamHobby.UserManagement.xTests", "TeamHobby.UserManagement.xTests\TeamHobby.UserManagement.xTests.csproj", "{6D575AF1-C138-44C5-B701-5AEC4ACEAA7A}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.UserManagement.xTests", "TeamHobby.UserManagement.xTests\TeamHobby.UserManagement.xTests.csproj", "{6D575AF1-C138-44C5-B701-5AEC4ACEAA7A}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{D29D9225-3748-4067-AF07-E677A525EF39}"
+ ProjectSection(SolutionItems) = preProject
+ TeamHobby.HobbyProjectGenerator.csproj = TeamHobby.HobbyProjectGenerator.csproj
+ EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
- Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
- Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{5C5A44B4-EC3C-44F2-8F39-F917F8ED932F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {5C5A44B4-EC3C-44F2-8F39-F917F8ED932F}.Debug|x86.ActiveCfg = Debug|Any CPU
{5C5A44B4-EC3C-44F2-8F39-F917F8ED932F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5C5A44B4-EC3C-44F2-8F39-F917F8ED932F}.Release|Any CPU.Build.0 = Release|Any CPU
- {5C5A44B4-EC3C-44F2-8F39-F917F8ED932F}.Release|x86.ActiveCfg = Release|Any CPU
- {5C5A44B4-EC3C-44F2-8F39-F917F8ED932F}.Release|x86.Build.0 = Release|Any CPU
{75DED6C2-D404-4E71-A58B-0F616DB5C062}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {75DED6C2-D404-4E71-A58B-0F616DB5C062}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {75DED6C2-D404-4E71-A58B-0F616DB5C062}.Debug|x86.ActiveCfg = Debug|Any CPU
- {75DED6C2-D404-4E71-A58B-0F616DB5C062}.Debug|x86.Build.0 = Debug|Any CPU
{75DED6C2-D404-4E71-A58B-0F616DB5C062}.Release|Any CPU.ActiveCfg = Release|Any CPU
{75DED6C2-D404-4E71-A58B-0F616DB5C062}.Release|Any CPU.Build.0 = Release|Any CPU
- {75DED6C2-D404-4E71-A58B-0F616DB5C062}.Release|x86.ActiveCfg = Release|Any CPU
- {75DED6C2-D404-4E71-A58B-0F616DB5C062}.Release|x86.Build.0 = Release|Any CPU
{30C7EBF3-3957-46E5-86C1-C13356841ECA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{30C7EBF3-3957-46E5-86C1-C13356841ECA}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {30C7EBF3-3957-46E5-86C1-C13356841ECA}.Debug|x86.ActiveCfg = Debug|Any CPU
- {30C7EBF3-3957-46E5-86C1-C13356841ECA}.Debug|x86.Build.0 = Debug|Any CPU
{30C7EBF3-3957-46E5-86C1-C13356841ECA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{30C7EBF3-3957-46E5-86C1-C13356841ECA}.Release|Any CPU.Build.0 = Release|Any CPU
- {30C7EBF3-3957-46E5-86C1-C13356841ECA}.Release|x86.ActiveCfg = Release|Any CPU
- {30C7EBF3-3957-46E5-86C1-C13356841ECA}.Release|x86.Build.0 = Release|Any CPU
{B88ED0D9-72E2-4245-BD8F-856FF42E500C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {B88ED0D9-72E2-4245-BD8F-856FF42E500C}.Debug|x86.ActiveCfg = Debug|Any CPU
- {B88ED0D9-72E2-4245-BD8F-856FF42E500C}.Debug|x86.Build.0 = Debug|Any CPU
{B88ED0D9-72E2-4245-BD8F-856FF42E500C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B88ED0D9-72E2-4245-BD8F-856FF42E500C}.Release|Any CPU.Build.0 = Release|Any CPU
- {B88ED0D9-72E2-4245-BD8F-856FF42E500C}.Release|x86.ActiveCfg = Release|Any CPU
- {B88ED0D9-72E2-4245-BD8F-856FF42E500C}.Release|x86.Build.0 = Release|Any CPU
- {ED126EFB-B337-42F9-BE4B-65A5AE90503B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {ED126EFB-B337-42F9-BE4B-65A5AE90503B}.Debug|x86.ActiveCfg = Debug|Any CPU
- {ED126EFB-B337-42F9-BE4B-65A5AE90503B}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {ED126EFB-B337-42F9-BE4B-65A5AE90503B}.Release|Any CPU.Build.0 = Release|Any CPU
- {ED126EFB-B337-42F9-BE4B-65A5AE90503B}.Release|x86.ActiveCfg = Release|Any CPU
- {ED126EFB-B337-42F9-BE4B-65A5AE90503B}.Release|x86.Build.0 = Release|Any CPU
{AA48A66C-FA36-4AF9-A782-CEC22838EB8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AA48A66C-FA36-4AF9-A782-CEC22838EB8F}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {AA48A66C-FA36-4AF9-A782-CEC22838EB8F}.Debug|x86.ActiveCfg = Debug|x86
- {AA48A66C-FA36-4AF9-A782-CEC22838EB8F}.Debug|x86.Build.0 = Debug|x86
{AA48A66C-FA36-4AF9-A782-CEC22838EB8F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AA48A66C-FA36-4AF9-A782-CEC22838EB8F}.Release|Any CPU.Build.0 = Release|Any CPU
- {AA48A66C-FA36-4AF9-A782-CEC22838EB8F}.Release|x86.ActiveCfg = Release|Any CPU
- {AA48A66C-FA36-4AF9-A782-CEC22838EB8F}.Release|x86.Build.0 = Release|Any CPU
- {C0494115-838E-43A3-8896-133E5D1E874A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C0494115-838E-43A3-8896-133E5D1E874A}.Debug|x86.ActiveCfg = Debug|Any CPU
- {C0494115-838E-43A3-8896-133E5D1E874A}.Debug|x86.Build.0 = Debug|Any CPU
- {C0494115-838E-43A3-8896-133E5D1E874A}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {C0494115-838E-43A3-8896-133E5D1E874A}.Release|Any CPU.Build.0 = Release|Any CPU
- {C0494115-838E-43A3-8896-133E5D1E874A}.Release|x86.ActiveCfg = Release|Any CPU
- {C0494115-838E-43A3-8896-133E5D1E874A}.Release|x86.Build.0 = Release|Any CPU
{2E7193B8-86B6-48DA-9671-CD84615A5F5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2E7193B8-86B6-48DA-9671-CD84615A5F5D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {2E7193B8-86B6-48DA-9671-CD84615A5F5D}.Debug|x86.ActiveCfg = Debug|Any CPU
- {2E7193B8-86B6-48DA-9671-CD84615A5F5D}.Debug|x86.Build.0 = Debug|Any CPU
{2E7193B8-86B6-48DA-9671-CD84615A5F5D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2E7193B8-86B6-48DA-9671-CD84615A5F5D}.Release|Any CPU.Build.0 = Release|Any CPU
- {2E7193B8-86B6-48DA-9671-CD84615A5F5D}.Release|x86.ActiveCfg = Release|Any CPU
- {2E7193B8-86B6-48DA-9671-CD84615A5F5D}.Release|x86.Build.0 = Release|Any CPU
- {CA8D11CF-807C-4C90-A529-0371F73518F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {CA8D11CF-807C-4C90-A529-0371F73518F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {CA8D11CF-807C-4C90-A529-0371F73518F6}.Debug|x86.ActiveCfg = Debug|x86
- {CA8D11CF-807C-4C90-A529-0371F73518F6}.Debug|x86.Build.0 = Debug|x86
- {CA8D11CF-807C-4C90-A529-0371F73518F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {CA8D11CF-807C-4C90-A529-0371F73518F6}.Release|Any CPU.Build.0 = Release|Any CPU
- {CA8D11CF-807C-4C90-A529-0371F73518F6}.Release|x86.ActiveCfg = Release|Any CPU
- {CA8D11CF-807C-4C90-A529-0371F73518F6}.Release|x86.Build.0 = Release|Any CPU
{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Debug|x86.ActiveCfg = Debug|Any CPU
- {C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Debug|x86.Build.0 = Debug|Any CPU
{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Release|Any CPU.Build.0 = Release|Any CPU
- {C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Release|x86.ActiveCfg = Release|Any CPU
- {C5EBD1F8-C806-4BF9-B2D7-8876072630FD}.Release|x86.Build.0 = Release|Any CPU
{6D575AF1-C138-44C5-B701-5AEC4ACEAA7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6D575AF1-C138-44C5-B701-5AEC4ACEAA7A}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {6D575AF1-C138-44C5-B701-5AEC4ACEAA7A}.Debug|x86.ActiveCfg = Debug|Any CPU
- {6D575AF1-C138-44C5-B701-5AEC4ACEAA7A}.Debug|x86.Build.0 = Debug|Any CPU
{6D575AF1-C138-44C5-B701-5AEC4ACEAA7A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6D575AF1-C138-44C5-B701-5AEC4ACEAA7A}.Release|Any CPU.Build.0 = Release|Any CPU
- {6D575AF1-C138-44C5-B701-5AEC4ACEAA7A}.Release|x86.ActiveCfg = Release|Any CPU
- {6D575AF1-C138-44C5-B701-5AEC4ACEAA7A}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/Source Code/main/Controller.cs b/Source Code/main/Controller.cs
index 47ae7e5..d4dcfd0 100644
--- a/Source Code/main/Controller.cs
+++ b/Source Code/main/Controller.cs
@@ -5,24 +5,10 @@ using TeamHobby.HobbyProjectGenerator.DataAccess;
using TeamHobby.HobbyProjectGenerator.UserManagement;
namespace TeamHobby.HobbyProjectGenerator.Main
-{
- public class GetCredentials
- {
- public string? GetUserName()
- {
- Console.WriteLine("Please enter a username:");
- string? userName = Console.ReadLine();
- return userName;
- }
- public string? GetPassword()
- {
- Console.WriteLine("Please enter " +
- "a password:");
- string? userPassword = Console.ReadLine();
- return userPassword;
- }
+{
public class Controller
{
+
public static void Main(string[] args)
{
// Console customization
@@ -33,91 +19,85 @@ namespace TeamHobby.HobbyProjectGenerator.Main
// Change terminal height
Console.WindowHeight = 40;
- Console.WriteLine(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss"));
-
// Creating the Factory class
// Logger log = new Logger();
//Logger.PrintTest();
- // Admin login
- GetCredentials credentials = new GetCredentials();
- string? username = credentials.GetUserName();
- string? password = credentials.GetPassword();
+ // Loop login terminal
+ bool mainMenu = true;
-
- //Console.WriteLine(value: $"username is {username}\npassword is {password}");
-
- // Creating the Factory class
- // Creating the Factory class
-
- string dbType = "sql";
- RDSFactory dbFactory = new RDSFactory();
-
- // Testing Data Access Layer
- string dbInfo = "DRIVER={MariaDB ODBC 3.1 Driver};" +
- "TCPIP=1;" +
- "SERVER=localhost;" +
- "DATABASE=hobby;" +
- "UID=root;" +
- "PASSWORD=Teamhobby;" +
- "OPTION=3";
- IDataSource datasource = dbFactory.getDataSource(dbType, dbInfo);
- // Create manager class from UserManagement
- SystemAccountManager manager = new SystemAccountManager();
-
- /* // Admin Sign in
- GetCredentials credentials = new GetCredentials();
- string? username = credentials.GetUserName();
- string? password = credentials.GetPassword();*/
-
- // Get time of login attempt
- DateTime TimeStamp = DateTime.UtcNow;
-
- // Create UserAccount class
- UserAccount user = new UserAccount(username, password, TimeStamp);
-
- Console.Write(manager.CreateUserRecord(user, datasource));
-
- //Console.WriteLine(value: $"Welcome {username}\n");
-
- /* string sqlQuery = "Select * from log;";
- Object result = datasource.ReadData(sqlQuery);
- Console.WriteLine("type of Result: " + result.GetType());
- OdbcDataReader reader = null;
-
- if (result.GetType() == typeof(OdbcDataReader))
+ // Loop Admin login
+ while (mainMenu is true)
{
- reader = (OdbcDataReader)result;
+ // Admin Sign in
+ GetCredentials credentials = new GetCredentials();
+ Console.WriteLine("\nPlease Enter Admin Credentials " +
+ "or enter 0 to exit the machine\n");
+ string? username = credentials.GetUserName();
+ //int menuExit = Convert.ToInt32(username);
+ // Exit Infinite Menu
+ if (username == "0")
+ {
+ break;
+ }
+ string? password = credentials.GetPassword();
+
+ // Get time of login attempt
+ DateTime TimeStamp = DateTime.UtcNow;
+
+
+
+ // String for checking query return type
+ string dbType = "sql";
+ // Creating the Factory class
+ RDSFactory dbFactory = new RDSFactory();
+
+ // Testing Data Access Layer
+ string dbInfo = "DRIVER={MariaDB ODBC 3.1 Driver};" +
+ "TCPIP=1;" +
+ "SERVER=localhost;" +
+ "DATABASE=hobby;" +
+ "UID=root;" +
+ "PASSWORD=Teamhobby;" +
+ "OPTION=3";
+ IDataSource datasource = dbFactory.getDataSource(dbType, dbInfo);
+
+ // While loop to keep this running forever with UserManagement
+ // Testing archive Manager
+ //while (true)
+ //{
+ string currentDate = DateTime.Now.ToString("dd");
+ string currentTime = DateTime.Now.ToString("T");
+ //Console.WriteLine("Current date: {0}, Current Time: {1}", currentDate, currentTime);
+ if (String.Equals(currentDate, "1") && String.Equals(currentTime, "00:00:00 AM"))
+ {
+ ArchiveManager archive = new ArchiveManager(datasource);
+ archive.Controller();
+ }
+ //}
+
+ // Create manager class from UserManagement
+ SystemAccountManager manager = new SystemAccountManager();
+
+ // Create UserAccount class
+ UserAccount user = new UserAccount(username, password, TimeStamp);
+
+ string isLogin = manager.CreateUserRecord(user, datasource);
+
+
+ if (isLogin != "Access Denied: Unauthorized\n")
+ {
+ Console.WriteLine("Returning to login...\n");
+ Console.WriteLine("-------------------------------------\n");
+ }
+ else
+ {
+ Console.WriteLine("******Access Denied: Unauthorized******");
+ }
+
}
- Console.WriteLine("Reading from the database");
- while (reader.Read())
- {
- Console.WriteLine("Date={0} {1} {2} {3} {4} {5}", reader[0], reader[1], reader[2], reader[3], reader[4], reader[5]);
- }
- SqlDAO sqlDS = (SqlDAO)datasource;
- Console.WriteLine("");
-
- // Closing the connection
- sqlDS.getConnection().Close();*/
-
- /* // While loop to keep this running forever with UserManagement
- // Testing archive Manager
- //while (true)
- //{
- string currentDate = DateTime.Now.ToString("dd");
- string currentTime = DateTime.Now.ToString("T");
- Console.WriteLine("Current date: {0}, Current Time: {1}", currentDate, currentTime);
- if (String.Equals(currentDate, "1") && String.Equals(currentTime, "00:00:00 AM"))
- {
- ArchiveManager archive = new ArchiveManager(datasource);
- archive.Controller();
- }
- //}*/
-
-
-
//Creating the folder Archive
//Console.WriteLine("Creating a new folder ...");
//archive.CreateArchiveFolder();
@@ -147,8 +127,6 @@ namespace TeamHobby.HobbyProjectGenerator.Main
//sqlDS.RemoveEntries();
-
-
// 2.Inserting Data into the database:
//string sqlWrite = "INSERT into log(lvname, catname, userop, logmessage) values " +
// "('Info', 'View', 'Testing DAL stuffs', 'new DAL method tested');";
@@ -162,82 +140,9 @@ namespace TeamHobby.HobbyProjectGenerator.Main
//Console.WriteLine("Writing to the database... ");
//datasource.WriteData(sqlRemove);
//Console.WriteLine("Writing completed. ");
-
- /* bool MainMenu = true;
-
- // Set up menu loop
- while (MainMenu == true)
- {
- // Console customization
- // Change the look of the console
- Console.Title = "HobbyProjectGenerator";
- // Change console text color
- Console.ForegroundColor = ConsoleColor.Green;
- // Change terminal height
- Console.WindowHeight = 40;
-
-
- // Create class objects
- UiPrint menu = new UiPrint();
-
-
- // Print main menu
- menu.InitialMenu();
-
- // Set up try-catch for invalid inputs
- try
- {
- // Get user choice
- string initialChoice = Console.ReadLine();
- // Convert to integer
- int Choice = Convert.ToInt32(initialChoice);
-
- switch (Choice)
- {
- case 0:
- MainMenu = false;
- break;
- // Create a new account
- case 1:
- user.newUser();
- break;
- // Access Admin features
- case 2:
- // Ask for Admin login credentials
- Console.WriteLine("Please enter a username:");
- string AdminUser = Console.ReadLine();
- Console.WriteLine("Please enter the password for" + AdminUser);
- string AdminPsswrd = Console.ReadLine();
-
- // Check if the username and password match a record within the administrators
-
-
- // Show new administrator menu
- int AdminNum = 0;
- Console.WriteLine("Welcome" + AdminUser);
- Console.WriteLine("What would you like to do?");
- Console.WriteLine("1.View normal user records.");
- Console.WriteLine("2.View Administrator user records.");
- Console.WriteLine("3.View log files.");
- Console.WriteLine("");
- Console.WriteLine("");
- Console.WriteLine("");
- Console.WriteLine("");
- Console.WriteLine("");
-
-
- break;
- default:
- Console.WriteLine("Invalid choice, please enter a valid number.");
- break;
- };
- }
- // Catch invalid keys such as spamming enter
- catch
- {
- MainMenu = false;
- };*/
- }
}
}
}
+
+
+
diff --git a/Source Code/main/MainMenu.cs b/Source Code/main/MainMenu.cs
deleted file mode 100644
index 64a8930..0000000
--- a/Source Code/main/MainMenu.cs
+++ /dev/null
@@ -1,134 +0,0 @@
-using System;
-
-namespace TeamHobby.HobbyProjectGenerator.Main
-{
- public class MainMenu
- {
- /*static void Main(string[] args)
- {
- /* ExampleDAO z = new ExampleDAO();
- z.UserData("Tomato");
- Console.Read();*/
- /*bool menu = true;
-
- // Set up menu loop
- while (menu == true)
- {
- // Console customization
- // Change the look of the console
- Console.Title = "HobbyProjectGenerator";
- // Change console text color
- Console.ForegroundColor = ConsoleColor.Green;
- // Change terminal height
- Console.WindowHeight = 40;
-
-
- // Create intial menu
- Console.WriteLine("What would you like to do?");
- int num = 1;
- Console.WriteLine(num + ".Create a new user account.");
- num += 1;
- Console.WriteLine(num + ".Acess Admin Features.");
-
- // Set up try-catch for invalid inputs
- try
- {
- // Get user choice
- string initialChoice = Console.ReadLine();
- // Convert to integer
- int Choice = Convert.ToInt32(initialChoice);
-
- switch (Choice)
- {
- // Create a new account
- case 1:
- // Get username
- Console.WriteLine("Please enter a username:");
- string userName = Console.ReadLine();
-
- // Get Password
- Console.WriteLine("Please enter a password:");
- string userPassword = Console.ReadLine();
-
- // Create bool value for password confirm loop
- bool conPsswrd = true;
- // Loop until password is confirmed
- while (conPsswrd == true)
- {
- // Confirm Password
- Console.WriteLine("Please re-enter the password:");
- string checkPsswd = Console.ReadLine();
- // Check if passwords match
- if (userPassword == checkPsswd)
- {
- // Get Security question for password reset
- Console.WriteLine("Please enter a security question.\n" +
- "(EX: What is your favorite food?");
- string SecQuest = Console.ReadLine();
- // Get Security question answer
- Console.WriteLine("Please enter the answer for your security question:");
- String SecAnswer = Console.ReadLine();
-
- // Call user manager method to create the new user
- //int userCreateConfirm = new CreateUser(userName,userPassword,SecQuest,SecAnswer);
-
- // Check if user creation was successful
- /* if (userCreateConfirm = 1)
- {
-
- // Confirm to user that the account has been created
- Console.WriteLine("Account created succesfully with the username of" + userName);
- }
- else
- {
-
- }*/
- /* conPsswrd = false;
- }
- else
- {
- Console.WriteLine("Passwords did not match, please try again.");
- }
- }
- break;
- // Access Admin features
- case 2:
- // Ask for Admin login credentials
- Console.WriteLine("Please enter a username:");
- string AdminUser = Console.ReadLine();
- Console.WriteLine("Please enter the password for" + AdminUser);
- string AdminPsswrd = Console.ReadLine();
-
- // Check if the username and password match a record within the administrators
-
-
- // Show new administrator menu
- int AdminNum = 0;
- Console.WriteLine("Welcome" + AdminUser);
- Console.WriteLine("What would you like to do?");
- Console.WriteLine("1.View normal user records.");
- Console.WriteLine("2.View Administrator user records.");
- Console.WriteLine("3.");
- Console.WriteLine("");
- Console.WriteLine("");
- Console.WriteLine("");
- Console.WriteLine("");
- Console.WriteLine("");
-
-
- break;
- default:
- menu = false;
- break;
- };
- }
- // Catch invalid keys such as spamming enter
- catch
- {
- menu = false;
- };
- }*/
-
- //}
- }
-}
diff --git a/Source Code/main/SqlDAO.cs b/Source Code/main/SqlDAO.cs
deleted file mode 100644
index 8e331a7..0000000
--- a/Source Code/main/SqlDAO.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-using Microsoft.Data.SqlClient;
-using TeamHobby.HobbyProjectGenerator.Models;
-
-namespace TeamHobby.HobbyProjectGenerator.DAL
-{
- public class SqlDAO
- {
- public IList GetUserData(string username)
- {
- // Sql server connection string, needs to be changed accordingly to connect
- var connString = "server=localhost;userid=root;password=Plop20;database=users"; // Using @" " makes the string literal
-
- // ADO.NET - ODBC
- using (var conn = new SqlConnection(connString))
- {
- // More complex sql commands are done in this method instead
- var sql = "Select * from roles";
- using (var command = new SqlCommand(sql, conn))
- {
- // Get the results from the query
- SqlDataReader r = command.ExecuteReader();
-
- // If you wanted to get a singular value back such as a count of a certain item
- //command.ExecuteScalar();
-
- // To execute something that doesn't expect results to come back
- // Use this method instead, IE. Update command
- //command.ExecuteNonQuery();
-
- // Read data from query
- while (r.Read())
- {
- Console.WriteLine(r.ToString());
- }
- return null;
- }
-
- /*// this is meant for specific basic sql commands
- using (var adapter = new SqlDataAdapter())
- {
- adapter.UpdateCommand
- adapter.DeleteCommand
- adapter.InsertCommand
- adapter.SelectCommand
- }*/
-
- }
- }
- }
-}
diff --git a/Source Code/main/main.csproj b/Source Code/main/main.csproj
index 18aba0a..6236e85 100644
--- a/Source Code/main/main.csproj
+++ b/Source Code/main/main.csproj
@@ -5,7 +5,8 @@
net6.0
enable
enable
- x86
+ AnyCPU
+ AnyCPU
@@ -15,8 +16,6 @@
-
-
diff --git a/src/dbCode/UserManagementDDL.txt b/src/dbCode/UserManagementDDL.txt
index 25da27a..d8775ac 100644
--- a/src/dbCode/UserManagementDDL.txt
+++ b/src/dbCode/UserManagementDDL.txt
@@ -1,6 +1,5 @@
create table roles
(
- RoleID int not null,
Role varchar(50) charset utf8mb3 not null,
CreatedBy varchar(200) charset utf8mb3 not null,
CreatedDate datetime not null,
@@ -35,4 +34,4 @@ INSERT INTO hobby.users (UserName, Password, Role, IsActive, CreatedBy, CreatedD
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES
('Admin', 'Jacob', '2021-12-13 03:25:14'),
-('regular', 'Colin', '2021-12-13 03:25:14');
+('regular', 'Jacob', '2021-12-13 03:25:14');
diff --git a/src/dbCode/fullDDL.txt b/src/dbCode/fullDDL.txt
index f77d833..ffcc31a 100644
--- a/src/dbCode/fullDDL.txt
+++ b/src/dbCode/fullDDL.txt
@@ -2,52 +2,44 @@ create database Hobby;
use hobby;
+create table roles
+(
+ Role varchar(50) charset utf8mb3 not null,
+ CreatedBy varchar(200) charset utf8mb3 not null,
+ CreatedDate datetime not null,
+ constraint role_pk
+ primary key (Role)
+);
+
create table users
(
UserName varchar(50) charset utf8mb3 not null
primary key,
- Password varchar(50) charset utf8mb3 null,
- RoleID int auto_increment,
- IsActive int default 1 null,
- CreatedBy varchar(50) charset utf8mb3 null,
- CreatedDate datetime null,
- constraint users_UserName_uindex
- unique (UserName),
- constraint users_roles_RoleID_fk
- foreign key (RoleID) references roles (RoleID)
+ Password varchar(50) charset utf8mb3 not null,
+ Role varchar(50) charset utf8mb3 not null,
+ IsActive int default 1 not null,
+ CreatedBy varchar(50) charset utf8mb3 not null,
+ CreatedDate datetime not null,
+ Email varchar(50) null,
+ constraint users_Email_uindex
+ unique (Email),
+ constraint userRole_fk
+ foreign key (Role) references roles (Role)
);
-INSERT INTO hobby.users (UserName, Password, CreatedBy, CreatedDate) VALUES ('Colin ', 'Waffle', 'Jacob', '2021-12-13 04:27:42');
-INSERT INTO hobby.users (UserName, Password, CreatedBy, CreatedDate) VALUES ('Danny', 'Spartan', 'Jacob', '2021-12-13 04:29:54');
-INSERT INTO hobby.users (UserName, Password, CreatedBy, CreatedDate) VALUES ('Jacob', 'Teamhobby1234', 'SystemCreator', '2021-12-13 03:25:14');
-INSERT INTO hobby.users (UserName, Password, CreatedBy, CreatedDate) VALUES ('Long', 'Joystick', 'Jacob', '2021-12-13 04:29:57');
-INSERT INTO hobby.users (UserName, Password, CreatedBy, CreatedDate) VALUES ('Rifat', 'ApproveDar', 'Jacob', '2021-12-13 04:29:55');
+
+INSERT INTO hobby.users (UserName, Password, Role, IsActive, CreatedBy, CreatedDate, Email) VALUES
+('Colin ', 'Waffle', 'Admin', 1, 'Jacob', '2021-12-13 04:27:42', null),
+('Danny', 'Spartan', 'Admin', 1, 'Jacob', '2021-12-13 04:29:54', null),
+('Jacob', 'Teamhobby1234', 'Admin', 1, 'SystemCreator', '2021-12-13 03:25:14', null),
+('Long', 'Joystick', 'regular', 1, 'Jacob', '2021-12-13 04:29:57', null),
+('Rifat', '1234', 'Admin', 1, 'Jacob', '2021-12-13 04:29:55', null);
-create table roles
-(
- RoleID int auto_increment
- primary key,
- Role varchar(50) charset utf8mb3 null,
- CreatedBy varchar(200) charset utf8mb3 null,
- CreatedDate datetime null
-);
+INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES
+('Admin', 'Jacob', '2021-12-13 03:25:14'),
+('regular', 'Jacob', '2021-12-13 03:25:14');
-INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('Admin', 'SystemCreator', '2021-12-13 03:25:14');
-INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Colin', '2021-12-13 03:25:14');
-INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Colin', '2021-12-13 03:25:14');
-INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Jacob', '2021-12-13 03:37:44');
-INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Jacob', '2021-12-13 03:37:46');
-INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Jacob', '2021-12-13 03:37:47');
-INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Jacob', '2021-12-13 03:37:47');
-INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Jacob', '2021-12-13 03:37:49');
-INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Jacob', '2021-12-13 03:37:50');
-INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Jacob', '2021-12-13 03:37:51');
-
-
-alter table users
- add constraint users_roles_RoleID_fk
- foreign key (RoleID) references roles (RoleID);
SET Global innodb_file_per_table=ON;
-- SET GLOBAL innodb_file_format='Barracuda';