Impliment application

This commit is contained in:
2025-08-04 17:27:22 -07:00
parent 2d627733d7
commit 0a71162162
6 changed files with 285 additions and 4 deletions
@@ -0,0 +1,185 @@
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<Application[]> GetApplcationsFromAccount(int AccountID) {
List<Application> applications = new List<Application>();
using (MySqlConnection connection = GetConnection()) {
await connection.OpenAsync();
string command = @"
SELECT *
FROM JobApplication
WHERE AccountID = @AccountID
";
MySqlCommand cmd = new MySqlCommand(command, connection);
cmd.Parameters.AddWithValue("@AccountID", AccountID);
using (DbDataReader reader = await cmd.ExecuteReaderAsync()) {
while (await reader.ReadAsync()) {
int _id = reader.GetInt32("ID");
int _accountid = reader.GetInt32("AccountID");
int _resumeid = reader.GetInt32("ResumeID");
int _joblistingid = reader.GetInt32("JobListingID");
DateTime _dateapplied = reader.GetDateTime("DateApplied");
string _responsestatus = reader.GetString("ResponseStatus");
bool _hasbeenviewed = reader.GetBoolean("HasBeenViewed");
int _rating = reader.GetInt32("Rating");
string _notes = reader.GetString("Notes");
applications.Add(new Application() {
ID = _id,
AccountID = _accountid,
ResumeID = _resumeid,
JobListingID = _joblistingid,
DateApplied = _dateapplied,
ResponseStatus = _responsestatus,
HasBeenViewed = _hasbeenviewed,
Rating = _rating,
Notes = _notes
});
}
}
}
return applications.ToArray();
}
public async Task<Application[]> GetApplicationsFromJobListing(int JobListingID) {
List<Application> applications = new List<Application>();
using (MySqlConnection connection = GetConnection()) {
await connection.OpenAsync();
string command = @"
SELECT *
FROM JobApplication
WHERE JobListingID = @JobListingID
";
MySqlCommand cmd = new MySqlCommand(command, connection);
cmd.Parameters.AddWithValue("@JobListingID", JobListingID);
using (DbDataReader reader = await cmd.ExecuteReaderAsync()) {
while (await reader.ReadAsync()) {
int _id = reader.GetInt32("ID");
int _accountid = reader.GetInt32("AccountID");
int _resumeid = reader.GetInt32("ResumeID");
int _joblistingid = reader.GetInt32("JobListingID");
DateTime _dateapplied = reader.GetDateTime("DateApplied");
string _responsestatus = reader.GetString("ResponseStatus");
bool _hasbeenviewed = reader.GetBoolean("HasBeenViewed");
int _rating = reader.GetInt32("Rating");
string _notes = reader.GetString("Notes");
applications.Add(new Application() {
ID = _id,
AccountID = _accountid,
ResumeID = _resumeid,
JobListingID = _joblistingid,
DateApplied = _dateapplied,
ResponseStatus = _responsestatus,
HasBeenViewed = _hasbeenviewed,
Rating = _rating,
Notes = _notes
});
}
}
}
return applications.ToArray();
}
public async Task<Application?> GetApplication(int ApplicationID) {
Application? application = null;
using (MySqlConnection connection = GetConnection()) {
await connection.OpenAsync();
string command = @"
SELECT *
FROM JobApplication
WHERE ID = @ApplicationID
";
MySqlCommand cmd = new MySqlCommand(command, connection);
cmd.Parameters.AddWithValue("@ApplicationID", ApplicationID);
using (DbDataReader reader = await cmd.ExecuteReaderAsync()) {
while (await reader.ReadAsync()) {
int _id = reader.GetInt32("ID");
int _accountid = reader.GetInt32("AccountID");
int _resumeid = reader.GetInt32("ResumeID");
int _joblistingid = reader.GetInt32("JobListingID");
DateTime _dateapplied = reader.GetDateTime("DateApplied");
string _responsestatus = reader.GetString("ResponseStatus");
bool _hasbeenviewed = reader.GetBoolean("HasBeenViewed");
int _rating = reader.GetInt32("Rating");
string _notes = reader.GetString("Notes");
application = new Application() {
ID = _id,
AccountID = _accountid,
ResumeID = _resumeid,
JobListingID = _joblistingid,
DateApplied = _dateapplied,
ResponseStatus = _responsestatus,
HasBeenViewed = _hasbeenviewed,
Rating = _rating,
Notes = _notes
};
}
}
}
return application;
}
public async Task SetApplication(Application application) {
using (MySqlConnection connection = GetConnection()) {
await connection.OpenAsync();
string command = @"
INSERT INTO JobApplication
(ID,AccountID,ResumeID,JobListingID,DateApplied,ResponseStatus,HasBeenViewed,Rating,Notes)
VALUES
(@ID,@AccountID,@ResumeID,@JobListingID,@DateApplied,@ResponseStatus,@HasBeenViewed,@Rating,@Notes)
ON DUPLICATE KEY UPDATE
AccountID = @AccountID,
ResumeID = @ResumeID,
JobListingID = @JobListingID,
ResponseStatus = @ResponseStatus,
HasBeenViewed = @HasBeenViewed,
Rating = @Rating,
Notes = @Notes;
";
MySqlCommand cmd = new MySqlCommand(command, connection);
cmd.Parameters.AddWithValue("@ID", application.ID);
cmd.Parameters.AddWithValue("@AccountID", application.AccountID);
cmd.Parameters.AddWithValue("@ResumeID", application.ResumeID);
cmd.Parameters.AddWithValue("@JobListingID", application.JobListingID);
cmd.Parameters.AddWithValue("@DateApplied", DateTime.UtcNow);
cmd.Parameters.AddWithValue("@ResponseStatus", application.ResponseStatus);
cmd.Parameters.AddWithValue("@HasBeenViewed", application.HasBeenViewed);
cmd.Parameters.AddWithValue("@Rating", application.Rating);
cmd.Parameters.AddWithValue("@Notes", application.Notes);
await cmd.ExecuteNonQueryAsync();
}
}
public async Task DeleteApplication(int ApplicationID) {
using (MySqlConnection connection = GetConnection()) {
MySqlCommand cmd;
await connection.OpenAsync();
string command = @"
DELETE FROM JobApplication WHERE ID = @ID;
";
cmd = new MySqlCommand(command, connection);
cmd.Parameters.AddWithValue("@ID", ApplicationID);
await cmd.ExecuteNonQueryAsync();
}
}
}
}