Start work on fixing DbDriver
This commit is contained in:
@@ -50,6 +50,7 @@ Client:
|
|||||||
|
|
||||||
resume/editor:
|
resume/editor:
|
||||||
Not fully tested yet
|
Not fully tested yet
|
||||||
|
Veteran needs to be moved from the Resume/millitary into the Resume so it doesnt have to save the whole millitary object to the db if not needed
|
||||||
|
|
||||||
Company:
|
Company:
|
||||||
Need to impliment Add employee
|
Need to impliment Add employee
|
||||||
|
|||||||
@@ -58,101 +58,47 @@ namespace BoredCareers.Services.DatabaseService {
|
|||||||
return resumes.ToArray();
|
return resumes.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task<DbDataReader> ExecuteReaderAsync(MySqlConnection conn, string query, int resumeId) {
|
||||||
|
var cmd = new MySqlCommand(query, conn);
|
||||||
|
cmd.Parameters.AddWithValue("@ResumeID", resumeId);
|
||||||
|
return await cmd.ExecuteReaderAsync();
|
||||||
|
}
|
||||||
|
|
||||||
public async Task<Resume?> GetResume(int ResumeID) {
|
public async Task<Resume?> GetResume(int ResumeID) {
|
||||||
// Open connections for multi-threaded request
|
using (var conn = GetConnection()) {
|
||||||
MySqlConnection resumeConnection = GetConnection();
|
await conn.OpenAsync();
|
||||||
MySqlConnection ResumeExperienceConnection = GetConnection();
|
|
||||||
MySqlConnection ResumeExperienceBulletConnection = GetConnection();
|
|
||||||
MySqlConnection ResumeMilitaryConnection = GetConnection();
|
|
||||||
MySqlConnection ResumeMilitaryBulletConnection = GetConnection();
|
|
||||||
MySqlConnection ResumeEducationConnection = GetConnection();
|
|
||||||
MySqlConnection ResumeSkillConnection = GetConnection();
|
|
||||||
MySqlConnection ResumeLanguageConnection = GetConnection();
|
|
||||||
MySqlConnection ResumeCertificationConnection = GetConnection();
|
|
||||||
MySqlConnection ResumeProjectConnection = GetConnection();
|
|
||||||
|
|
||||||
// Open the connections
|
Resume? resume = await GetResume(await ExecuteReaderAsync(conn, "SELECT * FROM Resume WHERE ID = @ResumeID;", ResumeID));
|
||||||
Task resumeopen = resumeConnection.OpenAsync();
|
if (resume == null) { return null; }
|
||||||
Task resumeexperienceopen = ResumeExperienceConnection.OpenAsync();
|
|
||||||
Task resumeexperiencebulletopen = ResumeExperienceBulletConnection.OpenAsync();
|
|
||||||
Task resumemilitaryopen = ResumeMilitaryConnection.OpenAsync();
|
|
||||||
Task resumemilitarybulletopen = ResumeMilitaryBulletConnection.OpenAsync();
|
|
||||||
Task resumeeducationopen = ResumeEducationConnection.OpenAsync();
|
|
||||||
Task resumeskillopen = ResumeSkillConnection.OpenAsync();
|
|
||||||
Task resumelanguageopen = ResumeLanguageConnection.OpenAsync();
|
|
||||||
Task resumecertifcationopen = ResumeCertificationConnection.OpenAsync();
|
|
||||||
Task resumeprojectopen = ResumeProjectConnection.OpenAsync();
|
|
||||||
|
|
||||||
// Wait for all the connections to open
|
Task<DbDataReader>[] tasks = [
|
||||||
await Task.WhenAll(resumeopen, resumeexperienceopen, resumeexperiencebulletopen, resumemilitaryopen, resumemilitarybulletopen,
|
ExecuteReaderAsync(conn, "SELECT * FROM ResumeExperience WHERE ResumeID = @ResumeID;", ResumeID),
|
||||||
resumeeducationopen, resumeskillopen, resumelanguageopen, resumecertifcationopen, resumeprojectopen);
|
ExecuteReaderAsync(conn, "SELECT * FROM ResumeExperienceBullet WHERE ResumeID = @ResumeID;", ResumeID),
|
||||||
|
ExecuteReaderAsync(conn, "SELECT * FROM ResumeMilitary WHERE ResumeID = @ResumeID;", ResumeID),
|
||||||
|
ExecuteReaderAsync(conn, "SELECT * FROM ResumeMilitaryBullet WHERE ResumeID = @ResumeID;", ResumeID),
|
||||||
|
ExecuteReaderAsync(conn, "SELECT * FROM ResumeEducation WHERE ResumeID = @ResumeID;", ResumeID),
|
||||||
|
ExecuteReaderAsync(conn, "SELECT * FROM ResumeSkill WHERE ResumeID = @ResumeID;", ResumeID),
|
||||||
|
ExecuteReaderAsync(conn, "SELECT * FROM ResumeLanguage WHERE ResumeID = @ResumeID;", ResumeID),
|
||||||
|
ExecuteReaderAsync(conn, "SELECT * FROM ResumeCertification WHERE ResumeID = @ResumeID;", ResumeID),
|
||||||
|
ExecuteReaderAsync(conn, "SELECT * FROM ResumeProject WHERE ResumeID = @ResumeID;", ResumeID),
|
||||||
|
];
|
||||||
|
await Task.WhenAll(tasks);
|
||||||
|
|
||||||
// Setup the commands for the connections
|
ResumeExperience[] experience = await GetResumeExperience(await tasks[0]);
|
||||||
MySqlCommand resumeCommand = new MySqlCommand("SELECT * FROM Resume WHERE ID = @ResumeID;", resumeConnection);
|
ResumeExperienceBullet[] bullets = await GetResumeExperienceBullets(await tasks[1]);
|
||||||
MySqlCommand ResumeExperienceCommand = new MySqlCommand("SELECT * FROM ResumeExperience WHERE ResumeID = @ResumeID;", ResumeExperienceConnection);
|
ResumeMilitary? military = await GetResumeMilitary(await tasks[2]);
|
||||||
MySqlCommand ResumeExperienceBulletCommand = new MySqlCommand("SELECT * FROM ResumeExperienceBullet WHERE ResumeID = @ResumeID;", ResumeExperienceBulletConnection);
|
ResumeMilitaryBullet[] militaryBullets = await GetResumeMilitaryBullets(await tasks[3]);
|
||||||
MySqlCommand ResumeMilitaryCommand = new MySqlCommand("SELECT * FROM ResumeMilitary WHERE ResumeID = @ResumeID;", ResumeMilitaryConnection);
|
ResumeEducation[] education = await GetResumeEducation(await tasks[4]);
|
||||||
MySqlCommand ResumeMilitaryBulletCommand = new MySqlCommand("SELECT * FROM ResumeMilitaryBullet WHERE ResumeID = @ResumeID", ResumeMilitaryBulletConnection);
|
ResumeSkill[] skills = await GetResumeSkills(await tasks[5]);
|
||||||
MySqlCommand ResumeEducationCommand = new MySqlCommand("SELECT * FROM ResumeEducation WHERE ResumeID = @ResumeID;", ResumeEducationConnection);
|
ResumeLanguage[] languages = await GetResumeLanguages(await tasks[6]);
|
||||||
MySqlCommand ResumeSkillCommand = new MySqlCommand("SELECT * FROM ResumeSkill WHERE ResumeID = @ResumeID;", ResumeSkillConnection);
|
ResumeCertification[] certs = await GetResumeCertification(await tasks[7]);
|
||||||
MySqlCommand ResumeLanguageCommand = new MySqlCommand("SELECT * FROM ResumeLanguage WHERE ResumeID = @ResumeID;", ResumeLanguageConnection);
|
ResumeProject[] projects = await GetResumeProjects(await tasks[8]);
|
||||||
MySqlCommand ResumeCertificationCommand = new MySqlCommand("SELECT * FROM ResumeCertification WHERE ResumeID = @ResumeID;", ResumeCertificationConnection);
|
|
||||||
MySqlCommand ResumeProjectCommand = new MySqlCommand("SELECT * FROM ResumeProject WHERE ResumeID = @ResumeID;", ResumeProjectConnection);
|
|
||||||
|
|
||||||
// Add parameters to the commands
|
Dictionary<int, ResumeExperienceBullet[]> groupedExperienceBullets = bullets.GroupBy(b => b.ResumeExperienceID).ToDictionary(g => g.Key, g => g.ToArray());
|
||||||
resumeCommand.Parameters.AddWithValue("@ResumeID", ResumeID);
|
foreach (var exp in experience) {
|
||||||
ResumeExperienceCommand.Parameters.AddWithValue("@ResumeID", ResumeID);
|
exp.ExperienceBullets = groupedExperienceBullets.TryGetValue(Convert.ToInt32(exp.ID), out var b) ? b : Array.Empty<ResumeExperienceBullet>();
|
||||||
ResumeExperienceBulletCommand.Parameters.AddWithValue("@ResumeID", ResumeID);
|
|
||||||
ResumeMilitaryCommand.Parameters.AddWithValue("@ResumeID", ResumeID);
|
|
||||||
ResumeMilitaryBulletCommand.Parameters.AddWithValue("@ResumeID", ResumeID);
|
|
||||||
ResumeEducationCommand.Parameters.AddWithValue("@ResumeID", ResumeID);
|
|
||||||
ResumeSkillCommand.Parameters.AddWithValue("@ResumeID", ResumeID);
|
|
||||||
ResumeLanguageCommand.Parameters.AddWithValue("@ResumeID", ResumeID);
|
|
||||||
ResumeCertificationCommand.Parameters.AddWithValue("@ResumeID", ResumeID);
|
|
||||||
ResumeProjectCommand.Parameters.AddWithValue("@ResumeID", ResumeID);
|
|
||||||
|
|
||||||
// Run the commands
|
|
||||||
Task<DbDataReader> ResumeReader = resumeCommand.ExecuteReaderAsync();
|
|
||||||
Task<DbDataReader> ResumeExperienceReader = ResumeExperienceCommand.ExecuteReaderAsync();
|
|
||||||
Task<DbDataReader> ResumeExperienceBulletReader = ResumeExperienceBulletCommand.ExecuteReaderAsync();
|
|
||||||
Task<DbDataReader> ResumeMilitaryReader = ResumeMilitaryCommand.ExecuteReaderAsync();
|
|
||||||
Task<DbDataReader> ResumeMilitaryBulletReader = ResumeMilitaryBulletCommand.ExecuteReaderAsync();
|
|
||||||
Task<DbDataReader> ResumeEducationReader = ResumeEducationCommand.ExecuteReaderAsync();
|
|
||||||
Task<DbDataReader> ResumeSkillReader = ResumeSkillCommand.ExecuteReaderAsync();
|
|
||||||
Task<DbDataReader> ResumeLanguageReader = ResumeLanguageCommand.ExecuteReaderAsync();
|
|
||||||
Task<DbDataReader> ResumeCertificationReader = ResumeCertificationCommand.ExecuteReaderAsync();
|
|
||||||
Task<DbDataReader> ResumeProjectReader = ResumeProjectCommand.ExecuteReaderAsync();
|
|
||||||
|
|
||||||
// Wait for all the commands to process
|
|
||||||
await Task.WhenAll(ResumeReader, ResumeExperienceReader, ResumeExperienceBulletReader, ResumeMilitaryReader, ResumeMilitaryBulletReader,
|
|
||||||
ResumeEducationReader, ResumeSkillReader, ResumeLanguageReader, ResumeCertificationReader, ResumeProjectReader);
|
|
||||||
|
|
||||||
// Get Resume
|
|
||||||
Resume? resume = await GetResume( await ResumeReader );
|
|
||||||
if (resume != null) {
|
|
||||||
|
|
||||||
// Get Resume Parts
|
|
||||||
ResumeExperience[] experience = await GetResumeExperience(await ResumeExperienceReader);
|
|
||||||
ResumeExperienceBullet[] experienceBullets = await GetResumeExperienceBullets(await ResumeExperienceBulletReader);
|
|
||||||
ResumeMilitary? military = await GetResumeMilitary(await ResumeMilitaryReader);
|
|
||||||
ResumeMilitaryBullet[] militaryBullets = await GetResumeMilitaryBullets(await ResumeMilitaryBulletReader);
|
|
||||||
ResumeEducation[] education = await GetResumeEducation(await ResumeEducationReader);
|
|
||||||
ResumeSkill[] skills = await GetResumeSkills(await ResumeSkillReader);
|
|
||||||
ResumeLanguage[] languages = await GetResumeLanguages(await ResumeLanguageReader);
|
|
||||||
ResumeCertification[] certs = await GetResumeCertification(await ResumeCertificationReader);
|
|
||||||
ResumeProject[] projects = await GetResumeProjects(await ResumeProjectReader);
|
|
||||||
|
|
||||||
// Split into grouped lists and add to experience
|
|
||||||
Dictionary<int, ResumeExperienceBullet[]> groupedExperienceBullets = experienceBullets.GroupBy(b => b.ResumeExperienceID).ToDictionary(g => g.Key, g => g.ToArray());
|
|
||||||
foreach (ResumeExperience cur in experience) {
|
|
||||||
cur.ExperienceBullets = groupedExperienceBullets[Convert.ToInt32(cur.ID)];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add the parts to the resume
|
|
||||||
if (military != null) {
|
|
||||||
military.MillitaryBullets = militaryBullets;
|
|
||||||
resume.Millitary = military;
|
|
||||||
}
|
|
||||||
resume.Experience = experience;
|
resume.Experience = experience;
|
||||||
resume.Educations = education;
|
resume.Educations = education;
|
||||||
resume.Skills = skills;
|
resume.Skills = skills;
|
||||||
@@ -160,63 +106,52 @@ namespace BoredCareers.Services.DatabaseService {
|
|||||||
resume.Certification = certs;
|
resume.Certification = certs;
|
||||||
resume.Projects = projects;
|
resume.Projects = projects;
|
||||||
|
|
||||||
|
if (military != null) {
|
||||||
|
military.MillitaryBullets = militaryBullets;
|
||||||
|
resume.Millitary = military;
|
||||||
|
}
|
||||||
|
|
||||||
return resume;
|
return resume;
|
||||||
}
|
}
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task SetResume(Resume resume) {
|
public async Task SetResume(Resume resume) {
|
||||||
|
using (var conn = GetConnection()) {
|
||||||
|
await conn.OpenAsync();
|
||||||
|
|
||||||
// Open connections for multi-threaded request
|
// Set ResumeID on layer 1 nodes
|
||||||
MySqlConnection resumeConnection = GetConnection();
|
int _ResumeID = await SetResume(conn, resume);
|
||||||
MySqlConnection ResumeExperienceConnection = GetConnection();
|
if (resume.Millitary != null) { resume.Millitary.ResumeID = _ResumeID; }
|
||||||
MySqlConnection ResumeExperienceBulletConnection = GetConnection();
|
foreach (ResumeExperience cur in resume.Experience) { cur.ResumeID = _ResumeID; }
|
||||||
MySqlConnection ResumeMilitaryConnection = GetConnection();
|
foreach (ResumeEducation cur in resume.Educations) { cur.ResumeID = _ResumeID; }
|
||||||
MySqlConnection ResumeMilitaryBulletConnection = GetConnection();
|
foreach (ResumeSkill cur in resume.Skills) { cur.ResumeID = _ResumeID; }
|
||||||
MySqlConnection ResumeEducationConnection = GetConnection();
|
foreach (ResumeLanguage cur in resume.Languages) { cur.ResumeID = _ResumeID; }
|
||||||
MySqlConnection ResumeSkillConnection = GetConnection();
|
foreach (ResumeCertification cur in resume.Certification) { cur.ResumeID = _ResumeID; }
|
||||||
MySqlConnection ResumeLanguageConnection = GetConnection();
|
foreach (ResumeProject cur in resume.Projects) { cur.ResumeID = _ResumeID; }
|
||||||
MySqlConnection ResumeCertificationConnection = GetConnection();
|
|
||||||
MySqlConnection ResumeProjectConnection = GetConnection();
|
|
||||||
|
|
||||||
// Open the connections
|
Task[] tasks = [
|
||||||
Task resumeopen = resumeConnection.OpenAsync();
|
SetResumeExperience(conn, resume.Experience),
|
||||||
Task resumeexperienceopen = ResumeExperienceConnection.OpenAsync();
|
SetResumeMilitary(conn, resume.Millitary),
|
||||||
Task resumeexperiencebulletopen = ResumeExperienceBulletConnection.OpenAsync();
|
SetResumeEducation(conn, resume.Educations),
|
||||||
Task resumemilitaryopen = ResumeMilitaryConnection.OpenAsync();
|
SetResumeSkills(conn, resume.Skills),
|
||||||
Task resumemilitarybulletopen = ResumeMilitaryBulletConnection.OpenAsync();
|
SetResumeLanguages(conn, resume.Languages),
|
||||||
Task resumeeducationopen = ResumeEducationConnection.OpenAsync();
|
SetResumeCertification(conn, resume.Certification),
|
||||||
Task resumeskillopen = ResumeSkillConnection.OpenAsync();
|
SetResumeProjects(conn, resume.Projects)
|
||||||
Task resumelanguageopen = ResumeLanguageConnection.OpenAsync();
|
];
|
||||||
Task resumecertifcationopen = ResumeCertificationConnection.OpenAsync();
|
await Task.WhenAll(tasks);
|
||||||
Task resumeprojectopen = ResumeProjectConnection.OpenAsync();
|
|
||||||
|
|
||||||
// Wait for all the connections to open
|
List<ResumeExperienceBullet> bullets = new List<ResumeExperienceBullet>();
|
||||||
await Task.WhenAll(resumeopen, resumeexperienceopen, resumeexperiencebulletopen, resumemilitaryopen, resumemilitarybulletopen,
|
foreach (ResumeExperience cur in resume.Experience) {
|
||||||
resumeeducationopen, resumeskillopen, resumelanguageopen, resumecertifcationopen, resumeprojectopen);
|
foreach (ResumeExperienceBullet bullet in cur.ExperienceBullets) {
|
||||||
|
bullets.Add(bullet);
|
||||||
// Get all the experience bullets and run all the updates
|
}
|
||||||
List<ResumeExperienceBullet> bullets = new List<ResumeExperienceBullet>();
|
|
||||||
foreach (ResumeExperience cur in resume.Experience) {
|
|
||||||
foreach (ResumeExperienceBullet bullet in cur.ExperienceBullets) {
|
|
||||||
bullets.Add(bullet);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Task ResumeExperienceBulletTask = SetResumeExperienceBullets(ResumeExperienceBulletConnection, bullets.ToArray());
|
||||||
|
Task ResumeMilitaryBulletTask = SetResumeMilitaryBullets(ResumeMilitaryBulletConnection, resume.Millitary.MillitaryBullets);
|
||||||
|
|
||||||
|
return resume;
|
||||||
}
|
}
|
||||||
Task ResumeExperienceBulletTask = SetResumeExperienceBullets(ResumeExperienceBulletConnection, bullets.ToArray());
|
|
||||||
Task ResumeTask = SetResume(resumeConnection, resume);
|
|
||||||
Task ResumeExperienceTask = SetResumeExperience(ResumeExperienceConnection, resume.Experience);
|
|
||||||
Task ResumeMilitaryTask = SetResumeMilitary(ResumeMilitaryConnection, resume.Millitary);
|
|
||||||
Task ResumeMilitaryBulletTask = SetResumeMilitaryBullets(ResumeMilitaryBulletConnection, resume.Millitary.MillitaryBullets);
|
|
||||||
Task ResumeEducationTask = SetResumeEducation(ResumeEducationConnection, resume.Educations);
|
|
||||||
Task ResumeSkllTask = SetResumeSkills(ResumeSkillConnection, resume.Skills);
|
|
||||||
Task ResumeLanguageTask = SetResumeLanguages(ResumeLanguageConnection, resume.Languages);
|
|
||||||
Task ResumeCertTask = SetResumeCertification(ResumeCertificationConnection, resume.Certification);
|
|
||||||
Task ResumeProjectTask = SetResumeProjects(ResumeProjectConnection, resume.Projects);
|
|
||||||
|
|
||||||
// Allow update to finish before closing process
|
|
||||||
await Task.WhenAll(ResumeTask, ResumeExperienceTask, ResumeExperienceBulletTask, ResumeMilitaryTask, ResumeMilitaryBulletTask,
|
|
||||||
ResumeEducationTask, ResumeSkllTask, ResumeLanguageTask, ResumeCertTask, ResumeProjectTask);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task DeleteResume( int ResumeID ) {
|
public async Task DeleteResume( int ResumeID ) {
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ using MySql.Data.MySqlClient;
|
|||||||
namespace BoredCareers.Services.DatabaseService {
|
namespace BoredCareers.Services.DatabaseService {
|
||||||
public partial class DatabaseService {
|
public partial class DatabaseService {
|
||||||
|
|
||||||
public async Task SetResume(MySqlConnection connection, Resume resume) {
|
public async Task<int> SetResume(MySqlConnection connection, Resume resume) {
|
||||||
string command = @"
|
string command = @"
|
||||||
INSERT INTO Resume
|
INSERT INTO Resume
|
||||||
(ID,AccountID,Title,Name,Field,Email,PhoneNumber,PostalCode,Country,StateOrRegion,City,IsActive)
|
(ID,AccountID,Title,Name,Field,Email,PhoneNumber,PostalCode,Country,StateOrRegion,City,IsActive)
|
||||||
@@ -22,6 +22,8 @@ namespace BoredCareers.Services.DatabaseService {
|
|||||||
StateOrRegion = @StateOrRegion,
|
StateOrRegion = @StateOrRegion,
|
||||||
City = @City,
|
City = @City,
|
||||||
IsActive = @IsActive;
|
IsActive = @IsActive;
|
||||||
|
|
||||||
|
SELECT LAST_INSERT_ID();
|
||||||
";
|
";
|
||||||
|
|
||||||
MySqlCommand cmd = new MySqlCommand(command, connection);
|
MySqlCommand cmd = new MySqlCommand(command, connection);
|
||||||
@@ -37,8 +39,14 @@ namespace BoredCareers.Services.DatabaseService {
|
|||||||
cmd.Parameters.AddWithValue("@StateOrRegion", resume.StateOrRegion);
|
cmd.Parameters.AddWithValue("@StateOrRegion", resume.StateOrRegion);
|
||||||
cmd.Parameters.AddWithValue("@City", resume.City);
|
cmd.Parameters.AddWithValue("@City", resume.City);
|
||||||
cmd.Parameters.AddWithValue("@IsActive", resume.IsActive);
|
cmd.Parameters.AddWithValue("@IsActive", resume.IsActive);
|
||||||
|
object? result = await cmd.ExecuteScalarAsync();
|
||||||
|
|
||||||
await cmd.ExecuteNonQueryAsync();
|
if (resume.ID != null && resume.ID != 0) {
|
||||||
|
return Convert.ToInt32(resume.ID);
|
||||||
|
} else {
|
||||||
|
cmd.CommandText = "";
|
||||||
|
return Convert.ToInt32(result);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task SetResumeExperienceBullets(MySqlConnection connection, ResumeExperienceBullet[] bullets) {
|
public async Task SetResumeExperienceBullets(MySqlConnection connection, ResumeExperienceBullet[] bullets) {
|
||||||
@@ -64,7 +72,7 @@ namespace BoredCareers.Services.DatabaseService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task SetResumeExperience(MySqlConnection connection, ResumeExperience[] experiences) {
|
public async Task<int> SetResumeExperience(MySqlConnection connection, ResumeExperience[] experiences) {
|
||||||
foreach (ResumeExperience cur in experiences) {
|
foreach (ResumeExperience cur in experiences) {
|
||||||
string command = @"
|
string command = @"
|
||||||
INSERT INTO Resume
|
INSERT INTO Resume
|
||||||
@@ -82,6 +90,8 @@ namespace BoredCareers.Services.DatabaseService {
|
|||||||
DateStarted = @DateStarted,
|
DateStarted = @DateStarted,
|
||||||
StillEmployed = @StillEmployed,
|
StillEmployed = @StillEmployed,
|
||||||
DateEnded = @DateEnded;
|
DateEnded = @DateEnded;
|
||||||
|
|
||||||
|
SELECT LAST_INSERT_ID();
|
||||||
";
|
";
|
||||||
|
|
||||||
MySqlCommand cmd = new MySqlCommand(command, connection);
|
MySqlCommand cmd = new MySqlCommand(command, connection);
|
||||||
@@ -93,8 +103,14 @@ namespace BoredCareers.Services.DatabaseService {
|
|||||||
cmd.Parameters.AddWithValue("@DateStarted", cur.DateStarted.ToUniversalTime());
|
cmd.Parameters.AddWithValue("@DateStarted", cur.DateStarted.ToUniversalTime());
|
||||||
cmd.Parameters.AddWithValue("@StillEmployed", cur.StillEmployed);
|
cmd.Parameters.AddWithValue("@StillEmployed", cur.StillEmployed);
|
||||||
cmd.Parameters.AddWithValue("@DateEnded", cur.DateEnded.ToUniversalTime());
|
cmd.Parameters.AddWithValue("@DateEnded", cur.DateEnded.ToUniversalTime());
|
||||||
|
object? result = await cmd.ExecuteScalarAsync();
|
||||||
|
|
||||||
await cmd.ExecuteNonQueryAsync();
|
if (cur.ID != null && cur.ID != 0) {
|
||||||
|
return Convert.ToInt32(cur.ID);
|
||||||
|
} else {
|
||||||
|
cmd.CommandText = "";
|
||||||
|
return Convert.ToInt32(result);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -123,33 +139,41 @@ namespace BoredCareers.Services.DatabaseService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task SetResumeMilitary(MySqlConnection connection, ResumeMilitary military) {
|
public async Task<int> SetResumeMilitary(MySqlConnection connection, ResumeMilitary? military) {
|
||||||
string command = @"
|
if (military != null) {
|
||||||
INSERT INTO Resume
|
string command = @"
|
||||||
(ID,ResumeID,Veteran,Country,Rank,DateStarted,StillServing,DateEnded)
|
INSERT INTO Resume
|
||||||
VALUES
|
(ID,ResumeID,Country,Rank,DateStarted,StillServing,DateEnded)
|
||||||
(@ID,@ResumeID,@Veteran,@Country,@Rank,@DateStarted,@StillServing,@DateEnded)
|
VALUES
|
||||||
ON DUPLICATE KEY UPDATE
|
(@ID,@ResumeID,@Country,@Rank,@DateStarted,@StillServing,@DateEnded)
|
||||||
ResumeID = @ResumeID,
|
ON DUPLICATE KEY UPDATE
|
||||||
Veteran = @Veteran,
|
ResumeID = @ResumeID,
|
||||||
Country = @Country,
|
Country = @Country,
|
||||||
Rank = @Rank,
|
Rank = @Rank,
|
||||||
DateStarted = @DateStarted,
|
DateStarted = @DateStarted,
|
||||||
StillServing = @StillServing,
|
StillServing = @StillServing,
|
||||||
DateEnded = @DateEnded;
|
DateEnded = @DateEnded;
|
||||||
";
|
|
||||||
|
|
||||||
MySqlCommand cmd = new MySqlCommand(command, connection);
|
SELECT LAST_INSERT_ID();
|
||||||
cmd.Parameters.AddWithValue("@ID", military.ID);
|
";
|
||||||
cmd.Parameters.AddWithValue("@ResumeID", military.ResumeID);
|
|
||||||
cmd.Parameters.AddWithValue("@Veteran", military.Veteran);
|
|
||||||
cmd.Parameters.AddWithValue("@Country", military.Country);
|
|
||||||
cmd.Parameters.AddWithValue("@Rank", military.Rank);
|
|
||||||
cmd.Parameters.AddWithValue("@DateStarted", military.DateStarted.ToUniversalTime());
|
|
||||||
cmd.Parameters.AddWithValue("@StillServing", military.StillServing);
|
|
||||||
cmd.Parameters.AddWithValue("@DateEnded", military.DateEnded.ToUniversalTime());
|
|
||||||
|
|
||||||
await cmd.ExecuteNonQueryAsync();
|
MySqlCommand cmd = new MySqlCommand(command, connection);
|
||||||
|
cmd.Parameters.AddWithValue("@ID", military.ID);
|
||||||
|
cmd.Parameters.AddWithValue("@ResumeID", military.ResumeID);
|
||||||
|
cmd.Parameters.AddWithValue("@Country", military.Country);
|
||||||
|
cmd.Parameters.AddWithValue("@Rank", military.Rank);
|
||||||
|
cmd.Parameters.AddWithValue("@DateStarted", military.DateStarted.ToUniversalTime());
|
||||||
|
cmd.Parameters.AddWithValue("@StillServing", military.StillServing);
|
||||||
|
cmd.Parameters.AddWithValue("@DateEnded", military.DateEnded.ToUniversalTime());
|
||||||
|
object? result = await cmd.ExecuteScalarAsync();
|
||||||
|
|
||||||
|
if (military.ID != null && military.ID != 0) {
|
||||||
|
return Convert.ToInt32(military.ID);
|
||||||
|
} else {
|
||||||
|
cmd.CommandText = "";
|
||||||
|
return Convert.ToInt32(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task SetResumeEducation(MySqlConnection connection, ResumeEducation[] educations) {
|
public async Task SetResumeEducation(MySqlConnection connection, ResumeEducation[] educations) {
|
||||||
|
|||||||
Reference in New Issue
Block a user