diff --git a/.gitignore b/.gitignore index 079a604..e1b4559 100644 --- a/.gitignore +++ b/.gitignore @@ -423,3 +423,5 @@ healthchecksdb .vscode/launch.json .vscode/tasks.json +Source Code/.vscode/tasks.json +Source Code/.vscode/launch.json diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.DataAccess/RelationalDataSourceFactory.cs b/Source Code/TeamHobby.HobbyProjectGenerator.DataAccess/RDSFactory.cs similarity index 95% rename from Source Code/TeamHobby.HobbyProjectGenerator.DataAccess/RelationalDataSourceFactory.cs rename to Source Code/TeamHobby.HobbyProjectGenerator.DataAccess/RDSFactory.cs index 656ebd1..6eb1899 100644 --- a/Source Code/TeamHobby.HobbyProjectGenerator.DataAccess/RelationalDataSourceFactory.cs +++ b/Source Code/TeamHobby.HobbyProjectGenerator.DataAccess/RDSFactory.cs @@ -7,7 +7,7 @@ using TeamHobby.HobbyProjectGenerator.DataAccess; namespace TeamHobby.HobbyProjectGenerator.DataAccess { - public class RelationalDataSourceFactory + public class RDSFactory { // Mehthod to create a specific data source suitable to the need public IDataSource getDataSource(string name, string info) diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Logger.cs b/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Logger.cs new file mode 100644 index 0000000..7e284aa --- /dev/null +++ b/Source Code/TeamHobby.HobbyProjectGenerator.Logging/Logger.cs @@ -0,0 +1,14 @@ +using System; +namespace TeamHobby.HobbyProjectGenerator.Logging +{ + public class Logger + { + public static void PrintTest() + { + Console.WriteLine("testing"); + + } + + } + +} \ No newline at end of file diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.Logging/TeamHobby.HobbyProjectGenerator.Logging.csproj b/Source Code/TeamHobby.HobbyProjectGenerator.Logging/TeamHobby.HobbyProjectGenerator.Logging.csproj new file mode 100644 index 0000000..132c02c --- /dev/null +++ b/Source Code/TeamHobby.HobbyProjectGenerator.Logging/TeamHobby.HobbyProjectGenerator.Logging.csproj @@ -0,0 +1,9 @@ + + + + net6.0 + enable + enable + + + diff --git a/Source Code/TeamHobby.HobbyProjectGenerator/Contracts/IDataSource.cs b/Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/AccountService.cs similarity index 59% rename from Source Code/TeamHobby.HobbyProjectGenerator/Contracts/IDataSource.cs rename to Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/AccountService.cs index 7db156f..902cba9 100644 --- a/Source Code/TeamHobby.HobbyProjectGenerator/Contracts/IDataSource.cs +++ b/Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/AccountService.cs @@ -4,9 +4,9 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace TeamHobby.HobbyProjectGenerator.Contracts +namespace TeamHobby.HobbyProjectGenerator.UserManagement { - internal interface IDataSource + internal class AccountService { } } diff --git a/Source Code/main/SystemAccountManager.cs b/Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/SystemAccountManager.cs similarity index 53% rename from Source Code/main/SystemAccountManager.cs rename to Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/SystemAccountManager.cs index 78a9ff3..9cb4617 100644 --- a/Source Code/main/SystemAccountManager.cs +++ b/Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/SystemAccountManager.cs @@ -3,11 +3,69 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using TeamHobby.HobbyProjectGenerator.UserManagement; +using TeamHobby.HobbyProjectGenerator.Implementations; -namespace main +namespace TeamHobby.HobbyProjectGenerator.UserManagement { - internal class SystemAccountManager + public class SystemAccountManager { + public string IsInputValid(string checkUN, string checkPWD) + { + // Create bool variables to check if username and password are valid + bool ValidUN = checkUN.All(un=>Char.IsLetterOrDigit(un) || un=='@' + || un == '.' || un == ',' || un == '!'); + + bool ValidPwd = checkPWD.All(Char.IsLetterOrDigit); + + + if (checkUN == null || checkPWD == null) + { + return "Invalid input\n"; + } + else if (checkUN.Length > 15 || checkUN.Length <= 0 + || ValidUN is false) + { + return "Invalid Username\n"; + } + else if (checkPWD.Length > 18 || checkPWD.Length <= 0 + || ValidPwd is false) + { + return "Invalid Password\n"; + } + 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"; + } + else if (checkUN.Length <= 15 && checkUN.Length > 0 + || ValidUN is true) + { + return "Valid Username\n"; + } + else if (checkPWD.Length <= 18 && checkPWD.Length > 0 + || ValidPwd is true) + { + return "Valid Password\n"; + } + else + { + return "Invalid Input\n"; + } + } + public bool isAdmin() + { + return false; + } + public void CreateUserRecord(UserAccount user) + { + Console.Write(IsInputValid(user.username, user.password)); + + } + + + /*public NewUserName() { @@ -60,7 +118,7 @@ namespace main public void AccountController() { // Create objects - UserAccount user = new UserAccount(); + //UserAccount user = new UserAccount(); UiPrint ui = new UiPrint(); bool foo = true; diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/TeamHobby.HobbyProjectGenerator.UserManagement.csproj b/Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/TeamHobby.HobbyProjectGenerator.UserManagement.csproj new file mode 100644 index 0000000..9299c5f --- /dev/null +++ b/Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/TeamHobby.HobbyProjectGenerator.UserManagement.csproj @@ -0,0 +1,13 @@ + + + + net6.0 + enable + enable + + + + + + + diff --git a/Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/UserAccount.cs b/Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/UserAccount.cs new file mode 100644 index 0000000..687f7ec --- /dev/null +++ b/Source Code/TeamHobby.HobbyProjectGenerator.UserManagement/UserAccount.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TeamHobby.HobbyProjectGenerator.UserManagement +{ + public class UserAccount + { + // Admin Credentials + private string UserName; + private string Password; + private DateTime Time; + + public UserAccount(string un, string pwd, DateTime TimeStamp) + { + UserName = un; + Password = pwd; + Time = TimeStamp; + } + public string username { get { return UserName; } } + 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; + newpassword = newPWD; + newemail = Email; + newtime = newTime; + } + public string NewUserName { get { return newusername; } } + public string NewPassword { get { return newpassword; } } + public string NewEmail { get { return newemail; } } + public DateTime Newtime { get { return newtime;} } + } +} diff --git a/Source Code/TeamHobby.HobbyProjectGenerator/Contracts/IUserService.cs b/Source Code/TeamHobby.HobbyProjectGenerator/Contracts/IUserService.cs deleted file mode 100644 index 96fff23..0000000 --- a/Source Code/TeamHobby.HobbyProjectGenerator/Contracts/IUserService.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace TeamHobby.HobbyProjectGenerator -{ - public interface IUserService - { - // Public methods shouldn't be void so it can be tested - bool User(string username); - IList GetAllUsers(); - } -} diff --git a/Source Code/TeamHobby.HobbyProjectGenerator/Implementations/Database_Users.cs b/Source Code/TeamHobby.HobbyProjectGenerator/Implementations/Database_Users.cs deleted file mode 100644 index 29bf72b..0000000 --- a/Source Code/TeamHobby.HobbyProjectGenerator/Implementations/Database_Users.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace TeamHobby.HobbyProjectGenerator.Implementations -{ - internal class Database_Users : IUserService - { - public IList GetAllUsers() - { - throw new NotImplementedException(); - } - - public bool User(string username) - { - throw new NotImplementedException(); - } - } -} diff --git a/Source Code/TeamHobby.HobbyProjectGenerator/Implementations/InMemoryUserService.cs b/Source Code/TeamHobby.HobbyProjectGenerator/Implementations/InMemoryUserService.cs index 3b14f48..db60f66 100644 --- a/Source Code/TeamHobby.HobbyProjectGenerator/Implementations/InMemoryUserService.cs +++ b/Source Code/TeamHobby.HobbyProjectGenerator/Implementations/InMemoryUserService.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; namespace TeamHobby.HobbyProjectGenerator.Implementations { - public class InMemoryUserService : IUserService + public class InMemoryUserService { // Make it readonly so it can't be changed private readonly IList _logstore; diff --git a/Source Code/main/UiPrint.cs b/Source Code/TeamHobby.HobbyProjectGenerator/Implementations/UiPrint.cs similarity index 92% rename from Source Code/main/UiPrint.cs rename to Source Code/TeamHobby.HobbyProjectGenerator/Implementations/UiPrint.cs index 98378f8..d4e3cc5 100644 --- a/Source Code/main/UiPrint.cs +++ b/Source Code/TeamHobby.HobbyProjectGenerator/Implementations/UiPrint.cs @@ -6,9 +6,9 @@ using System.Threading.Tasks; // Print Statements used throughout the program. -namespace main +namespace TeamHobby.HobbyProjectGenerator { - internal class UiPrint + public class UiPrint { public void InitialMenu() { diff --git a/Source Code/TeamHobby.HobbyProjectGenerator/Implementations/User_Authentication.cs b/Source Code/TeamHobby.HobbyProjectGenerator/Implementations/User_Authentication.cs index 718f331..c92ae09 100644 --- a/Source Code/TeamHobby.HobbyProjectGenerator/Implementations/User_Authentication.cs +++ b/Source Code/TeamHobby.HobbyProjectGenerator/Implementations/User_Authentication.cs @@ -1,6 +1,6 @@ namespace TeamHobby.HobbyProjectGenerator { - public class User_Authentication : IUserService + public class User_Authentication { public IList GetAllUsers() { diff --git a/Source Code/TeamHobby.HobbyProjectGenerator/Implementations/User_Manager.cs b/Source Code/TeamHobby.HobbyProjectGenerator/Implementations/User_Manager.cs index 56b859f..3d463a9 100644 --- a/Source Code/TeamHobby.HobbyProjectGenerator/Implementations/User_Manager.cs +++ b/Source Code/TeamHobby.HobbyProjectGenerator/Implementations/User_Manager.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; namespace TeamHobby.HobbyProjectGenerator.Implementations { - public class User_Manager : IUserService + public class User_Manager { public IList GetAllUsers() { diff --git a/Source Code/TeamHobby.HobbyProjectGenerator/TeamHobby.HobbyProjectGenerator.csproj b/Source Code/TeamHobby.HobbyProjectGenerator/TeamHobby.HobbyProjectGenerator.csproj index 132c02c..0a03a26 100644 --- a/Source Code/TeamHobby.HobbyProjectGenerator/TeamHobby.HobbyProjectGenerator.csproj +++ b/Source Code/TeamHobby.HobbyProjectGenerator/TeamHobby.HobbyProjectGenerator.csproj @@ -6,4 +6,8 @@ enable + + + + diff --git a/Source Code/TeamHobby.HobbyProjectGenerator/TeamHobby.HobbyProjectGenerator.sln b/Source Code/TeamHobby.HobbyProjectGenerator/TeamHobby.HobbyProjectGenerator.sln index 2e9cc83..ebdf186 100644 --- a/Source Code/TeamHobby.HobbyProjectGenerator/TeamHobby.HobbyProjectGenerator.sln +++ b/Source Code/TeamHobby.HobbyProjectGenerator/TeamHobby.HobbyProjectGenerator.sln @@ -15,7 +15,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGener EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.Main", "..\TeamHobby.Main\TeamHobby.Main.csproj", "{ED126EFB-B337-42F9-BE4B-65A5AE90503B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeamHobby.HobbyProjectGenerator.DataAccess", "..\TeamHobby.HobbyProjectGenerator.DataAccess\TeamHobby.HobbyProjectGenerator.DataAccess.csproj", "{AA48A66C-FA36-4AF9-A782-CEC22838EB8F}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.DataAccess", "..\TeamHobby.HobbyProjectGenerator.DataAccess\TeamHobby.HobbyProjectGenerator.DataAccess.csproj", "{AA48A66C-FA36-4AF9-A782-CEC22838EB8F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TeamHobby.HobbyProjectGenerator.Logging", "..\TeamHobby.HobbyProjectGenerator.Logging\TeamHobby.HobbyProjectGenerator.Logging.csproj", "{C0494115-838E-43A3-8896-133E5D1E874A}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TeamHobby.HobbyProjectGenerator.UserManagement", "..\TeamHobby.HobbyProjectGenerator.UserManagement\TeamHobby.HobbyProjectGenerator.UserManagement.csproj", "{2E7193B8-86B6-48DA-9671-CD84615A5F5D}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -24,12 +27,14 @@ Global EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {C75B6909-FD9E-4382-94B6-7CA2CE371C9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C75B6909-FD9E-4382-94B6-7CA2CE371C9A}.Debug|Any CPU.Build.0 = Debug|Any CPU {C75B6909-FD9E-4382-94B6-7CA2CE371C9A}.Release|Any CPU.ActiveCfg = Release|Any CPU {C75B6909-FD9E-4382-94B6-7CA2CE371C9A}.Release|Any CPU.Build.0 = Release|Any CPU {5C5A44B4-EC3C-44F2-8F39-F917F8ED932F}.Debug|Any CPU.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 {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}.Release|Any CPU.ActiveCfg = Release|Any CPU {75DED6C2-D404-4E71-A58B-0F616DB5C062}.Release|Any CPU.Build.0 = Release|Any CPU {30C7EBF3-3957-46E5-86C1-C13356841ECA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU @@ -41,13 +46,20 @@ Global {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 {ED126EFB-B337-42F9-BE4B-65A5AE90503B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {ED126EFB-B337-42F9-BE4B-65A5AE90503B}.Debug|Any CPU.Build.0 = 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 {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}.Release|Any CPU.ActiveCfg = Release|Any CPU {AA48A66C-FA36-4AF9-A782-CEC22838EB8F}.Release|Any CPU.Build.0 = Release|Any CPU + {C0494115-838E-43A3-8896-133E5D1E874A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C0494115-838E-43A3-8896-133E5D1E874A}.Debug|Any CPU.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 + {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}.Release|Any CPU.ActiveCfg = Release|Any CPU + {2E7193B8-86B6-48DA-9671-CD84615A5F5D}.Release|Any CPU.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 0dee3c0..d44e163 100644 --- a/Source Code/main/Controller.cs +++ b/Source Code/main/Controller.cs @@ -1,10 +1,9 @@ -using main; -using System; +using System; using System.Data.Odbc; using TeamHobby.HobbyProjectGenerator.Archive; using TeamHobby.HobbyProjectGenerator.DataAccess; - - +using TeamHobby.HobbyProjectGenerator.Logging; +using TeamHobby.HobbyProjectGenerator.UserManagement; namespace TeamHobby.HobbyProjectGenerator.Main { public class GetCredentials @@ -17,16 +16,18 @@ namespace TeamHobby.HobbyProjectGenerator.Main } public string? GetPassword() { - Console.WriteLine("Please enter a password:"); + Console.WriteLine("Please enter " + + "a password:"); string? userPassword = Console.ReadLine(); return userPassword; - } + } public class Controller { - public static void Main(string[] args) { + // Logger log = new Logger(); + //Logger.PrintTest(); //GetCredentials credentials = new GetCredentials(); //string? username = credentials.GetUserName(); //string? password = credentials.GetPassword(); @@ -35,19 +36,43 @@ namespace TeamHobby.HobbyProjectGenerator.Main //Console.WriteLine(value: $"username is {username}\npassword is {password}"); // Creating the Factory class + // Creating the Factory class + string dbType = "sql"; - RelationalDataSourceFactory dbFactory = new RelationalDataSourceFactory(); + RDSFactory factory = 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); + "PORT=3306;"; + IDataSource datasource = dbFactory.getDataSource(dbType, dbInfo); - string sqlQuery = "Select * from log;"; + "OPTION=3"; + IDataSource datasource = factory.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); + + manager.CreateUserRecord(user); + + //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; @@ -67,19 +92,19 @@ namespace TeamHobby.HobbyProjectGenerator.Main Console.WriteLine(""); // Closing the connection - sqlDS.getConnection().Close(); + sqlDS.getConnection().Close();*/ // While loop to keep this running forever with UserManagement // Testing archive Manager //while (true) //{ - string currentDate = DateTime.Now.ToString("dd"); + /* 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(); - } + }*/ //} @@ -129,11 +154,7 @@ namespace TeamHobby.HobbyProjectGenerator.Main //datasource.WriteData(sqlRemove); //Console.WriteLine("Writing completed. "); - - /* ExampleDAO z = new ExampleDAO(); - z.UserData("Tomato"); - Console.Read();*/ - /*bool MainMenu = true; + /* bool MainMenu = true; // Set up menu loop while (MainMenu == true) @@ -149,7 +170,6 @@ namespace TeamHobby.HobbyProjectGenerator.Main // Create class objects UiPrint menu = new UiPrint(); - UserAccount user = new UserAccount(); // Print main menu @@ -207,8 +227,8 @@ namespace TeamHobby.HobbyProjectGenerator.Main catch { MainMenu = false; - }; - }*/ + };*/ + //} } } diff --git a/Source Code/main/ExampleDAO.cs b/Source Code/main/SqlDAO.cs similarity index 58% rename from Source Code/main/ExampleDAO.cs rename to Source Code/main/SqlDAO.cs index 64e3b63..8e331a7 100644 --- a/Source Code/main/ExampleDAO.cs +++ b/Source Code/main/SqlDAO.cs @@ -1,23 +1,22 @@ using Microsoft.Data.SqlClient; +using TeamHobby.HobbyProjectGenerator.Models; -namespace TeamHobby.HobbyProjectGenerator.Main +namespace TeamHobby.HobbyProjectGenerator.DAL { - public class ExampleDAO + public class SqlDAO { - - public void UserData(string username) + public IList GetUserData(string username) { // Sql server connection string, needs to be changed accordingly to connect - var connString = "server=localhost,3316;user=root;database=users;password=Plop20"; // Using @" " makes the string literal - + var connString = "server=localhost;userid=root;password=Plop20;database=users"; // Using @" " makes the string literal + // ADO.NET - ODBC - using var conn = new SqlConnection(connString); + 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)) { - conn.Open(); // Get the results from the query SqlDataReader r = command.ExecuteReader(); @@ -33,18 +32,18 @@ namespace TeamHobby.HobbyProjectGenerator.Main { Console.WriteLine(r.ToString()); } - conn.Close(); - + return null; } - // Console.Read(); - /* - * this is meant for specific basic sql commands - using (var adapter = new SqlDataAdapter()) - { - adapter.SelectCommand - } - */ - //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/UserAccount.cs b/Source Code/main/UserAccount.cs deleted file mode 100644 index 92e0c55..0000000 --- a/Source Code/main/UserAccount.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace main -{ - public class UserAccount - { - /* private string username; - private string password; - private string role; - - public UserAccount(string un,string pwd,string rol) - { - username = un; - password = pwd; - role = rol; - - } - - public void UserAccount() - { - password = "1234"; - role = "Regular"; - } - - public void newUser() - { - - }*/ - } -} diff --git a/Source Code/main/main.csproj b/Source Code/main/main.csproj index 8853c02..31ccaf6 100644 --- a/Source Code/main/main.csproj +++ b/Source Code/main/main.csproj @@ -5,6 +5,7 @@ net6.0 enable enable + x86 @@ -14,6 +15,10 @@ + + + + diff --git a/doc/LowLevel/Logging/LogToFile_Sequence.svg b/doc/LowLevel/Logging/LogToFile_Sequence.svg new file mode 100644 index 0000000..0796128 --- /dev/null +++ b/doc/LowLevel/Logging/LogToFile_Sequence.svg @@ -0,0 +1 @@ +title%20Log%20Event%20to%20File%20%0A%0Aparticipant%20Controller.cs%20%23lightgreen%0Aparticipant%20LoggingManager%20%23ffffe0%0Aparticipant%20LogEntry%20%23cbc3e3%0Aparticipant%20FileLoggerFactory%20%23ff8b3d%0Aparticipant%20FileLogger%20%23D3D3D3%0A%0A%0A%0A%0A%5B-%3EController.cs%3Arequest%20to%20log%20event%20to%20file%0Aactivate%20Controller.cs%20%23lightgreen%0A%0AController.cs-%3ELoggingManager%3Amanager%20%3D%20new%20LoggingManager()%0A%0Aactivate%20LoggingManager%20%23ffffe0%0A%0ALoggingManager-%3ELoggingManager%3AConstructor()%0A%0ALoggingManager-%3ELogEntry%3A_logEntry%20%3D%20new%20LogEntry(int%20userID%2C%5CnDateTime%20timestamp%2C%20string%20level%2C%20%5Cnstring%20category%2C%20string%20message)%0A%0Aactivate%20LogEntry%20%23cbc3e3%0A%0A%0ALogEntry-%3ELogEntry%3AConstuctor(int%20userID%2C%5Cnstring%20level%2C%20%5CnDateTime%20timestamp%2C%5Cnstring%20category%2C%5Cnstring%20description)%0ALoggingManager%3C--LogEntry%3Areturn%20new%20LogEntry()%0A%0Adeactivate%20LogEntry%0ALoggingManager-%3EFileLoggerFactory%3A_loggerFactory%20%3D%20new%20FileLoggerFactory()%0Aactivate%20FileLoggerFactory%20%23ff8b3d%0A%0AFileLoggerFactory-%3EFileLoggerFactory%3A%20Constructor()%0A%0ALoggingManager%3C--FileLoggerFactory%3Areturn%20new%20FileLoggerFactory%0ALoggingManager-%3EFileLoggerFactory%3A_logger%20%3D%20_loggerFactory.CreateLogger()%0AFileLoggerFactory-%3EFileLogger%3A%20new%20FileLogger()%0A%0A%0Aactivate%20FileLogger%20%23D3D3D3%0AFileLogger-%3EFileLogger%3AConstructor()%0A%0ALoggingManager%3C--FileLogger%3Areturn%20new%20FileLogger()%0Adeactivate%20FileLoggerFactory%0A%0ALoggingManager-%3EFileLogger%3A_logger.Log(_logEntry)%0A%0Adeactivate%20LoggingManager%0AFileLogger-%3EFileLogger%3AAppendFile(LogEntry)%0A%0A%0Aalt%20%23red%20file%20not%20found%20%0AFileLogger-%3EFileLogger%3ACreateFile()%0A%0Aend%0A%0Aalt%20%23red%20insufficient%20storage%20capacity%20%0AFileLogger-%3EFileLogger%3A%20new%20IOException()%0A%0AController.cs%3C--FileLogger%3Areturn%20new%20IOException()%0Aend%20%0ALog Event to File Controller.csLoggingManagerLogEntryFileLoggerFactoryFileLoggerrequest to log event to filemanager = new LoggingManager()Constructor()_logEntry = new LogEntry(int userID,DateTime timestamp, string level, string category, string message)Constuctor(int userID,string level, DateTime timestamp,string category,string description)return new LogEntry()_loggerFactory = new FileLoggerFactory()Constructor()return new FileLoggerFactory_logger = _loggerFactory.CreateLogger()new FileLogger()Constructor()return new FileLogger()_logger.Log(_logEntry)AppendFile(LogEntry)CreateFile()new IOException()return new IOException()alt[file not found ]alt[insufficient storage capacity ] \ No newline at end of file diff --git a/doc/LowLevel/Logging/Logging_LLD_V4.png b/doc/LowLevel/Logging/Logging_LLD_V4.png new file mode 100644 index 0000000..c4ebb5b Binary files /dev/null and b/doc/LowLevel/Logging/Logging_LLD_V4.png differ