working #28
@@ -119,19 +119,28 @@ namespace BoredCareers.Services.DatabaseService {
|
|||||||
using (var conn = GetConnection()) {
|
using (var conn = GetConnection()) {
|
||||||
await conn.OpenAsync();
|
await conn.OpenAsync();
|
||||||
|
|
||||||
// Set ResumeID on layer 1 nodes
|
// Set ResumeID on all nodes
|
||||||
int _ResumeID = await SetResume(conn, resume);
|
int _ResumeID = await SetResume(conn, resume);
|
||||||
if (resume.Millitary != null) { resume.Millitary.ResumeID = _ResumeID; }
|
if (resume.Millitary != null) {
|
||||||
foreach (ResumeExperience cur in resume.Experience) { cur.ResumeID = _ResumeID; }
|
resume.Millitary.ResumeID = _ResumeID;
|
||||||
|
foreach (ResumeMilitaryBullet cur in resume.Millitary.MillitaryBullets) {
|
||||||
|
cur.ResumeID = _ResumeID;
|
||||||
|
}
|
||||||
|
}
|
||||||
foreach (ResumeEducation cur in resume.Educations) { cur.ResumeID = _ResumeID; }
|
foreach (ResumeEducation cur in resume.Educations) { cur.ResumeID = _ResumeID; }
|
||||||
foreach (ResumeSkill cur in resume.Skills) { cur.ResumeID = _ResumeID; }
|
foreach (ResumeSkill cur in resume.Skills) { cur.ResumeID = _ResumeID; }
|
||||||
foreach (ResumeLanguage cur in resume.Languages) { cur.ResumeID = _ResumeID; }
|
foreach (ResumeLanguage cur in resume.Languages) { cur.ResumeID = _ResumeID; }
|
||||||
foreach (ResumeCertification cur in resume.Certification) { cur.ResumeID = _ResumeID; }
|
foreach (ResumeCertification cur in resume.Certification) { cur.ResumeID = _ResumeID; }
|
||||||
foreach (ResumeProject cur in resume.Projects) { cur.ResumeID = _ResumeID; }
|
foreach (ResumeProject cur in resume.Projects) { cur.ResumeID = _ResumeID; }
|
||||||
|
foreach (ResumeExperience cur in resume.Experience) {
|
||||||
|
cur.ResumeID = _ResumeID;
|
||||||
|
foreach (ResumeExperienceBullet us in cur.ExperienceBullets) {
|
||||||
|
us.ResumeID = _ResumeID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Async process all non child node SQL sets
|
||||||
Task[] tasks = [
|
Task[] tasks = [
|
||||||
SetResumeExperience(conn, resume.Experience),
|
|
||||||
SetResumeMilitary(conn, resume.Millitary),
|
|
||||||
SetResumeEducation(conn, resume.Educations),
|
SetResumeEducation(conn, resume.Educations),
|
||||||
SetResumeSkills(conn, resume.Skills),
|
SetResumeSkills(conn, resume.Skills),
|
||||||
SetResumeLanguages(conn, resume.Languages),
|
SetResumeLanguages(conn, resume.Languages),
|
||||||
@@ -140,17 +149,32 @@ namespace BoredCareers.Services.DatabaseService {
|
|||||||
];
|
];
|
||||||
await Task.WhenAll(tasks);
|
await Task.WhenAll(tasks);
|
||||||
|
|
||||||
List<ResumeExperienceBullet> bullets = new List<ResumeExperienceBullet>();
|
// Setup military task
|
||||||
foreach (ResumeExperience cur in resume.Experience) {
|
if (resume.Millitary != null) {
|
||||||
foreach (ResumeExperienceBullet bullet in cur.ExperienceBullets) {
|
ResumeMilitary militaryTask = await SetResumeMilitary(conn, resume.Millitary);
|
||||||
bullets.Add(bullet);
|
foreach (ResumeMilitaryBullet cur in resume.Millitary.MillitaryBullets) {
|
||||||
|
cur.ResumeMilitaryID = Convert.ToInt32(militaryTask.ID);
|
||||||
}
|
}
|
||||||
|
await SetResumeMilitaryBullets(conn, resume.Millitary.MillitaryBullets);
|
||||||
}
|
}
|
||||||
|
|
||||||
Task ResumeExperienceBulletTask = SetResumeExperienceBullets(ResumeExperienceBulletConnection, bullets.ToArray());
|
// Setup async process all experience tasks
|
||||||
Task ResumeMilitaryBulletTask = SetResumeMilitaryBullets(ResumeMilitaryBulletConnection, resume.Millitary.MillitaryBullets);
|
List<Task<ResumeExperience>> experienceTasks = new List<Task<ResumeExperience>>();
|
||||||
|
foreach (ResumeExperience cur in resume.Experience) {
|
||||||
|
experienceTasks.Add(SetResumeExperience(conn, cur));
|
||||||
|
}
|
||||||
|
await Task.WhenAll(experienceTasks);
|
||||||
|
|
||||||
return resume;
|
// Assuming they are returned in the same order they are sent
|
||||||
|
List<Task> experienceBulletTasks = new List<Task>();
|
||||||
|
for (int i = 0; i < experienceTasks.Count; i++) {
|
||||||
|
ResumeExperience self = await experienceTasks[i];
|
||||||
|
foreach (ResumeExperienceBullet cur in resume.Experience[i].ExperienceBullets) {
|
||||||
|
cur.ResumeExperienceID = Convert.ToInt32(self.ID);
|
||||||
|
experienceBulletTasks.Add(SetResumeExperienceBullets(conn, cur));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
await Task.WhenAll(experienceBulletTasks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -49,69 +49,63 @@ namespace BoredCareers.Services.DatabaseService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task SetResumeExperienceBullets(MySqlConnection connection, ResumeExperienceBullet[] bullets) {
|
public async Task SetResumeExperienceBullets(MySqlConnection connection, ResumeExperienceBullet bullet) {
|
||||||
foreach (ResumeExperienceBullet cur in bullets) {
|
string command = @"
|
||||||
string command = @"
|
INSERT INTO Resume
|
||||||
INSERT INTO Resume
|
(ID,ResumeID,ResumeExperienceID,JobFunction)
|
||||||
(ID,ResumeID,ResumeExperienceID,JobFunction)
|
VALUES
|
||||||
VALUES
|
(@ID,@ResumeID,@ResumeExperienceID,@JobFunction)
|
||||||
(@ID,@ResumeID,@ResumeExperienceID,@JobFunction)
|
ON DUPLICATE KEY UPDATE
|
||||||
ON DUPLICATE KEY UPDATE
|
ResumeID = @ResumeID,
|
||||||
ResumeID = @ResumeID,
|
ResumeExperienceID = @ResumeExperienceID,
|
||||||
ResumeExperienceID = @ResumeExperienceID,
|
JobFunction = @JobFunction;
|
||||||
JobFunction = @JobFunction;
|
";
|
||||||
";
|
|
||||||
|
|
||||||
MySqlCommand cmd = new MySqlCommand(command, connection);
|
MySqlCommand cmd = new MySqlCommand(command, connection);
|
||||||
cmd.Parameters.AddWithValue("@ID", cur.ID);
|
cmd.Parameters.AddWithValue("@ID", bullet.ID);
|
||||||
cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID);
|
cmd.Parameters.AddWithValue("@ResumeID", bullet.ResumeID);
|
||||||
cmd.Parameters.AddWithValue("@ResumeExperienceID", cur.ResumeExperienceID);
|
cmd.Parameters.AddWithValue("@ResumeExperienceID", bullet.ResumeExperienceID);
|
||||||
cmd.Parameters.AddWithValue("@JobFunction", cur.JobFunction);
|
cmd.Parameters.AddWithValue("@JobFunction", bullet.JobFunction);
|
||||||
|
|
||||||
await cmd.ExecuteNonQueryAsync();
|
await cmd.ExecuteNonQueryAsync();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<int> SetResumeExperience(MySqlConnection connection, ResumeExperience[] experiences) {
|
public async Task<ResumeExperience> SetResumeExperience(MySqlConnection connection, ResumeExperience experiences) {
|
||||||
foreach (ResumeExperience cur in experiences) {
|
string command = @"
|
||||||
string command = @"
|
INSERT INTO Resume
|
||||||
INSERT INTO Resume
|
(ID,ResumeID,JobTitle,Company,PostalCode,Country,StateOrRegion,City,DateStarted,StillEmployed,DateEnded)
|
||||||
(ID,ResumeID,JobTitle,Company,PostalCode,Country,StateOrRegion,City,DateStarted,StillEmployed,DateEnded)
|
VALUES
|
||||||
VALUES
|
(@ID,@ResumeID,@JobTitle,@Company,@PostalCode,@Country,@StateOrRegion,@City,@DateStarted,@StillEmployed,@DateEnded)
|
||||||
(@ID,@ResumeID,@JobTitle,@Company,@PostalCode,@Country,@StateOrRegion,@City,@DateStarted,@StillEmployed,@DateEnded)
|
ON DUPLICATE KEY UPDATE
|
||||||
ON DUPLICATE KEY UPDATE
|
ResumeID = @ResumeID,
|
||||||
ResumeID = @ResumeID,
|
JobTitle = @JobTitle,
|
||||||
JobTitle = @JobTitle,
|
Company = @Company,
|
||||||
Company = @Company,
|
PostalCode = @PostalCode,
|
||||||
PostalCode = @PostalCode,
|
Country = @Country,
|
||||||
Country = @Country,
|
StateOrRegion = @StateOrRegion,
|
||||||
StateOrRegion = @StateOrRegion,
|
City = @City,
|
||||||
City = @City,
|
DateStarted = @DateStarted,
|
||||||
DateStarted = @DateStarted,
|
StillEmployed = @StillEmployed,
|
||||||
StillEmployed = @StillEmployed,
|
DateEnded = @DateEnded;
|
||||||
DateEnded = @DateEnded;
|
|
||||||
|
|
||||||
SELECT LAST_INSERT_ID();
|
SELECT LAST_INSERT_ID();
|
||||||
";
|
";
|
||||||
|
|
||||||
MySqlCommand cmd = new MySqlCommand(command, connection);
|
MySqlCommand cmd = new MySqlCommand(command, connection);
|
||||||
cmd.Parameters.AddWithValue("@ID", cur.ID);
|
cmd.Parameters.AddWithValue("@ID", experiences.ID);
|
||||||
cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID);
|
cmd.Parameters.AddWithValue("@ResumeID", experiences.ResumeID);
|
||||||
cmd.Parameters.AddWithValue("@JobTitle", cur.JobTitle);
|
cmd.Parameters.AddWithValue("@JobTitle", experiences.JobTitle);
|
||||||
cmd.Parameters.AddWithValue("@Company", cur.Company);
|
cmd.Parameters.AddWithValue("@Company", experiences.Company);
|
||||||
cmd.Parameters.AddWithValue("@PostalCode", cur.PostalCode);
|
cmd.Parameters.AddWithValue("@PostalCode", experiences.PostalCode);
|
||||||
cmd.Parameters.AddWithValue("@DateStarted", cur.DateStarted.ToUniversalTime());
|
cmd.Parameters.AddWithValue("@DateStarted", experiences.DateStarted.ToUniversalTime());
|
||||||
cmd.Parameters.AddWithValue("@StillEmployed", cur.StillEmployed);
|
cmd.Parameters.AddWithValue("@StillEmployed", experiences.StillEmployed);
|
||||||
cmd.Parameters.AddWithValue("@DateEnded", cur.DateEnded.ToUniversalTime());
|
cmd.Parameters.AddWithValue("@DateEnded", experiences.DateEnded.ToUniversalTime());
|
||||||
object? result = await cmd.ExecuteScalarAsync();
|
object? result = await cmd.ExecuteScalarAsync();
|
||||||
|
|
||||||
if (cur.ID != null && cur.ID != 0) {
|
if (experiences.ID == null) {
|
||||||
return Convert.ToInt32(cur.ID);
|
experiences.ID = Convert.ToInt32(result);
|
||||||
} else {
|
|
||||||
cmd.CommandText = "";
|
|
||||||
return Convert.ToInt32(result);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
return experiences;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task SetResumeMilitaryBullets(MySqlConnection connection, ResumeMilitaryBullet[] bullets) {
|
public async Task SetResumeMilitaryBullets(MySqlConnection connection, ResumeMilitaryBullet[] bullets) {
|
||||||
@@ -139,7 +133,7 @@ namespace BoredCareers.Services.DatabaseService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<int> SetResumeMilitary(MySqlConnection connection, ResumeMilitary? military) {
|
public async Task<ResumeMilitary> SetResumeMilitary(MySqlConnection connection, ResumeMilitary? military) {
|
||||||
if (military != null) {
|
if (military != null) {
|
||||||
string command = @"
|
string command = @"
|
||||||
INSERT INTO Resume
|
INSERT INTO Resume
|
||||||
@@ -167,13 +161,12 @@ namespace BoredCareers.Services.DatabaseService {
|
|||||||
cmd.Parameters.AddWithValue("@DateEnded", military.DateEnded.ToUniversalTime());
|
cmd.Parameters.AddWithValue("@DateEnded", military.DateEnded.ToUniversalTime());
|
||||||
object? result = await cmd.ExecuteScalarAsync();
|
object? result = await cmd.ExecuteScalarAsync();
|
||||||
|
|
||||||
if (military.ID != null && military.ID != 0) {
|
if (military.ID == null) {
|
||||||
return Convert.ToInt32(military.ID);
|
military.ID = Convert.ToInt32(result);
|
||||||
} else {
|
|
||||||
cmd.CommandText = "";
|
|
||||||
return Convert.ToInt32(result);
|
|
||||||
}
|
}
|
||||||
|
return military;
|
||||||
}
|
}
|
||||||
|
return new ResumeMilitary();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task SetResumeEducation(MySqlConnection connection, ResumeEducation[] educations) {
|
public async Task SetResumeEducation(MySqlConnection connection, ResumeEducation[] educations) {
|
||||||
|
|||||||
Reference in New Issue
Block a user