Merge branch 'master' into Colins-Branch
This commit is contained in:
commit
34dac0e3b9
26
Source Code/.vscode/launch.json
vendored
Normal file
26
Source Code/.vscode/launch.json
vendored
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
// Use IntelliSense to find out which attributes exist for C# debugging
|
||||||
|
// Use hover for the description of the existing attributes
|
||||||
|
// For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md
|
||||||
|
"name": ".NET Core Launch (console)",
|
||||||
|
"type": "coreclr",
|
||||||
|
"request": "launch",
|
||||||
|
"preLaunchTask": "build",
|
||||||
|
// If you have changed target frameworks, make sure to update the program path.
|
||||||
|
"program": "${workspaceFolder}/main/bin/Debug/net6.0/main.dll",
|
||||||
|
"args": [],
|
||||||
|
"cwd": "${workspaceFolder}/main",
|
||||||
|
// For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
|
||||||
|
"console": "internalConsole",
|
||||||
|
"stopAtEntry": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": ".NET Core Attach",
|
||||||
|
"type": "coreclr",
|
||||||
|
"request": "attach"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
42
Source Code/.vscode/tasks.json
vendored
Normal file
42
Source Code/.vscode/tasks.json
vendored
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
{
|
||||||
|
"version": "2.0.0",
|
||||||
|
"tasks": [
|
||||||
|
{
|
||||||
|
"label": "build",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"build",
|
||||||
|
"${workspaceFolder}/main/main.csproj",
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/consoleloggerparameters:NoSummary"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "publish",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"publish",
|
||||||
|
"${workspaceFolder}/main/main.csproj",
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/consoleloggerparameters:NoSummary"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"label": "watch",
|
||||||
|
"command": "dotnet",
|
||||||
|
"type": "process",
|
||||||
|
"args": [
|
||||||
|
"watch",
|
||||||
|
"run",
|
||||||
|
"${workspaceFolder}/main/main.csproj",
|
||||||
|
"/property:GenerateFullPaths=true",
|
||||||
|
"/consoleloggerparameters:NoSummary"
|
||||||
|
],
|
||||||
|
"problemMatcher": "$msCompile"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@ -12,6 +12,10 @@ namespace TeamHobby.HobbyProjectGenerator.Archive
|
|||||||
_conn = dataSource;
|
_conn = dataSource;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//public IDataSource<string> GetConnection()
|
||||||
|
//{
|
||||||
|
// return _conn;
|
||||||
|
//}
|
||||||
|
|
||||||
// Create the folder where the compress file will be stored
|
// Create the folder where the compress file will be stored
|
||||||
public bool CreateArchiveFolder(){
|
public bool CreateArchiveFolder(){
|
||||||
@ -22,18 +26,25 @@ namespace TeamHobby.HobbyProjectGenerator.Archive
|
|||||||
// Find the root drive of the program
|
// Find the root drive of the program
|
||||||
string drive = Path.GetPathRoot(path: curPath);
|
string drive = Path.GetPathRoot(path: curPath);
|
||||||
// Check if Drive exists or not
|
// Check if Drive exists or not
|
||||||
if (!Directory.Exists(drive))
|
try {
|
||||||
{
|
if (!Directory.Exists(drive))
|
||||||
Console.WriteLine("Drive {0} not found", drive);
|
{
|
||||||
return false;
|
Console.WriteLine("Drive {0} not found", drive);
|
||||||
}
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
string archiveFolder = curPath + folderName;
|
string archiveFolder = curPath + folderName;
|
||||||
//Console.WriteLine("Creating a new folder at: {0}", archiveFolder);
|
//Console.WriteLine("Creating a new folder at: {0}", archiveFolder);
|
||||||
if (!Directory.Exists(archiveFolder))
|
if (!Directory.Exists(archiveFolder))
|
||||||
{
|
{
|
||||||
Console.WriteLine("Creating a new folder at: {0}", archiveFolder);
|
Console.WriteLine("Creating a new folder at: {0}", archiveFolder);
|
||||||
Directory.CreateDirectory(archiveFolder);
|
Directory.CreateDirectory(archiveFolder);
|
||||||
|
//return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex){
|
||||||
|
// If the creating a folder failed, return false
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -91,7 +102,11 @@ namespace TeamHobby.HobbyProjectGenerator.Archive
|
|||||||
if (_conn.GetType() == typeof(SqlDAO))
|
if (_conn.GetType() == typeof(SqlDAO))
|
||||||
{
|
{
|
||||||
sqlDS = (SqlDAO)_conn;
|
sqlDS = (SqlDAO)_conn;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check to make sure that Sql Data source connection is not null
|
||||||
|
if (sqlDS == null){
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
// TODO: Remember to add try catch block here to make sure it is completed.
|
// TODO: Remember to add try catch block here to make sure it is completed.
|
||||||
|
|
||||||
@ -103,11 +118,11 @@ namespace TeamHobby.HobbyProjectGenerator.Archive
|
|||||||
Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
|
|
||||||
// Creating a file name:
|
// Creating a file name:
|
||||||
string filePath = @"C:\HobbyArchive";
|
//string filePath = @"C:\HobbyArchive";
|
||||||
//Console.WriteLine("Creating file name ... ");
|
//Console.WriteLine("Creating file name ... ");
|
||||||
//string curPath = archive.CreateOutFileName();
|
//string curPath = archive.CreateOutFileName();
|
||||||
Console.WriteLine("Creating Output file name ...");
|
Console.WriteLine("Creating Output file name ...");
|
||||||
string curPath = CreateOutFileName();
|
string outPath = CreateOutFileName();
|
||||||
Console.WriteLine("Output file name created ...");
|
Console.WriteLine("Output file name created ...");
|
||||||
Console.WriteLine("----------------");
|
Console.WriteLine("----------------");
|
||||||
Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
@ -116,46 +131,63 @@ namespace TeamHobby.HobbyProjectGenerator.Archive
|
|||||||
//string pathTemp = "C:/Temp/oldlogs10.txt";
|
//string pathTemp = "C:/Temp/oldlogs10.txt";
|
||||||
//string pathTempBack = @"C:\Temp\oldlogs10.txt";
|
//string pathTempBack = @"C:\Temp\oldlogs10.txt";
|
||||||
|
|
||||||
//Output SQL to a text file
|
// Try catch block to delete abort the compressing process
|
||||||
Console.WriteLine("Copying to a text file ...");
|
try{
|
||||||
sqlDS.CopyToFile(curPath);
|
//Output SQL to a text file
|
||||||
Console.WriteLine("Copying completed ...");
|
Console.WriteLine("Copying to a text file ...");
|
||||||
Console.WriteLine("----------------");
|
sqlDS.CopyToFile(outPath);
|
||||||
Console.WriteLine("");
|
Console.WriteLine("Copying completed ...");
|
||||||
|
Console.WriteLine("----------------");
|
||||||
|
Console.WriteLine("");
|
||||||
|
|
||||||
// Compress the file
|
// Compress the file
|
||||||
Console.WriteLine("Copressing the text file ...");
|
Console.WriteLine("Copressing the text file ...");
|
||||||
sqlDS.CompressFile(curPath);
|
sqlDS.CompressFile(outPath);
|
||||||
Console.WriteLine("Copression completed ...");
|
Console.WriteLine("Copression completed ...");
|
||||||
Console.WriteLine("----------------");
|
Console.WriteLine("----------------");
|
||||||
Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
|
|
||||||
//Remove output file
|
//Remove output file
|
||||||
Console.WriteLine("Removing the text file ...");
|
Console.WriteLine("Removing the text file ...");
|
||||||
sqlDS.RemoveOutputFile(curPath);
|
sqlDS.RemoveOutputFile(outPath);
|
||||||
Console.WriteLine("Text File removal completed ...");
|
Console.WriteLine("Text File removal completed ...");
|
||||||
Console.WriteLine("----------------");
|
Console.WriteLine("----------------");
|
||||||
Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
|
|
||||||
// Remove entries fromt the database
|
// Remove entries fromt the database
|
||||||
Console.WriteLine("Removing the text file ...");
|
Console.WriteLine("Removing the text file ...");
|
||||||
sqlDS.RemoveEntries();
|
sqlDS.RemoveEntries();
|
||||||
Console.WriteLine("Entries removal completed ...");
|
Console.WriteLine("Entries removal completed ...");
|
||||||
Console.WriteLine("----------------");
|
Console.WriteLine("----------------");
|
||||||
Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
|
|
||||||
|
// Return true if compressing sequence is successful
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (Exception e){
|
||||||
|
// Abort the compressing sequence and clean up uneccesary files.
|
||||||
|
Console.WriteLine("Archiving Sequenced failed. Cleaning up resources.");
|
||||||
|
|
||||||
|
// Delete the text output file if any of the process failed
|
||||||
|
if (File.Exists(outPath)){
|
||||||
|
File.Delete(outPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete the compressed file if Removing entries and removing text file output failed
|
||||||
|
string compFile = outPath + ".gz";
|
||||||
|
if (File.Exists(compFile)){
|
||||||
|
File.Delete(compFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// Testing date time patters
|
// Testing date time patters
|
||||||
//string date = DateTime.Now.ToString("d");
|
//string date = DateTime.Now.ToString("d");
|
||||||
//Console.WriteLine(date);
|
//Console.WriteLine(date);
|
||||||
//Console.WriteLine(DateTime.Now.ToString("M_d_yyyy_H:mm:ss"));
|
//Console.WriteLine(DateTime.Now.ToString("M_d_yyyy_H:mm:ss"));
|
||||||
|
|
||||||
return true;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -0,0 +1,123 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using TeamHobby.HobbyProjectGenerator.Archive;
|
||||||
|
using TeamHobby.HobbyProjectGenerator.DataAccess;
|
||||||
|
|
||||||
|
namespace TeamHobby.HobbyProjectGenerator.ArchiveTests
|
||||||
|
{
|
||||||
|
public class ArchivingTests
|
||||||
|
{
|
||||||
|
//private string dbInfo = "DRIVER={MariaDB ODBC 3.1 Driver};" +
|
||||||
|
// "SERVER=localhost;" +
|
||||||
|
// "DATABASE=hobby;" +
|
||||||
|
// "UID=root;" +
|
||||||
|
// "PASSWORD=Teamhobby;" +
|
||||||
|
// "OPTION=3";
|
||||||
|
|
||||||
|
|
||||||
|
// [TestMethod]
|
||||||
|
public void IsArchiveFolderCreated(IDataSource<string> sqlDAO)
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
//SqlDAO sqlDAO = new SqlDAO(dbInfo);
|
||||||
|
ArchiveManager archiveManager = new ArchiveManager(sqlDAO);
|
||||||
|
string folderPath = @"C:/HobbyArchive";
|
||||||
|
bool expectedVal = true;
|
||||||
|
|
||||||
|
// Act
|
||||||
|
archiveManager.CreateArchiveFolder();
|
||||||
|
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
bool actualVal = Directory.Exists(folderPath);
|
||||||
|
if (expectedVal == actualVal)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Expected: {0}, Actual: {1}. Folder created correctly", expectedVal, actualVal);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Directory.Delete(folderPath, true);
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Console.WriteLine("Folder failed to be deleted");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Console.WriteLine("Expected: {0}, Actual: {1}. Folder created incorrectly", expectedVal, actualVal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// [TestMethod]
|
||||||
|
public void IsFileNameCreated(IDataSource<string> sqlDAO)
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
string foldPath = @"C:\HobbyArchive";
|
||||||
|
string fileName = DateTime.Now.ToString("M_d_yyyy") + "_archive.csv";
|
||||||
|
string expectedFilePath = System.IO.Path.Combine(foldPath, fileName);
|
||||||
|
ArchiveManager archiveManager = new ArchiveManager(sqlDAO);
|
||||||
|
|
||||||
|
// Act
|
||||||
|
string actualFilePath = archiveManager.CreateOutFileName();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
bool result = String.Equals(actualFilePath, expectedFilePath);
|
||||||
|
if (result)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Expected: {0}, Actual: {1}. File name created correctly", expectedFilePath, actualFilePath);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Console.WriteLine("Expected: {0}, Actual: {1}. File name created incorrectly", expectedFilePath, actualFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CopyingToAFileTest(IDataSource<string> sqlDAO)
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
ArchiveManager archiveManager = new ArchiveManager(sqlDAO);
|
||||||
|
SqlDAO sqlDS = null;
|
||||||
|
|
||||||
|
if (sqlDAO.GetType() == typeof(SqlDAO))
|
||||||
|
{
|
||||||
|
sqlDS = (SqlDAO)sqlDAO;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Act
|
||||||
|
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void Main(string[] args)
|
||||||
|
{
|
||||||
|
string dbInfo = "DRIVER={MariaDB ODBC 3.1 Driver};" +
|
||||||
|
"SERVER=localhost;" +
|
||||||
|
"DATABASE=hobby;" +
|
||||||
|
"UID=root;" +
|
||||||
|
"PASSWORD=Teamhobby;" +
|
||||||
|
"OPTION=3";
|
||||||
|
SqlDAO sqlDAO = new SqlDAO(dbInfo);
|
||||||
|
//ArchiveManager archiveManager = new ArchiveManager(sqlDAO);
|
||||||
|
|
||||||
|
// Testing folder creation
|
||||||
|
ArchivingTests test = new ArchivingTests();
|
||||||
|
test.IsArchiveFolderCreated(sqlDAO);
|
||||||
|
Console.WriteLine("-----------------");
|
||||||
|
Console.WriteLine("");
|
||||||
|
|
||||||
|
// Testing file creation
|
||||||
|
test.IsFileNameCreated(sqlDAO);
|
||||||
|
Console.WriteLine("-----------------");
|
||||||
|
Console.WriteLine("");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<TargetFramework>net6.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.Archive\TeamHobby.HobbyProjectGenerator.Archive.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@ -17,9 +17,9 @@ namespace TeamHobby.HobbyProjectGenerator.DataAccess
|
|||||||
public SqlDAO(string info)
|
public SqlDAO(string info)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
Console.WriteLine("Establising Connection");
|
Console.WriteLine("Establising Connection...");
|
||||||
_conn = new OdbcConnection(info);
|
_conn = new OdbcConnection(info);
|
||||||
Console.WriteLine("Connection established");
|
Console.WriteLine("Connection established.");
|
||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
//_conn = null;
|
//_conn = null;
|
||||||
@ -31,7 +31,7 @@ namespace TeamHobby.HobbyProjectGenerator.DataAccess
|
|||||||
// Getter and setter for Odbc
|
// Getter and setter for Odbc
|
||||||
public OdbcConnection Connection { get; set; }
|
public OdbcConnection Connection { get; set; }
|
||||||
|
|
||||||
public OdbcConnection getConnection()
|
public OdbcConnection GetConnection()
|
||||||
{
|
{
|
||||||
return _conn;
|
return _conn;
|
||||||
}
|
}
|
||||||
@ -149,7 +149,6 @@ namespace TeamHobby.HobbyProjectGenerator.DataAccess
|
|||||||
// Get the stream of the original file
|
// Get the stream of the original file
|
||||||
using FileStream origFile = File.Open(fileName, FileMode.Open);
|
using FileStream origFile = File.Open(fileName, FileMode.Open);
|
||||||
|
|
||||||
|
|
||||||
// Get the attribute of the file
|
// Get the attribute of the file
|
||||||
FileAttributes atrribute = File.GetAttributes(fileName);
|
FileAttributes atrribute = File.GetAttributes(fileName);
|
||||||
|
|
||||||
@ -161,15 +160,16 @@ namespace TeamHobby.HobbyProjectGenerator.DataAccess
|
|||||||
using GZipStream compressor = new GZipStream(outputFile, CompressionMode.Compress);
|
using GZipStream compressor = new GZipStream(outputFile, CompressionMode.Compress);
|
||||||
origFile.CopyTo(compressor);
|
origFile.CopyTo(compressor);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
Console.WriteLine("Error when compressing a file !!, will be handled higher up the call stack");
|
||||||
Console.WriteLine(ex.Message);
|
Console.WriteLine(ex.Message);
|
||||||
return false;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -204,10 +204,10 @@ namespace TeamHobby.HobbyProjectGenerator.DataAccess
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
catch
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
_conn.Close();
|
_conn.Close();
|
||||||
Console.WriteLine("Error when copying query to a file !!");
|
Console.WriteLine("Error when copying query to a file !!, will be handled higher up the call stack");
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
@ -229,7 +229,7 @@ namespace TeamHobby.HobbyProjectGenerator.DataAccess
|
|||||||
}
|
}
|
||||||
catch {
|
catch {
|
||||||
Console.WriteLine("Removing file failed!!");
|
Console.WriteLine("Removing file failed!!");
|
||||||
return false;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,39 @@
|
|||||||
|
// Print Statements used throughout the program.
|
||||||
|
|
||||||
|
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("What would you like to do?\n");
|
||||||
|
Console.WriteLine(menu + ") To exit User Management.\n");
|
||||||
|
menu += 1;
|
||||||
|
Console.WriteLine(menu + ") Create a new account.\n");
|
||||||
|
menu += 1;
|
||||||
|
Console.WriteLine(menu + ") Edit an account.\n");
|
||||||
|
menu += 1;
|
||||||
|
Console.WriteLine(menu + ") Delete an account.\n");
|
||||||
|
menu += 1;
|
||||||
|
Console.WriteLine(menu + ") Disable an account.\n");
|
||||||
|
menu += 1;
|
||||||
|
Console.WriteLine(menu + ") Enable an account.\n");
|
||||||
|
menu += 1;
|
||||||
|
Console.WriteLine(menu + ") View logs.\n");
|
||||||
|
menu += 1;
|
||||||
|
Console.WriteLine(menu + ") View archive.\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -3,10 +3,79 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Data.Odbc;
|
||||||
|
using TeamHobby.HobbyProjectGenerator.DataAccess;
|
||||||
|
|
||||||
namespace TeamHobby.HobbyProjectGenerator.UserManagement
|
namespace TeamHobby.HobbyProjectGenerator.UserManagement
|
||||||
{
|
{
|
||||||
internal class AccountService
|
public class AccountService
|
||||||
{
|
{
|
||||||
|
public bool CreateUserRecord(UserAccount newUser, string CreatedBy, IDataSource<string> dbSource)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Insert into users table
|
||||||
|
string sqlUser = $"INSERT INTO users (UserName, Password, Role, IsActive," +
|
||||||
|
$"CreatedBy, CreatedDate, Email) VALUES ('{newUser.username}', " +
|
||||||
|
$"'{newUser.password}','{newUser.role}', 1," +
|
||||||
|
$"'{CreatedBy}', NOW(),'{newUser.email}');";
|
||||||
|
|
||||||
|
bool insertNewUser = dbSource.WriteData(sqlUser);
|
||||||
|
return insertNewUser;
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public bool EditUserRecord(UserAccount newUser, string CreatedBy, IDataSource<string> 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))
|
||||||
|
{
|
||||||
|
reader = (OdbcDataReader)conUser;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read Sql query results
|
||||||
|
while (reader.Read())
|
||||||
|
{
|
||||||
|
Console.WriteLine(reader.GetString(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
SqlDAO sqlDS = (SqlDAO)dbSource;
|
||||||
|
Console.WriteLine("");
|
||||||
|
|
||||||
|
// Closing the connection
|
||||||
|
sqlDS.getConnection().Close();*/
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
public bool DeleteUserRecord(UserAccount newUser, IDataSource<string> dbSource)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
public bool DisableUser(UserAccount newUser, IDataSource<string> dbSource)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
public bool EnableUser(UserAccount newUser, IDataSource<string> dbSource)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,8 +3,9 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using System.Data.Odbc;
|
||||||
using TeamHobby.HobbyProjectGenerator.UserManagement;
|
using TeamHobby.HobbyProjectGenerator.UserManagement;
|
||||||
using TeamHobby.HobbyProjectGenerator.Implementations;
|
using TeamHobby.HobbyProjectGenerator.DataAccess;
|
||||||
|
|
||||||
namespace TeamHobby.HobbyProjectGenerator.UserManagement
|
namespace TeamHobby.HobbyProjectGenerator.UserManagement
|
||||||
{
|
{
|
||||||
@ -13,125 +14,257 @@ namespace TeamHobby.HobbyProjectGenerator.UserManagement
|
|||||||
public string IsInputValid(string checkUN, string checkPWD)
|
public string IsInputValid(string checkUN, string checkPWD)
|
||||||
{
|
{
|
||||||
// Create bool variables to check if username and password are valid
|
// Create bool variables to check if username and password are valid
|
||||||
bool ValidUN = checkUN.All(un => Char.IsLetterOrDigit(un) || un == '@'
|
bool validUN = checkUN.All(un=>Char.IsLetterOrDigit(un) || un=='@'
|
||||||
|| un == '.' || un == ',' || un == '!');
|
|| un == '.' || un == ',' || un == '!');
|
||||||
|
|
||||||
bool ValidPwd = checkPWD.All(Char.IsLetterOrDigit);
|
bool validPwd = checkPWD.All(Char.IsLetterOrDigit);
|
||||||
|
|
||||||
|
|
||||||
|
// Check if any are empty
|
||||||
if (checkUN == null || checkPWD == null)
|
if (checkUN == null || checkPWD == null)
|
||||||
{
|
{
|
||||||
return "Invalid input\n";
|
return "Invalid input\n";
|
||||||
}
|
}
|
||||||
|
// Check if username is within the restricted length
|
||||||
else if (checkUN.Length > 15 || checkUN.Length <= 0
|
else if (checkUN.Length > 15 || checkUN.Length <= 0
|
||||||
|| ValidUN is false)
|
|| validUN is false)
|
||||||
{
|
{
|
||||||
return "Invalid Username\n";
|
return "Invalid Username\n";
|
||||||
}
|
}
|
||||||
|
// Check if password is within the restricted length
|
||||||
else if (checkPWD.Length > 18 || checkPWD.Length <= 0
|
else if (checkPWD.Length > 18 || checkPWD.Length <= 0
|
||||||
|| ValidPwd is false)
|
|| validPwd is false)
|
||||||
{
|
{
|
||||||
return "Invalid Password\n";
|
return "Invalid Password\n";
|
||||||
}
|
}
|
||||||
|
// Check if username and password are valid
|
||||||
else if (checkUN.Length <= 15 && checkUN.Length > 0
|
else if (checkUN.Length <= 15 && checkUN.Length > 0
|
||||||
|| ValidUN is true && checkPWD.Length <= 18
|
&& validUN is true && checkPWD.Length <= 18
|
||||||
&& checkPWD.Length > 0 || ValidPwd is true)
|
&& checkPWD.Length > 0 && validPwd is true)
|
||||||
{
|
{
|
||||||
return "Username and password is valid.\n";
|
return "Username and password is valid.\n";
|
||||||
}
|
}
|
||||||
|
// Check if username and password and email are valid
|
||||||
else if (checkUN.Length <= 15 && checkUN.Length > 0
|
else if (checkUN.Length <= 15 && checkUN.Length > 0
|
||||||
|| ValidUN is true)
|
&& validUN is true && checkPWD.Length <= 18
|
||||||
|
&& checkPWD.Length > 0 && validPwd is true)
|
||||||
|
{
|
||||||
|
return "Username and password is valid.\n";
|
||||||
|
}
|
||||||
|
// For testing to make sure username is valid
|
||||||
|
else if (checkUN.Length <= 15 && checkUN.Length > 0
|
||||||
|
&& validUN is true)
|
||||||
{
|
{
|
||||||
return "Valid Username\n";
|
return "Valid Username\n";
|
||||||
}
|
}
|
||||||
|
// For testing to make sure password is valid
|
||||||
else if (checkPWD.Length <= 18 && checkPWD.Length > 0
|
else if (checkPWD.Length <= 18 && checkPWD.Length > 0
|
||||||
|| ValidPwd is true)
|
&& validPwd is true)
|
||||||
{
|
{
|
||||||
return "Valid Password\n";
|
return "Valid Password\n";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return "Invalid Input\n";
|
return "Invalid input\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public bool isAdmin()
|
public string IsInputValid(string checkUN, string checkPWD, string email, string role)
|
||||||
{
|
{
|
||||||
return false;
|
// Create bool variables to check if username and password and email are valid
|
||||||
}
|
bool validUN = checkUN.All(un => Char.IsLetterOrDigit(un) || un == '@'
|
||||||
public void CreateUserRecord(UserAccount user)
|
|| un == '.' || un == ',' || un == '!');
|
||||||
{
|
|
||||||
Console.Write(IsInputValid(user.username, user.password));
|
|
||||||
|
|
||||||
}
|
bool validPwd = checkPWD.All(Char.IsLetterOrDigit);
|
||||||
|
|
||||||
|
bool validEmail = email.All(email => Char.IsLetterOrDigit(email) && email == '@'
|
||||||
|
&& email == '.');
|
||||||
|
|
||||||
|
bool validRole = role.All(role => Char.IsLetter(role));
|
||||||
|
|
||||||
/*public NewUserName()
|
// Check if any are empty
|
||||||
{
|
if (checkUN == null || checkPWD == null || email == null)
|
||||||
|
|
||||||
}
|
|
||||||
public NewPassword()
|
|
||||||
{
|
|
||||||
// Create bool value for password confirm loop
|
|
||||||
bool conPsswrd = true;
|
|
||||||
// Loop until password is confirmed
|
|
||||||
while (conPsswrd == true)
|
|
||||||
{
|
{
|
||||||
// Confirm Password
|
return "Invalid input\n";
|
||||||
Console.WriteLine("Please re-enter the password:");
|
}
|
||||||
string checkPsswd = Console.ReadLine();
|
// Check if username is within the restricted length
|
||||||
// Check if passwords match
|
else if (checkUN.Length > 15 || checkUN.Length <= 0
|
||||||
if (userPassword == checkPsswd)
|
|| validUN is false)
|
||||||
{
|
{
|
||||||
// Get Security question for password reset
|
return "Invalid Username\n";
|
||||||
Console.WriteLine("Please enter a security question.\n" +
|
}
|
||||||
"(EX: What is your favorite food?");
|
// Check if password is within the restricted length
|
||||||
string SecQuest = Console.ReadLine();
|
else if (checkPWD.Length > 18 || checkPWD.Length <= 0
|
||||||
// Get Security question answer
|
|| validPwd is false)
|
||||||
Console.WriteLine("Please enter the answer for your security question:");
|
{
|
||||||
String SecAnswer = Console.ReadLine();
|
return "Invalid Password\n";
|
||||||
|
}
|
||||||
|
// Check if email is within the restricted length
|
||||||
|
else if (email.Length > 18 || email.Length <= 0
|
||||||
|
|| validEmail is false)
|
||||||
|
{
|
||||||
|
return "Invalid Email.\n";
|
||||||
|
}
|
||||||
|
// Check if username and password are valid
|
||||||
|
else if (checkUN.Length <= 15 && checkUN.Length > 0
|
||||||
|
&& validUN is true && checkPWD.Length <= 18
|
||||||
|
&& checkPWD.Length > 0 && validPwd is true)
|
||||||
|
{
|
||||||
|
return "Username and password is valid.\n";
|
||||||
|
}
|
||||||
|
// Check if username and password and email are valid
|
||||||
|
else if (checkUN.Length <= 15 && checkUN.Length > 0
|
||||||
|
&& validUN is true && checkPWD.Length <= 18
|
||||||
|
&& checkPWD.Length > 0 && validPwd is true
|
||||||
|
&& email.Length > 18 && email.Length <= 0
|
||||||
|
&& validEmail is true)
|
||||||
|
{
|
||||||
|
return "Username and password is valid.\n";
|
||||||
|
}
|
||||||
|
// For testing to make sure username is valid
|
||||||
|
else if (checkUN.Length <= 15 && checkUN.Length > 0
|
||||||
|
&& validUN is true)
|
||||||
|
{
|
||||||
|
return "Valid Username\n";
|
||||||
|
}
|
||||||
|
// For testing to make sure password is valid
|
||||||
|
else if (checkPWD.Length <= 18 && checkPWD.Length > 0
|
||||||
|
&& validPwd is true)
|
||||||
|
{
|
||||||
|
return "Valid Password\n";
|
||||||
|
}
|
||||||
|
// For testing to make sure email is valid
|
||||||
|
else if (email.Length > 18 && email.Length <= 0
|
||||||
|
&& validEmail is true)
|
||||||
|
{
|
||||||
|
return "Valid Password\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return "Invalid input\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Check with database if user is an admin
|
||||||
|
public bool isAdmin(UserAccount user, IDataSource<string> dbSource)
|
||||||
|
{
|
||||||
|
// string checkAdmin = $"Select * from users where username = {user.username} and password = {user.password};";
|
||||||
|
string checkAdmin = $"select r.Role from roles r, users u where " +
|
||||||
|
$"UserName = '{user.username}' and Password = '{user.password}' and r.Role = u.Role;";
|
||||||
|
Object confirmAdmin = dbSource.ReadData(checkAdmin);
|
||||||
|
//Console.WriteLine("type of Reesult:" + confirmAdmin.GetType());
|
||||||
|
OdbcDataReader reader = null;
|
||||||
|
|
||||||
// Call user manager method to create the new user
|
if (confirmAdmin.GetType() == typeof(OdbcDataReader))
|
||||||
//int userCreateConfirm = new CreateUser(userName,userPassword,SecQuest,SecAnswer);
|
{
|
||||||
|
reader = (OdbcDataReader)confirmAdmin;
|
||||||
|
}
|
||||||
|
|
||||||
// Check if user creation was successful
|
// Create String to hold sql output
|
||||||
/*if (userCreateConfirm = 1)
|
string checkSql = "";
|
||||||
|
|
||||||
|
// Read Sql query results
|
||||||
|
while (reader.Read())
|
||||||
|
{
|
||||||
|
checkSql = reader.GetString(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
SqlDAO sqlDS = (SqlDAO)dbSource;
|
||||||
|
Console.WriteLine("");
|
||||||
|
|
||||||
|
// Closing the connection
|
||||||
|
sqlDS.getConnection().Close();
|
||||||
|
|
||||||
|
if (checkSql == "Admin")
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public string CreateUserRecord(UserAccount user, IDataSource<string> dbSource)
|
||||||
|
{
|
||||||
|
// Check Login inputs
|
||||||
|
IsInputValid(user.username, user.password);
|
||||||
|
|
||||||
|
bool Admin = isAdmin(user, dbSource);
|
||||||
|
|
||||||
|
// Give access if the user is and Admin
|
||||||
|
if (Admin is false)
|
||||||
|
{
|
||||||
|
return "Access Denied: Unauthorized\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// db.users layout (UserName, Password, RoleID, IsActive, CreatedBy, CreatedDate)
|
||||||
|
// db.roles layout (RoleID(AutoGen), Role, CreatedBy, CreatedDate)
|
||||||
|
// Create UiPrint Object
|
||||||
|
UiPrint ui = new UiPrint();
|
||||||
|
// Create Account Service object
|
||||||
|
AccountService accountService = new AccountService();
|
||||||
|
// Create credentials object for new inptus
|
||||||
|
GetCredentials newCredentials = new GetCredentials();
|
||||||
|
// Print User Management menu
|
||||||
|
ui.UserManagementMenu(user.username);
|
||||||
|
// Create bool object for menu loop
|
||||||
|
bool menuLoop = true;
|
||||||
|
// Create loop for menu
|
||||||
|
while (menuLoop is true) {
|
||||||
|
// Get user choice
|
||||||
|
int menuChoice = Convert.ToInt32(Console.ReadLine());
|
||||||
|
// Complete the appropriate action
|
||||||
|
switch (menuChoice)
|
||||||
{
|
{
|
||||||
|
// Exit menu
|
||||||
// Confirm to user that the account has been created
|
case 0:
|
||||||
Console.WriteLine("Account created succesfully with the username of" + userName);
|
return "Exiting UserManagement.\n";
|
||||||
|
break;
|
||||||
|
// Create account
|
||||||
|
case 1:
|
||||||
|
UserAccount newUser = new UserAccount(newCredentials.GetUserName(),
|
||||||
|
newCredentials.GetPassword(), newCredentials.GetEmail(),
|
||||||
|
newCredentials.GetRole(), DateTime.UtcNow);
|
||||||
|
accountService.CreateUserRecord(newUser,user.username, dbSource);
|
||||||
|
break;
|
||||||
|
// Edit account
|
||||||
|
case 2:
|
||||||
|
/* UserAccount newEditUser = new UserAccount(newCredentials.GetUserName(),
|
||||||
|
newCredentials.GetPassword(), DateTime.UtcNow);
|
||||||
|
accountService.EditUserRecord(newEditUser, dbSource);*/
|
||||||
|
break;
|
||||||
|
// Delete account
|
||||||
|
case 3:
|
||||||
|
UserAccount newDeleteUser = new UserAccount(newCredentials.GetUserName(),
|
||||||
|
newCredentials.GetPassword(), DateTime.UtcNow);
|
||||||
|
accountService.DeleteUserRecord(newDeleteUser, dbSource);
|
||||||
|
break;
|
||||||
|
// Disable account
|
||||||
|
case 4:
|
||||||
|
UserAccount newDisableUser = new UserAccount(newCredentials.GetUserName(),
|
||||||
|
newCredentials.GetPassword(), DateTime.UtcNow);
|
||||||
|
accountService.DisableUser(newDisableUser, dbSource);
|
||||||
|
break;
|
||||||
|
// Enable account
|
||||||
|
case 5:
|
||||||
|
UserAccount newEnableUser = new UserAccount(newCredentials.GetUserName(),
|
||||||
|
newCredentials.GetPassword(), DateTime.UtcNow);
|
||||||
|
accountService.EnableUser(newEnableUser, dbSource);
|
||||||
|
break;
|
||||||
|
// View logs
|
||||||
|
case 6:
|
||||||
|
break;
|
||||||
|
// View archive
|
||||||
|
case 7:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Console.WriteLine("Invalid input.\nPlease enter a valid option.\n");
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
{
|
|
||||||
|
string dbAction = user.username;
|
||||||
}*/
|
return dbAction;
|
||||||
/*conPsswrd = false;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Console.WriteLine("Passwords did not match, please try again.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
public void AccountController()
|
|
||||||
{
|
|
||||||
// Create objects
|
|
||||||
//UserAccount user = new UserAccount();
|
|
||||||
UiPrint ui = new UiPrint();
|
|
||||||
|
|
||||||
bool foo = true;
|
|
||||||
|
|
||||||
while (foo == true)
|
|
||||||
{
|
|
||||||
// sub menu
|
|
||||||
ui.SystemAccountMenu();
|
|
||||||
//
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,7 +7,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator\TeamHobby.HobbyProjectGenerator.csproj" />
|
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.DataAccess\TeamHobby.HobbyProjectGenerator.DataAccess.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@ -6,37 +6,70 @@ using System.Threading.Tasks;
|
|||||||
|
|
||||||
namespace TeamHobby.HobbyProjectGenerator.UserManagement
|
namespace TeamHobby.HobbyProjectGenerator.UserManagement
|
||||||
{
|
{
|
||||||
|
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 string ConfirmPassword()
|
||||||
|
{
|
||||||
|
Console.WriteLine();
|
||||||
|
string confirmPassword = newUser.NewPassword;
|
||||||
|
}*/
|
||||||
|
public string GetEmail()
|
||||||
|
{
|
||||||
|
Console.WriteLine("Please enter an email:");
|
||||||
|
return Console.ReadLine();
|
||||||
|
}
|
||||||
|
public string GetRole()
|
||||||
|
{
|
||||||
|
Console.WriteLine("Please enter the role of the user:");
|
||||||
|
return Console.ReadLine();
|
||||||
|
}
|
||||||
|
}
|
||||||
public class UserAccount
|
public class UserAccount
|
||||||
{
|
{
|
||||||
// Admin Credentials
|
// Admin Credentials
|
||||||
private string UserName;
|
private string _userName;
|
||||||
private string Password;
|
private string _password;
|
||||||
private DateTime Time;
|
private DateTime _Time;
|
||||||
|
// New User Credentials
|
||||||
|
private string _Email;
|
||||||
|
private string _Role;
|
||||||
|
|
||||||
public UserAccount(string un, string pwd, DateTime TimeStamp)
|
public UserAccount(string un, string pwd, DateTime TimeStamp)
|
||||||
{
|
{
|
||||||
UserName = un;
|
_userName = un;
|
||||||
Password = pwd;
|
_password = pwd;
|
||||||
Time = TimeStamp;
|
_Time = TimeStamp;
|
||||||
}
|
}
|
||||||
public string username { get { return UserName; } }
|
public UserAccount(string newUN, string newPWD, string Email, string role, DateTime newTime)
|
||||||
public string password { get { return Password; } }
|
|
||||||
|
|
||||||
// New User Credentials
|
|
||||||
private string newusername;
|
|
||||||
private string newpassword;
|
|
||||||
private string newemail;
|
|
||||||
private DateTime newtime;
|
|
||||||
public void NewUser(string newUN, string newPWD, string Email, DateTime newTime)
|
|
||||||
{
|
{
|
||||||
newusername = newUN;
|
_userName = newUN;
|
||||||
newpassword = newPWD;
|
_password = newPWD;
|
||||||
newemail = Email;
|
_Role = role;
|
||||||
newtime = newTime;
|
_Email = Email;
|
||||||
|
_Time = newTime;
|
||||||
}
|
}
|
||||||
public string NewUserName { get { return newusername; } }
|
public UserAccount()
|
||||||
public string NewPassword { get { return newpassword; } }
|
{
|
||||||
public string NewEmail { get { return newemail; } }
|
_Role = "regular";
|
||||||
public DateTime Newtime { get { return newtime; } }
|
_Time= DateTime.Now;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string username { get { return _userName; } }
|
||||||
|
public string password { get { return _password; } }
|
||||||
|
public string email { get { return _Email; } }
|
||||||
|
public string role { get { return _Role; } }
|
||||||
|
public DateTime Time { get { return _Time; } }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,53 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace TeamHobby.HobbyProjectGenerator.Implementations
|
|
||||||
{
|
|
||||||
public class InMemoryUserService
|
|
||||||
{
|
|
||||||
// Make it readonly so it can't be changed
|
|
||||||
private readonly IList<string> _logstore;
|
|
||||||
|
|
||||||
public InMemoryUserService()
|
|
||||||
{
|
|
||||||
_logstore = new List<string>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public IList<string> GetAllUsers()
|
|
||||||
{
|
|
||||||
return _logstore;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool User(string username)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
//DateTime.UtcNow.ToString() + "->" + username; old way of doing it
|
|
||||||
_logstore.Add($"{DateTime.UtcNow}->{username}"); // New way of doing it
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
public bool User(DateTime timestamp, string username)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
//DateTime.UtcNow.ToString() + "->" + username; old way of doing it
|
|
||||||
_logstore.Add($"{timestamp.ToUniversalTime()}->{username}"); // New way of doing it
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using TeamHobby.HobbyProjectGenerator.UserManagement;
|
||||||
|
|
||||||
// Print Statements used throughout the program.
|
// Print Statements used throughout the program.
|
||||||
|
|
||||||
@ -21,12 +22,16 @@ namespace TeamHobby.HobbyProjectGenerator
|
|||||||
}
|
}
|
||||||
public void SystemAccountMenu()
|
public void SystemAccountMenu()
|
||||||
{
|
{
|
||||||
// Create intial menu
|
UserAccount user = new UserAccount();
|
||||||
Console.WriteLine("What would you like to do?");
|
// Menu for all UserManagement options
|
||||||
int num = 1;
|
int menu = 0;
|
||||||
Console.WriteLine(num + ".Create a new account.");
|
Console.WriteLine($"Welcome {user.username} to User Management.\n");
|
||||||
num += 1;
|
Console.WriteLine("What would you like to do?\n");
|
||||||
Console.WriteLine(num + ".Access Admin Features");
|
Console.WriteLine((menu + 1) + ". Create a new account.");
|
||||||
|
Console.WriteLine((menu + 1) + ". Edit an account.");
|
||||||
|
Console.WriteLine((menu + 1) + ". Delete an account.");
|
||||||
|
Console.WriteLine((menu + 1) + ". Disable an account.");
|
||||||
|
Console.WriteLine((menu + 1) + ". Enable an account.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,17 +0,0 @@
|
|||||||
namespace TeamHobby.HobbyProjectGenerator
|
|
||||||
{
|
|
||||||
public class User_Authentication
|
|
||||||
{
|
|
||||||
public IList<string> GetAllUsers()
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool User(string username)
|
|
||||||
{
|
|
||||||
//Console.WriteLine("Hello World!");
|
|
||||||
//Console.WriteLine("Testing console");
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,21 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace TeamHobby.HobbyProjectGenerator.Implementations
|
|
||||||
{
|
|
||||||
public class User_Manager
|
|
||||||
{
|
|
||||||
public IList<string> GetAllUsers()
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool User(string username)
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -3,8 +3,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
|||||||
# Visual Studio Version 17
|
# Visual Studio Version 17
|
||||||
VisualStudioVersion = 17.0.31919.166
|
VisualStudioVersion = 17.0.31919.166
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator", "TeamHobby.HobbyProjectGenerator.csproj", "{C75B6909-FD9E-4382-94B6-7CA2CE371C9A}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.UserManagement.Tests", "..\TeamHobby.UserManagement.Tests\TeamHobby.UserManagement.Tests.csproj", "{5C5A44B4-EC3C-44F2-8F39-F917F8ED932F}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.UserManagement.Tests", "..\TeamHobby.UserManagement.Tests\TeamHobby.UserManagement.Tests.csproj", "{5C5A44B4-EC3C-44F2-8F39-F917F8ED932F}"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.Models", "..\TeamHobby.HobbyProjectGenerator.Models\TeamHobby.HobbyProjectGenerator.Models.csproj", "{75DED6C2-D404-4E71-A58B-0F616DB5C062}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.Models", "..\TeamHobby.HobbyProjectGenerator.Models\TeamHobby.HobbyProjectGenerator.Models.csproj", "{75DED6C2-D404-4E71-A58B-0F616DB5C062}"
|
||||||
@ -22,6 +20,7 @@ EndProject
|
|||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.UserManagement", "..\TeamHobby.HobbyProjectGenerator.UserManagement\TeamHobby.HobbyProjectGenerator.UserManagement.csproj", "{2E7193B8-86B6-48DA-9671-CD84615A5F5D}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.UserManagement", "..\TeamHobby.HobbyProjectGenerator.UserManagement\TeamHobby.HobbyProjectGenerator.UserManagement.csproj", "{2E7193B8-86B6-48DA-9671-CD84615A5F5D}"
|
||||||
EndProject
|
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}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.Logging.Tests", "..\TeamHobby.HobbyProjectGenerator.Logging.Tests\TeamHobby.HobbyProjectGenerator.Logging.Tests.csproj", "{CA8D11CF-807C-4C90-A529-0371F73518F6}"
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeamHobby.HobbyProjectGenerator.ArchiveTests", "..\TeamHobby.HobbyProjectGenerator.ArchiveTests\TeamHobby.HobbyProjectGenerator.ArchiveTests.csproj", "{C5EBD1F8-C806-4BF9-B2D7-8876072630FD}"
|
||||||
EndProject
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
|||||||
@ -14,8 +14,4 @@
|
|||||||
<PackageReference Include="coverlet.collector" Version="3.1.0" />
|
<PackageReference Include="coverlet.collector" Version="3.1.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator\TeamHobby.HobbyProjectGenerator.csproj" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@ -4,6 +4,7 @@ using TeamHobby.HobbyProjectGenerator.Archive;
|
|||||||
using TeamHobby.HobbyProjectGenerator.DataAccess;
|
using TeamHobby.HobbyProjectGenerator.DataAccess;
|
||||||
using TeamHobby.HobbyProjectGenerator.Logging;
|
using TeamHobby.HobbyProjectGenerator.Logging;
|
||||||
using TeamHobby.HobbyProjectGenerator.UserManagement;
|
using TeamHobby.HobbyProjectGenerator.UserManagement;
|
||||||
|
|
||||||
namespace TeamHobby.HobbyProjectGenerator.Main
|
namespace TeamHobby.HobbyProjectGenerator.Main
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -22,13 +23,23 @@ namespace TeamHobby.HobbyProjectGenerator.Main
|
|||||||
"a password:");
|
"a password:");
|
||||||
string? userPassword = Console.ReadLine();
|
string? userPassword = Console.ReadLine();
|
||||||
return userPassword;
|
return userPassword;
|
||||||
|
|
||||||
}
|
}
|
||||||
public class Controller
|
public class Controller
|
||||||
{
|
{
|
||||||
|
|
||||||
public static void Main(string[] args)
|
public static void Main(string[] args)
|
||||||
{
|
{
|
||||||
|
// 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;
|
||||||
|
|
||||||
|
Console.WriteLine(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss"));
|
||||||
|
|
||||||
|
// Creating the Factory class
|
||||||
// Logger log = new Logger();
|
// Logger log = new Logger();
|
||||||
//Logger.PrintTest();
|
//Logger.PrintTest();
|
||||||
//GetCredentials credentials = new GetCredentials();
|
//GetCredentials credentials = new GetCredentials();
|
||||||
@ -47,22 +58,23 @@ namespace TeamHobby.HobbyProjectGenerator.Main
|
|||||||
// Creating the Factory class
|
// Creating the Factory class
|
||||||
|
|
||||||
string dbType = "sql";
|
string dbType = "sql";
|
||||||
RDSFactory factory = new RDSFactory();
|
RDSFactory dbFactory = new RDSFactory();
|
||||||
|
|
||||||
// Testing Data Access Layer
|
// Testing Data Access Layer
|
||||||
string dbInfo = "DRIVER={MariaDB ODBC 3.1 Driver};" +
|
string dbInfo = "DRIVER={MariaDB ODBC 3.1 Driver};" +
|
||||||
"TCPIP=1;" +
|
"TCPIP=1;" +
|
||||||
"SERVER=localhost;" +
|
"SERVER=localhost;" +
|
||||||
"DATABASE=hobby;" +
|
"DATABASE=hobby;" +
|
||||||
"UID=root;" +
|
"UID=root;" +
|
||||||
"PASSWORD=Teamhobby;" +
|
"PASSWORD=Teamhobby;" +
|
||||||
"PORT=3306;" +
|
"OPTION=3";
|
||||||
"OPTION=3";
|
|
||||||
// IDataSource<string> datasource = factory.getDataSource(dbType, dbInfo);
|
|
||||||
|
|
||||||
|
|
||||||
IDataSource<string> datasource = factory.getDataSource(dbType, dbInfo);
|
IDataSource<string> datasource = factory.getDataSource(dbType, dbInfo);
|
||||||
|
"PORT=3306;";
|
||||||
|
|
||||||
|
|
||||||
|
"OPTION=3";
|
||||||
|
|
||||||
|
IDataSource<string> datasource = dbFactory.getDataSource(dbType, dbInfo);
|
||||||
// Create manager class from UserManagement
|
// Create manager class from UserManagement
|
||||||
SystemAccountManager manager = new SystemAccountManager();
|
SystemAccountManager manager = new SystemAccountManager();
|
||||||
|
|
||||||
@ -77,11 +89,11 @@ namespace TeamHobby.HobbyProjectGenerator.Main
|
|||||||
// Create UserAccount class
|
// Create UserAccount class
|
||||||
UserAccount user = new UserAccount(username, password, TimeStamp);
|
UserAccount user = new UserAccount(username, password, TimeStamp);
|
||||||
|
|
||||||
manager.CreateUserRecord(user);
|
Console.Write(manager.CreateUserRecord(user, datasource));
|
||||||
|
|
||||||
//Console.WriteLine(value: $"Welcome {username}\n");
|
//Console.WriteLine(value: $"Welcome {username}\n");
|
||||||
|
|
||||||
/* string sqlQuery = "Select * from log;";
|
/* string sqlQuery = "Select * from log;";
|
||||||
Object result = datasource.ReadData(sqlQuery);
|
Object result = datasource.ReadData(sqlQuery);
|
||||||
Console.WriteLine("type of Result: " + result.GetType());
|
Console.WriteLine("type of Result: " + result.GetType());
|
||||||
OdbcDataReader reader = null;
|
OdbcDataReader reader = null;
|
||||||
@ -103,18 +115,19 @@ namespace TeamHobby.HobbyProjectGenerator.Main
|
|||||||
// Closing the connection
|
// Closing the connection
|
||||||
sqlDS.getConnection().Close();*/
|
sqlDS.getConnection().Close();*/
|
||||||
|
|
||||||
// While loop to keep this running forever with UserManagement
|
/* // While loop to keep this running forever with UserManagement
|
||||||
// Testing archive Manager
|
// Testing archive Manager
|
||||||
//while (true)
|
//while (true)
|
||||||
//{
|
//{
|
||||||
/* string currentDate = DateTime.Now.ToString("dd");
|
string currentDate = DateTime.Now.ToString("dd");
|
||||||
string currentTime = DateTime.Now.ToString("T");
|
string currentTime = DateTime.Now.ToString("T");
|
||||||
Console.WriteLine("Current date: {0}, Current Time: {1}", currentDate, currentTime);
|
Console.WriteLine("Current date: {0}, Current Time: {1}", currentDate, currentTime);
|
||||||
if (String.Equals(currentDate, "1") && String.Equals(currentTime, "00:00:00 AM")){
|
if (String.Equals(currentDate, "1") && String.Equals(currentTime, "00:00:00 AM"))
|
||||||
ArchiveManager archive = new ArchiveManager(datasource);
|
{
|
||||||
archive.Controller();
|
ArchiveManager archive = new ArchiveManager(datasource);
|
||||||
}*/
|
archive.Controller();
|
||||||
//}
|
}
|
||||||
|
//}*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -146,7 +159,7 @@ namespace TeamHobby.HobbyProjectGenerator.Main
|
|||||||
//// Remove entries fromt the database
|
//// Remove entries fromt the database
|
||||||
//sqlDS.RemoveEntries();
|
//sqlDS.RemoveEntries();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 2.Inserting Data into the database:
|
// 2.Inserting Data into the database:
|
||||||
@ -163,80 +176,80 @@ namespace TeamHobby.HobbyProjectGenerator.Main
|
|||||||
//datasource.WriteData(sqlRemove);
|
//datasource.WriteData(sqlRemove);
|
||||||
//Console.WriteLine("Writing completed. ");
|
//Console.WriteLine("Writing completed. ");
|
||||||
|
|
||||||
/* bool MainMenu = true;
|
/* bool MainMenu = true;
|
||||||
|
|
||||||
// Set up menu loop
|
// Set up menu loop
|
||||||
while (MainMenu == true)
|
while (MainMenu == true)
|
||||||
{
|
{
|
||||||
// Console customization
|
// Console customization
|
||||||
// Change the look of the console
|
// Change the look of the console
|
||||||
Console.Title = "HobbyProjectGenerator";
|
Console.Title = "HobbyProjectGenerator";
|
||||||
// Change console text color
|
// Change console text color
|
||||||
Console.ForegroundColor = ConsoleColor.Green;
|
Console.ForegroundColor = ConsoleColor.Green;
|
||||||
// Change terminal height
|
// Change terminal height
|
||||||
Console.WindowHeight = 40;
|
Console.WindowHeight = 40;
|
||||||
|
|
||||||
|
|
||||||
// Create class objects
|
// Create class objects
|
||||||
UiPrint menu = new UiPrint();
|
UiPrint menu = new UiPrint();
|
||||||
|
|
||||||
|
|
||||||
// Print main menu
|
// Print main menu
|
||||||
menu.InitialMenu();
|
menu.InitialMenu();
|
||||||
|
|
||||||
// Set up try-catch for invalid inputs
|
// Set up try-catch for invalid inputs
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Get user choice
|
// Get user choice
|
||||||
string initialChoice = Console.ReadLine();
|
string initialChoice = Console.ReadLine();
|
||||||
// Convert to integer
|
// Convert to integer
|
||||||
int Choice = Convert.ToInt32(initialChoice);
|
int Choice = Convert.ToInt32(initialChoice);
|
||||||
|
|
||||||
switch (Choice)
|
switch (Choice)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
MainMenu = false;
|
MainMenu = false;
|
||||||
break;
|
break;
|
||||||
// Create a new account
|
// Create a new account
|
||||||
case 1:
|
case 1:
|
||||||
user.newUser();
|
user.newUser();
|
||||||
break;
|
break;
|
||||||
// Access Admin features
|
// Access Admin features
|
||||||
case 2:
|
case 2:
|
||||||
// Ask for Admin login credentials
|
// Ask for Admin login credentials
|
||||||
Console.WriteLine("Please enter a username:");
|
Console.WriteLine("Please enter a username:");
|
||||||
string AdminUser = Console.ReadLine();
|
string AdminUser = Console.ReadLine();
|
||||||
Console.WriteLine("Please enter the password for" + AdminUser);
|
Console.WriteLine("Please enter the password for" + AdminUser);
|
||||||
string AdminPsswrd = Console.ReadLine();
|
string AdminPsswrd = Console.ReadLine();
|
||||||
|
|
||||||
// Check if the username and password match a record within the administrators
|
// Check if the username and password match a record within the administrators
|
||||||
|
|
||||||
|
|
||||||
// Show new administrator menu
|
// Show new administrator menu
|
||||||
int AdminNum = 0;
|
int AdminNum = 0;
|
||||||
Console.WriteLine("Welcome" + AdminUser);
|
Console.WriteLine("Welcome" + AdminUser);
|
||||||
Console.WriteLine("What would you like to do?");
|
Console.WriteLine("What would you like to do?");
|
||||||
Console.WriteLine("1.View normal user records.");
|
Console.WriteLine("1.View normal user records.");
|
||||||
Console.WriteLine("2.View Administrator user records.");
|
Console.WriteLine("2.View Administrator user records.");
|
||||||
Console.WriteLine("3.View log files.");
|
Console.WriteLine("3.View log files.");
|
||||||
Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
Console.WriteLine("");
|
Console.WriteLine("");
|
||||||
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Console.WriteLine("Invalid choice, please enter a valid number.");
|
Console.WriteLine("Invalid choice, please enter a valid number.");
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
// Catch invalid keys such as spamming enter
|
// Catch invalid keys such as spamming enter
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
MainMenu = false;
|
MainMenu = false;
|
||||||
};*/
|
};*/
|
||||||
//}
|
//}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,7 +19,6 @@
|
|||||||
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.Logging\TeamHobby.HobbyProjectGenerator.Logging.csproj" />
|
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.Logging\TeamHobby.HobbyProjectGenerator.Logging.csproj" />
|
||||||
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.Models\TeamHobby.HobbyProjectGenerator.Models.csproj" />
|
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.Models\TeamHobby.HobbyProjectGenerator.Models.csproj" />
|
||||||
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.UserManagement\TeamHobby.HobbyProjectGenerator.UserManagement.csproj" />
|
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator.UserManagement\TeamHobby.HobbyProjectGenerator.UserManagement.csproj" />
|
||||||
<ProjectReference Include="..\TeamHobby.HobbyProjectGenerator\TeamHobby.HobbyProjectGenerator.csproj" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 544 KiB After Width: | Height: | Size: 544 KiB |
|
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 92 KiB |
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
38
src/dbCode/UserManagementDDL.txt
Normal file
38
src/dbCode/UserManagementDDL.txt
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
create table users
|
||||||
|
(
|
||||||
|
UserName varchar(50) charset utf8mb3 not null
|
||||||
|
primary key,
|
||||||
|
Password varchar(50) charset utf8mb3 null,
|
||||||
|
Role varchar(50) not null,
|
||||||
|
IsActive int default 1 null,
|
||||||
|
CreatedBy varchar(50) charset utf8mb3 null,
|
||||||
|
CreatedDate datetime null,
|
||||||
|
Email varchar(50) null,
|
||||||
|
constraint users_Email_uindex
|
||||||
|
unique (Email),
|
||||||
|
constraint users_UserName_uindex
|
||||||
|
unique (UserName),
|
||||||
|
constraint users_roles_Role_fk
|
||||||
|
foreign key (Role) references roles (Role)
|
||||||
|
);
|
||||||
|
|
||||||
|
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', 'ApproveDar', 'Admin', 1, 'Jacob', '2021-12-13 04:29:55', null);
|
||||||
|
|
||||||
|
|
||||||
|
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,
|
||||||
|
constraint role_pk
|
||||||
|
primary key (Role)
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('Admin', 'Jacob', '2021-12-13 03:25:14');
|
||||||
|
INSERT INTO hobby.roles (Role, CreatedBy, CreatedDate) VALUES ('regular', 'Colin', '2021-12-13 03:25:14');
|
||||||
152
src/dbCode/fullDDL.txt
Normal file
152
src/dbCode/fullDDL.txt
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
create database Hobby;
|
||||||
|
|
||||||
|
use hobby;
|
||||||
|
|
||||||
|
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)
|
||||||
|
);
|
||||||
|
|
||||||
|
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');
|
||||||
|
|
||||||
|
|
||||||
|
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', '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';
|
||||||
|
|
||||||
|
SET GLOBAL innodb_default_row_format='dynamic';
|
||||||
|
|
||||||
|
SET GLOBAL innodb_compression_algorithm='zlib';
|
||||||
|
|
||||||
|
-- Check for system settings
|
||||||
|
SHOW VARIABLES LIKE 'innodb_compression_algorithm';
|
||||||
|
SHOW VARIABLES LIKE 'innodb_default_row_format';
|
||||||
|
SHOW VARIABLES LIKE '%innodb%';
|
||||||
|
|
||||||
|
CREATE TABLE Persons (
|
||||||
|
PersonID int,
|
||||||
|
LastName varchar(255),
|
||||||
|
FirstName varchar(255),
|
||||||
|
Address varchar(255),
|
||||||
|
City varchar(255)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE DATABASE testDB;
|
||||||
|
|
||||||
|
-- Hobby DDL
|
||||||
|
-- Log level table
|
||||||
|
create table LogLevel
|
||||||
|
(
|
||||||
|
LvName varchar(50) not null,
|
||||||
|
LvComment varchar(500) not null,
|
||||||
|
constraint LogLevel_pk
|
||||||
|
primary key (LvName)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Log categories table
|
||||||
|
create table LogCategories
|
||||||
|
(
|
||||||
|
catName varchar(50) not null,
|
||||||
|
catComment varchar(255) not null,
|
||||||
|
constraint LogCategories_pk primary key (catName)
|
||||||
|
);
|
||||||
|
|
||||||
|
-- DDL for log table
|
||||||
|
create table Log
|
||||||
|
(
|
||||||
|
LtimeStamp datetime default CURRENT_TIMESTAMP null,
|
||||||
|
logID int auto_increment not null,
|
||||||
|
LvName varchar(50) not null,
|
||||||
|
catName varchar(50) not null,
|
||||||
|
userOP varchar(50) not null,
|
||||||
|
logMessage varchar(255) not null,
|
||||||
|
|
||||||
|
constraint LogLvName_fk foreign key (LvName) references loglevel (LvName),
|
||||||
|
constraint LogCatName_fk foreign key (catName) references logcategories (catName),
|
||||||
|
constraint Log_pk primary key (logID)
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
create table Archive
|
||||||
|
(
|
||||||
|
LtimeStamp datetime null,
|
||||||
|
logID int not null,
|
||||||
|
LvName varchar(50) not null,
|
||||||
|
catName varchar(50) not null,
|
||||||
|
userOP varchar(50) not null,
|
||||||
|
logMessage varchar(255) not null,
|
||||||
|
|
||||||
|
constraint Archive_pk primary key (logID)
|
||||||
|
)
|
||||||
|
ENGINE=InnoDB
|
||||||
|
PAGE_COMPRESSED=1
|
||||||
|
PAGE_COMPRESSION_LEVEL=9;
|
||||||
|
|
||||||
|
drop table archive;
|
||||||
|
|
||||||
|
-- Dummy data for testing purposes
|
||||||
|
-- Log categories data
|
||||||
|
INSERT into logcategories(catName, catComment) values
|
||||||
|
('View', 'view layer'),
|
||||||
|
('Business', 'business layer'),
|
||||||
|
('Server', 'server layer'),
|
||||||
|
('Data', 'data layer');
|
||||||
|
|
||||||
|
-- Log level data
|
||||||
|
INSERT into loglevel(lvname, lvcomment) values
|
||||||
|
('Info', 'some sys flow'),
|
||||||
|
('Debug', 'info for fixing bugs'),
|
||||||
|
('Warning', 'track system failure'),
|
||||||
|
('Error', 'some sys errors');
|
||||||
|
|
||||||
|
-- Log table data
|
||||||
|
INSERT into log(lvname, catname, userop, logmessage) values
|
||||||
|
('Info', 'View', 'create some projects', 'new account created'),
|
||||||
|
('Info', 'Business', 'create some projects', 'new projects made'),
|
||||||
|
('Info', 'View', 'log out', 'log out successful'),
|
||||||
|
('Info', 'Business', 'log in', 'log in successfully'),
|
||||||
|
('Info', 'View', 'search for projects', 'result return');
|
||||||
|
|
||||||
|
select * from logcategories;
|
||||||
|
select * from log;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user