DatabaseHelper update and Models

This commit is contained in:
Spudnut2000 2025-06-14 19:29:58 -05:00
parent 6324c85080
commit 275b2b29d2
12 changed files with 174 additions and 55 deletions

8
C969Project/AppState.cs Normal file
View File

@ -0,0 +1,8 @@
using C969Project.Data.Models;
namespace C969Project;
public static class AppState
{
public static User CurrentUser { get; set; }
}

View File

@ -9,9 +9,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.5" />
<PackageReference Include="MySql.Data" Version="9.3.0" /> <PackageReference Include="MySql.Data" Version="9.3.0" />
<PackageReference Include="MySql.EntityFrameworkCore" Version="9.0.3" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup> </ItemGroup>

View File

@ -5,22 +5,17 @@ namespace C969Project.Data;
public static class DatabaseHelper public static class DatabaseHelper
{ {
public static List<User> Users { get; private set; } = new();
public static void Initialize() 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); using MySqlConnection connection =
return user; new MySqlConnection(AppSettings.GetSetting("ConnectionStrings", "DefaultConnection"));
}
private static void PopulateUsers()
{
using MySqlConnection connection = new(AppSettings.GetSetting("ConnectionStrings", "DefaultConnection"));
try try
{ {
connection.Open(); connection.Open();
@ -28,36 +23,57 @@ public static class DatabaseHelper
catch (MySqlException ex) catch (MySqlException ex)
{ {
Console.WriteLine(ex.Message); Console.WriteLine(ex.Message);
throw;
} }
string query = "SELECT * FROM client_schedule.user"; string query = $"SELECT * FROM client_schedule.user WHERE userName = '{username}'";
using MySqlCommand command = new MySqlCommand(query, connection);
using MySqlCommand command = new(query, connection);
using MySqlDataReader reader = command.ExecuteReader(); using MySqlDataReader reader = command.ExecuteReader();
while (reader.Read()) while (reader.Read())
{ {
int id = reader.GetInt32("userId");
string name = reader.GetString("userName"); string name = reader.GetString("userName");
string password = reader.GetString("password"); string pass = reader.GetString("password");
int active = reader.GetInt32("active");
DateTime createDate = reader.GetDateTime("createDate"); if (name == username && password == pass)
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()
{ {
UserId = id, int id = reader.GetInt32("userId");
Username = name, return new User(id, name);
Password = password, }
Active = active,
CreateDate = createDate,
CreatedBy = createdBy,
LastUpdate = lastUpdated,
LastUpdateBy = lastUpdateBy
};
Users.Add(user);
} }
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);
// }
// }
} }

View File

@ -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;}
}

View File

@ -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; }
}

View File

@ -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; }
}

View File

@ -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; }
}

View File

@ -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; }
}

View File

@ -2,21 +2,12 @@ namespace C969Project.Data.Models;
public class User 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 int UserId { get; set; }
public string Username { get; set; } public string Username { get; set; }
public string Password { get; set; }
public int Active { get; set; } public User(int id, string username)
public DateTime CreateDate { get; set; } {
public string CreatedBy { get; set; } UserId = id;
public DateTime LastUpdate { get; set; } Username = username;
public string LastUpdateBy { get; set; } }
} }

View File

@ -88,7 +88,7 @@
AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
ClientSize = new System.Drawing.Size(800, 450); ClientSize = new System.Drawing.Size(800, 450);
Controls.Add(panel1); Controls.Add(panel1);
Text = "Form1"; Text = "Login";
panel1.ResumeLayout(false); panel1.ResumeLayout(false);
panel1.PerformLayout(); panel1.PerformLayout();
ResumeLayout(false); ResumeLayout(false);

View File

@ -1,3 +1,5 @@
using C969Project.Data;
namespace C969Project namespace C969Project
{ {
public partial class LoginForm : Form public partial class LoginForm : Form
@ -11,9 +13,42 @@ namespace C969Project
passwordTextBox.PlaceholderText = Localization.GetLocalization("password_text"); passwordTextBox.PlaceholderText = Localization.GetLocalization("password_text");
loginButton.Text = Localization.GetLocalization("login_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;
}
} }
} }
} }

View File

@ -2,5 +2,5 @@
"login_text": "Login", "login_text": "Login",
"password_text": "Password", "password_text": "Password",
"username_text": "Username", "username_text": "Username",
"login_error_message": "Invalid username or password" "login_error_message": "Incorrect username or password"
} }