diff --git a/C969Project/AppState.cs b/C969Project/AppState.cs
new file mode 100644
index 0000000..4b60d6b
--- /dev/null
+++ b/C969Project/AppState.cs
@@ -0,0 +1,8 @@
+using C969Project.Data.Models;
+
+namespace C969Project;
+
+public static class AppState
+{
+ public static User CurrentUser { get; set; }
+}
\ No newline at end of file
diff --git a/C969Project/C969Project.csproj b/C969Project/C969Project.csproj
index fd91a57..947595d 100644
--- a/C969Project/C969Project.csproj
+++ b/C969Project/C969Project.csproj
@@ -9,9 +9,7 @@
-
-
diff --git a/C969Project/Data/DatabaseHelper.cs b/C969Project/Data/DatabaseHelper.cs
index 658b03d..9f8d981 100644
--- a/C969Project/Data/DatabaseHelper.cs
+++ b/C969Project/Data/DatabaseHelper.cs
@@ -5,22 +5,17 @@ namespace C969Project.Data;
public static class DatabaseHelper
{
- public static List Users { get; private set; } = new();
+
public static void Initialize()
{
- PopulateUsers();
+
}
- public static User? GetUserById(int userId)
+ public static User? Login(string username, string password)
{
- User user = Users.Find(u => u.UserId == userId);
- return user;
- }
-
- private static void PopulateUsers()
- {
- using MySqlConnection connection = new(AppSettings.GetSetting("ConnectionStrings", "DefaultConnection"));
+ using MySqlConnection connection =
+ new MySqlConnection(AppSettings.GetSetting("ConnectionStrings", "DefaultConnection"));
try
{
connection.Open();
@@ -28,36 +23,57 @@ public static class DatabaseHelper
catch (MySqlException ex)
{
Console.WriteLine(ex.Message);
- throw;
}
- string query = "SELECT * FROM client_schedule.user";
-
- using MySqlCommand command = new(query, connection);
+ string query = $"SELECT * FROM client_schedule.user WHERE userName = '{username}'";
+ using MySqlCommand command = new MySqlCommand(query, connection);
using MySqlDataReader reader = command.ExecuteReader();
+
while (reader.Read())
{
- int id = reader.GetInt32("userId");
string name = reader.GetString("userName");
- string password = reader.GetString("password");
- int active = reader.GetInt32("active");
- DateTime createDate = reader.GetDateTime("createDate");
- string createdBy = reader.GetString("createdBy");
- var lastUpdated = reader.GetDateTime("lastUpdate"); // Timestap
- string lastUpdateBy = reader.GetString("lastUpdateBy");
- Console.WriteLine($"Id: {id}; Name: {name}; Password: {password}; Active: {active}; Created by: {createdBy}; Last Updated by: {lastUpdateBy}");
- User user = new()
+ string pass = reader.GetString("password");
+
+ if (name == username && password == pass)
{
- UserId = id,
- Username = name,
- Password = password,
- Active = active,
- CreateDate = createDate,
- CreatedBy = createdBy,
- LastUpdate = lastUpdated,
- LastUpdateBy = lastUpdateBy
- };
- Users.Add(user);
+ int id = reader.GetInt32("userId");
+ return new User(id, name);
+ }
}
+
+ return null;
}
+
+ // private static void PopulateUsers()
+ // {
+ // using MySqlConnection connection = new(AppSettings.GetSetting("ConnectionStrings", "DefaultConnection"));
+ // try
+ // {
+ // connection.Open();
+ // }
+ // catch (MySqlException ex)
+ // {
+ // Console.WriteLine(ex.Message);
+ // throw;
+ // }
+ //
+ // string query = "SELECT * FROM client_schedule.user";
+ //
+ // using MySqlCommand command = new(query, connection);
+ // using MySqlDataReader reader = command.ExecuteReader();
+ // while (reader.Read())
+ // {
+ // int id = reader.GetInt32("userId");
+ // string name = reader.GetString("userName");
+ // string password = reader.GetString("password");
+ // int active = reader.GetInt32("active");
+ // DateTime createDate = reader.GetDateTime("createDate");
+ // string createdBy = reader.GetString("createdBy");
+ // var lastUpdated = reader.GetDateTime("lastUpdate"); // Timestap
+ // string lastUpdateBy = reader.GetString("lastUpdateBy");
+ // Console.WriteLine($"Id: {id}; Name: {name}; Password: {password}; Active: {active}; Created by: {createdBy}; Last Updated by: {lastUpdateBy}");
+ // var user = new User(id, name);
+ // Users.Add(user);
+ // }
+ // }
}
\ No newline at end of file
diff --git a/C969Project/Data/Models/Address.cs b/C969Project/Data/Models/Address.cs
new file mode 100644
index 0000000..1c3e4cd
--- /dev/null
+++ b/C969Project/Data/Models/Address.cs
@@ -0,0 +1,15 @@
+namespace C969Project.Data.Models;
+
+public class Address
+{
+ public int Id { get; set; }
+ public string Address1 {get; set;}
+ public string Address2 {get; set;}
+ public int CityId {get; set;}
+ public string PostalCode {get; set;}
+ public string Phone {get; set;}
+ public DateTime CreateDate {get; set;}
+ public string CreatedBy {get; set;}
+ public DateTime LastUpdate {get; set;}
+ public string LastUpdateBy {get; set;}
+}
\ No newline at end of file
diff --git a/C969Project/Data/Models/Appointment.cs b/C969Project/Data/Models/Appointment.cs
new file mode 100644
index 0000000..4b6ca53
--- /dev/null
+++ b/C969Project/Data/Models/Appointment.cs
@@ -0,0 +1,20 @@
+namespace C969Project.Data.Models;
+
+public class Appointment
+{
+ public int AppointmentId { get; set; }
+ public int CustomerId { get; set; }
+ public int UserId { get; set; }
+ public string Title { get; set; }
+ public string Description { get; set; }
+ public string Location { get; set; }
+ public string Contact { get; set; }
+ public string AppointmentType { get; set; }
+ public string Url {get; set;}
+ public DateTime Start { get; set; }
+ public DateTime End { get; set; }
+ public DateTime CreateDate { get; set; }
+ public string CreatedBy { get; set; }
+ public DateTime LastUpdate { get; set; }
+ public string LastUpdateBy { get; set; }
+}
\ No newline at end of file
diff --git a/C969Project/Data/Models/City.cs b/C969Project/Data/Models/City.cs
new file mode 100644
index 0000000..be662e4
--- /dev/null
+++ b/C969Project/Data/Models/City.cs
@@ -0,0 +1,12 @@
+namespace C969Project.Data.Models;
+
+public class City
+{
+ public int CityID { get; set; }
+ public string CityName { get; set; }
+ public int CountryID { get; set; }
+ public DateTime CreateDate { get; set; }
+ public string CreatedBy { get; set; }
+ public DateTime LastUpdate { get; set; }
+ public string LastUpdateBy { get; set; }
+}
\ No newline at end of file
diff --git a/C969Project/Data/Models/Country.cs b/C969Project/Data/Models/Country.cs
new file mode 100644
index 0000000..67d355b
--- /dev/null
+++ b/C969Project/Data/Models/Country.cs
@@ -0,0 +1,11 @@
+namespace C969Project.Data.Models;
+
+public class Country
+{
+ public int CountryID { get; set; }
+ public string CountryName { get; set; }
+ public DateTime CreateDate { get; set; }
+ public string CreatedBy { get; set; }
+ public DateTime LastUpdate { get; set; }
+ public string LastUpdateBy { get; set; }
+}
\ No newline at end of file
diff --git a/C969Project/Data/Models/Customer.cs b/C969Project/Data/Models/Customer.cs
new file mode 100644
index 0000000..edb568f
--- /dev/null
+++ b/C969Project/Data/Models/Customer.cs
@@ -0,0 +1,13 @@
+namespace C969Project.Data.Models;
+
+public class Customer
+{
+ public int CustomerId { get; set; }
+ public string CustomerName { get; set; }
+ public int AddressId { get; set; }
+ public int Active { get; set; }
+ public DateTime CreateDate { get; set; }
+ public string CreatedBy { get; set; }
+ public DateTime LastUpdate { get; set; }
+ public string LastUpdateBy { get; set; }
+}
\ No newline at end of file
diff --git a/C969Project/Data/Models/User.cs b/C969Project/Data/Models/User.cs
index e2df03c..83c801a 100644
--- a/C969Project/Data/Models/User.cs
+++ b/C969Project/Data/Models/User.cs
@@ -2,21 +2,12 @@ namespace C969Project.Data.Models;
public class User
{
- // int id = reader.GetInt32("userId");
- // string name = reader.GetString("userName");
- // string password = reader.GetString("password");
- // int active = reader.GetInt32("active");
- // DateTime scheduled = reader.GetDateTime("createDate");
- // string createdBy = reader.GetString("createdBy");
- // var lastUpdated = reader.GetDateTime("lastUpdate"); // Timestap
- // string lastUpdateBy = reader.GetString("lastUpdateBy");
-
public int UserId { get; set; }
public string Username { get; set; }
- public string Password { get; set; }
- public int Active { get; set; }
- public DateTime CreateDate { get; set; }
- public string CreatedBy { get; set; }
- public DateTime LastUpdate { get; set; }
- public string LastUpdateBy { get; set; }
+
+ public User(int id, string username)
+ {
+ UserId = id;
+ Username = username;
+ }
}
\ No newline at end of file
diff --git a/C969Project/LoginForm.Designer.cs b/C969Project/LoginForm.Designer.cs
index 222d8b1..d234607 100644
--- a/C969Project/LoginForm.Designer.cs
+++ b/C969Project/LoginForm.Designer.cs
@@ -88,7 +88,7 @@
AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
ClientSize = new System.Drawing.Size(800, 450);
Controls.Add(panel1);
- Text = "Form1";
+ Text = "Login";
panel1.ResumeLayout(false);
panel1.PerformLayout();
ResumeLayout(false);
diff --git a/C969Project/LoginForm.cs b/C969Project/LoginForm.cs
index bee658f..21b9e49 100644
--- a/C969Project/LoginForm.cs
+++ b/C969Project/LoginForm.cs
@@ -1,3 +1,5 @@
+using C969Project.Data;
+
namespace C969Project
{
public partial class LoginForm : Form
@@ -11,9 +13,42 @@ namespace C969Project
passwordTextBox.PlaceholderText = Localization.GetLocalization("password_text");
loginButton.Text = Localization.GetLocalization("login_text");
-
+ loginButton.Enabled = false;
+ usernameTextBox.TextChanged += (sender, args) => {UpdateLoginButtonState();};
+ passwordTextBox.TextChanged += (sender, args) => {UpdateLoginButtonState();};
+ loginButton.Click += LoginButtonOnClick;
+ }
+
+
+
+ private void LoginButtonOnClick(object? sender, EventArgs e)
+ {
+ var usr = DatabaseHelper.Login(usernameTextBox.Text, passwordTextBox.Text);
+
+ if (usr is null)
+ {
+ MessageBox.Show(Localization.GetLocalization("login_error_message"), "", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+
+ Console.WriteLine($"Login successful, {usr.Username}");
+ AppState.CurrentUser = usr;
+
+ var dash = new DashboardForm();
+ dash.Show();
+ Hide();
+ }
+
+ private void UpdateLoginButtonState()
+ {
+ if (string.IsNullOrEmpty(usernameTextBox.Text) || string.IsNullOrEmpty(passwordTextBox.Text))
+ {
+ loginButton.Enabled = false;
+ }
+ else
+ {
+ loginButton.Enabled = true;
+ }
}
-
-
}
}
diff --git a/C969Project/locale/en-US.json b/C969Project/locale/en-US.json
index 3888208..d49490a 100644
--- a/C969Project/locale/en-US.json
+++ b/C969Project/locale/en-US.json
@@ -2,5 +2,5 @@
"login_text": "Login",
"password_text": "Password",
"username_text": "Username",
- "login_error_message": "Invalid username or password"
+ "login_error_message": "Incorrect username or password"
}
\ No newline at end of file