using BoredCareers.Entities; using MySql.Data.MySqlClient; using System.Data; using System.Data.Common; namespace BoredCareers.Services.DatabaseService { public partial class DatabaseService { public async Task GetAccount( string UserNameOrEmail ) { Account? account = null; using( MySqlConnection connection = GetConnection() ) { connection.Open(); string command = @" SELECT * FROM Account WHERE UserName = @UorE OR Email = @UorE; "; MySqlCommand cmd = new MySqlCommand(command, connection); cmd.Parameters.AddWithValue("@UorE", UserNameOrEmail); using( DbDataReader reader = await cmd.ExecuteReaderAsync() ) { while( await reader.ReadAsync() ) { if( reader == null ) { break; } int _id = reader.GetInt32("ID"); string _username = reader.GetString("UserName"); string _email = reader.GetString("Email"); bool _emailVerified = reader.GetBoolean("EmailVerified"); string _passwordhash = reader.GetString("PasswordHash"); bool _failedpasswordlock = reader.GetBoolean( "FailedPasswordLock" ); int _passwordattempts = reader.GetInt32( "PasswordAttempts" ); int _curpasswordattempts = reader.GetInt32( "CurrentPasswordAttempts" ); string _role = reader.GetString( "Role" ); string _emailtoken = reader.GetString( "EmailToken" ); string _dataserver = reader.GetString( "DataServer" ); account = new Account() { ID = _id, UserName = _username, Email = _email, EmailVerified = _emailVerified, PasswordHash = _passwordhash, CurrentPasswordAttempts = _curpasswordattempts, PasswordAttempts = _passwordattempts, EmailToken = _emailtoken, FailedPasswordLock = _failedpasswordlock, Role = _role, DataServer = _dataserver }; } } } return account; } public async Task GetAccount( int AccountID ) { Account? account = null; using( MySqlConnection connection = GetConnection() ) { connection.Open(); string command = @" SELECT * FROM Account WHERE ID = @ID; "; MySqlCommand cmd = new MySqlCommand(command, connection); cmd.Parameters.AddWithValue("@ID", AccountID); using( DbDataReader reader = await cmd.ExecuteReaderAsync() ) { while( await reader.ReadAsync() ) { if( reader == null ) { break; } int _id = reader.GetInt32("ID"); string _username = reader.GetString("UserName"); string _email = reader.GetString("Email"); bool _emailVerified = reader.GetBoolean("EmailVerified"); string _passwordhash = reader.GetString("PasswordHash"); bool _failedpasswordlock = reader.GetBoolean( "FailedPasswordLock" ); int _passwordattempts = reader.GetInt32( "PasswordAttempts" ); int _curpasswordattempts = reader.GetInt32( "CurrentPasswordAttempts" ); string _role = reader.GetString( "Role" ); string _emailtoken = reader.GetString( "EmailToken" ); string _dataserver = reader.GetString("DataServer"); account = new Account() { ID = _id, UserName = _username, Email = _email, EmailVerified = _emailVerified, PasswordHash = _passwordhash, CurrentPasswordAttempts = _passwordattempts, PasswordAttempts = _passwordattempts, EmailToken = _emailtoken, FailedPasswordLock = _failedpasswordlock, Role = _role, DataServer = _dataserver }; } } } return account; } public async Task SetAccount( Account Profile ) { using( MySqlConnection connection = GetConnection() ) { connection.Open(); string command = @" INSERT INTO Account (ID,UserName,Email,EmailVerified,PasswordHash,FailedPasswordLock,PasswordAttempts,CurrentPasswordAttempts,Role,EmailToken,DataServer) VALUES (@ID,@UserName,@Email,@EmailVerified,@PasswordHash,@FailedPasswordLock,@PasswordAttempts,@CurrentPasswordAttempts,@Role,@EmailToken,@DataServer); ON DUPLICATE KEY UPDATE UserName = @UserName, Email = @Email, EmailVerified = @EmailVerified, PasswordHash = @PasswordHash, FailedPasswordLock = @FailedPasswordLock, PasswordAttempts = @PasswordAttempts, CurrentPasswordAttempts = @CurrentPasswordAttempts, Role = @Role, EmailToken = @EmailToken; DataServer = @DataServer; "; MySqlCommand cmd = new MySqlCommand( command , connection); cmd.Parameters.AddWithValue("@ID", Profile.ID); cmd.Parameters.AddWithValue("@UserName", Profile.UserName); cmd.Parameters.AddWithValue("@Email", Profile.Email); cmd.Parameters.AddWithValue("@EmailVerified", Profile.EmailVerified); cmd.Parameters.AddWithValue("@PasswordHash", Profile.PasswordHash); cmd.Parameters.AddWithValue("@FailedPasswordLock", Profile.FailedPasswordLock); cmd.Parameters.AddWithValue("@PasswordAttempts", Profile.PasswordAttempts); cmd.Parameters.AddWithValue("@CurrentPasswordAttempts", Profile.CurrentPasswordAttempts); cmd.Parameters.AddWithValue("@Role", Profile.Role); cmd.Parameters.AddWithValue("@EmailToken", Profile.EmailToken); cmd.Parameters.AddWithValue("@DataServer", Profile.DataServer); await cmd.ExecuteNonQueryAsync(); } } public async Task DeleteAccount( int AccountID ) { using( MySqlConnection connection = GetConnection() ) { MySqlCommand cmd; connection.Open(); string command = @" DELETE FROM Account WHERE ID = @ID; "; cmd = new MySqlCommand( command, connection ); cmd.Parameters.AddWithValue("@ID", AccountID); await cmd.ExecuteNonQueryAsync(); } } } }