- @for(cert of resume.certification; track cert.trackUUID){
+ @for(cert of resume.certifications; track cert.trackUUID){
diff --git a/src/Client/src/app/pages/resumes/editor/editor.component.ts b/src/Client/src/app/pages/resumes/editor/editor.component.ts
index f7aa2f0..925131e 100644
--- a/src/Client/src/app/pages/resumes/editor/editor.component.ts
+++ b/src/Client/src/app/pages/resumes/editor/editor.component.ts
@@ -57,13 +57,13 @@ export class ResumesEditorComponent {
}
addExperience(){
- this.resume.experience.push( new ResumeExperience );
+ this.resume.experiences.push( new ResumeExperience );
}
delExperience(self: ResumeExperience){
- for(let i=0; i[] tasks = [
@@ -94,21 +94,21 @@ namespace BoredCareers.Services.DatabaseService {
ResumeCertification[] certs = await GetResumeCertification(await tasks[7]);
ResumeProject[] projects = await GetResumeProjects(await tasks[8]);
- Dictionary groupedExperienceBullets = bullets.GroupBy(b => b.ResumeExperienceID).ToDictionary(g => g.Key, g => g.ToArray());
+ Dictionary groupedExperienceBullets = bullets.GroupBy(b => Convert.ToInt32(b.ResumeExperienceID)).ToDictionary(g => g.Key, g => g.ToArray());
foreach (var exp in experience) {
exp.ExperienceBullets = groupedExperienceBullets.TryGetValue(Convert.ToInt32(exp.ID), out var b) ? b : Array.Empty();
}
- resume.Experience = experience;
+ resume.Experiences = experience;
resume.Educations = education;
resume.Skills = skills;
resume.Languages = languages;
- resume.Certification = certs;
+ resume.Certifications = certs;
resume.Projects = projects;
if (military != null) {
- military.MillitaryBullets = militaryBullets;
- resume.Millitary = military;
+ military.MilitaryBullets = militaryBullets;
+ resume.Military = military;
}
return resume;
@@ -116,66 +116,62 @@ namespace BoredCareers.Services.DatabaseService {
}
public async Task SetResume(Resume resume) {
- using (var conn = GetConnection()) {
- await conn.OpenAsync();
-
- // Set ResumeID on all nodes
- int _ResumeID = await SetResume(conn, resume);
- if (resume.Millitary != null) {
- resume.Millitary.ResumeID = _ResumeID;
- foreach (ResumeMilitaryBullet cur in resume.Millitary.MillitaryBullets) {
- cur.ResumeID = _ResumeID;
- }
- }
- foreach (ResumeEducation cur in resume.Educations) { cur.ResumeID = _ResumeID; }
- foreach (ResumeSkill cur in resume.Skills) { cur.ResumeID = _ResumeID; }
- foreach (ResumeLanguage cur in resume.Languages) { cur.ResumeID = _ResumeID; }
- foreach (ResumeCertification cur in resume.Certification) { cur.ResumeID = _ResumeID; }
- foreach (ResumeProject cur in resume.Projects) { cur.ResumeID = _ResumeID; }
- foreach (ResumeExperience cur in resume.Experience) {
+ // Set ResumeID on all nodes
+ int _ResumeID = await SetResumeHeader(resume);
+ if (resume.Military != null) {
+ resume.Military.ResumeID = _ResumeID;
+ foreach (ResumeMilitaryBullet cur in resume.Military.MilitaryBullets) {
cur.ResumeID = _ResumeID;
- foreach (ResumeExperienceBullet us in cur.ExperienceBullets) {
- us.ResumeID = _ResumeID;
- }
}
-
- // Async process all non child node SQL sets
- Task[] tasks = [
- SetResumeEducation(conn, resume.Educations),
- SetResumeSkills(conn, resume.Skills),
- SetResumeLanguages(conn, resume.Languages),
- SetResumeCertification(conn, resume.Certification),
- SetResumeProjects(conn, resume.Projects)
- ];
- await Task.WhenAll(tasks);
-
- // Setup military task
- if (resume.Millitary != null) {
- ResumeMilitary militaryTask = await SetResumeMilitary(conn, resume.Millitary);
- foreach (ResumeMilitaryBullet cur in resume.Millitary.MillitaryBullets) {
- cur.ResumeMilitaryID = Convert.ToInt32(militaryTask.ID);
- }
- await SetResumeMilitaryBullets(conn, resume.Millitary.MillitaryBullets);
- }
-
- // Setup async process all experience tasks
- List> experienceTasks = new List>();
- foreach (ResumeExperience cur in resume.Experience) {
- experienceTasks.Add(SetResumeExperience(conn, cur));
- }
- await Task.WhenAll(experienceTasks);
-
- // Assuming they are returned in the same order they are sent
- List experienceBulletTasks = new List();
- 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);
}
+ foreach (ResumeEducation cur in resume.Educations) { cur.ResumeID = _ResumeID; }
+ foreach (ResumeSkill cur in resume.Skills) { cur.ResumeID = _ResumeID; }
+ foreach (ResumeLanguage cur in resume.Languages) { cur.ResumeID = _ResumeID; }
+ foreach (ResumeCertification cur in resume.Certifications) { cur.ResumeID = _ResumeID; }
+ foreach (ResumeProject cur in resume.Projects) { cur.ResumeID = _ResumeID; }
+ foreach (ResumeExperience cur in resume.Experiences) {
+ cur.ResumeID = _ResumeID;
+ foreach (ResumeExperienceBullet us in cur.ExperienceBullets) {
+ us.ResumeID = _ResumeID;
+ }
+ }
+
+ // Async process all non child node SQL sets
+ Task[] tasks = [
+ SetResumeEducation(resume.Educations),
+ SetResumeSkills(resume.Skills),
+ SetResumeLanguages(resume.Languages),
+ SetResumeCertification(resume.Certifications),
+ SetResumeProjects(resume.Projects)
+ ];
+ await Task.WhenAll(tasks);
+
+ // Setup military task
+ if (resume.Military != null) {
+ ResumeMilitary militaryTask = await SetResumeMilitary(resume.Military);
+ foreach (ResumeMilitaryBullet cur in resume.Military.MilitaryBullets) {
+ cur.ResumeMilitaryID = Convert.ToInt32(militaryTask.ID);
+ }
+ await SetResumeMilitaryBullets(resume.Military.MilitaryBullets);
+ }
+
+ // Setup async process all experience tasks
+ List> experienceTasks = new List>();
+ foreach (ResumeExperience cur in resume.Experiences) {
+ experienceTasks.Add(SetResumeExperience(cur));
+ }
+ await Task.WhenAll(experienceTasks);
+
+ // Assuming they are returned in the same order they are sent
+ List experienceBulletTasks = new List();
+ for (int i = 0; i < experienceTasks.Count; i++) {
+ ResumeExperience self = await experienceTasks[i];
+ foreach (ResumeExperienceBullet cur in resume.Experiences[i].ExperienceBullets) {
+ cur.ResumeExperienceID = Convert.ToInt32(self.ID);
+ experienceBulletTasks.Add(SetResumeExperienceBullets(cur));
+ }
+ }
+ await Task.WhenAll(experienceBulletTasks);
}
public async Task DeleteResume( int ResumeID ) {
diff --git a/src/Server/Services/DatabaseService/ResumeParts/GetResumeParts.cs b/src/Server/Services/DatabaseService/ResumeParts/GetResumeParts.cs
index 152e5e3..b0f4409 100644
--- a/src/Server/Services/DatabaseService/ResumeParts/GetResumeParts.cs
+++ b/src/Server/Services/DatabaseService/ResumeParts/GetResumeParts.cs
@@ -5,7 +5,7 @@ using System.Data.Common;
namespace BoredCareers.Services.DatabaseService {
public partial class DatabaseService {
- public async Task GetResume(DbDataReader reader) {
+ public async Task GetResumeHeader(DbDataReader reader) {
while (await reader.ReadAsync()) {
if (reader == null) { break; }
int _id = reader.GetInt32("ID");
diff --git a/src/Server/Services/DatabaseService/ResumeParts/SetResumeParts.cs b/src/Server/Services/DatabaseService/ResumeParts/SetResumeParts.cs
index 47054ab..2c4833e 100644
--- a/src/Server/Services/DatabaseService/ResumeParts/SetResumeParts.cs
+++ b/src/Server/Services/DatabaseService/ResumeParts/SetResumeParts.cs
@@ -4,303 +4,336 @@ using MySql.Data.MySqlClient;
namespace BoredCareers.Services.DatabaseService {
public partial class DatabaseService {
- public async Task SetResume(MySqlConnection connection, Resume resume) {
- string command = @"
- INSERT INTO Resume
- (ID,AccountID,Title,Name,Field,Email,PhoneNumber,PostalCode,Country,StateOrRegion,City,IsActive)
- VALUES
- (@ID,@AccountID,@Title,@Name,@Field,@Email,@PhoneNumber,@PostalCode,@Country,@StateOrRegion,@City,@IsActive)
- ON DUPLICATE KEY UPDATE
- AccountID = @AccountID,
- Title = @Title,
- Name = @Name,
- Field = @Field,
- Email = @Email,
- PhoneNumber = @PhoneNumber,
- PostalCode = @PostalCode,
- Country = @Country,
- StateOrRegion = @StateOrRegion,
- City = @City,
- IsActive = @IsActive;
-
- SELECT LAST_INSERT_ID();
- ";
-
- MySqlCommand cmd = new MySqlCommand(command, connection);
- cmd.Parameters.AddWithValue("@ID", resume.ID);
- cmd.Parameters.AddWithValue("@AccountID", resume.AccountID);
- cmd.Parameters.AddWithValue("@Title", resume.Title);
- cmd.Parameters.AddWithValue("@Name", resume.Name);
- cmd.Parameters.AddWithValue("@Field", resume.Field);
- cmd.Parameters.AddWithValue("@Email", resume.Email);
- cmd.Parameters.AddWithValue("@PhoneNumber", resume.PhoneNumber);
- cmd.Parameters.AddWithValue("@PostalCode", resume.PostalCode);
- cmd.Parameters.AddWithValue("@Country", resume.Country);
- cmd.Parameters.AddWithValue("@StateOrRegion", resume.StateOrRegion);
- cmd.Parameters.AddWithValue("@City", resume.City);
- cmd.Parameters.AddWithValue("@IsActive", resume.IsActive);
- object? result = await cmd.ExecuteScalarAsync();
-
- 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 bullet) {
- string command = @"
- INSERT INTO Resume
- (ID,ResumeID,ResumeExperienceID,JobFunction)
- VALUES
- (@ID,@ResumeID,@ResumeExperienceID,@JobFunction)
- ON DUPLICATE KEY UPDATE
- ResumeID = @ResumeID,
- ResumeExperienceID = @ResumeExperienceID,
- JobFunction = @JobFunction;
- ";
-
- MySqlCommand cmd = new MySqlCommand(command, connection);
- cmd.Parameters.AddWithValue("@ID", bullet.ID);
- cmd.Parameters.AddWithValue("@ResumeID", bullet.ResumeID);
- cmd.Parameters.AddWithValue("@ResumeExperienceID", bullet.ResumeExperienceID);
- cmd.Parameters.AddWithValue("@JobFunction", bullet.JobFunction);
-
- await cmd.ExecuteNonQueryAsync();
- }
-
- public async Task SetResumeExperience(MySqlConnection connection, ResumeExperience experiences) {
- string command = @"
- INSERT INTO Resume
- (ID,ResumeID,JobTitle,Company,PostalCode,Country,StateOrRegion,City,DateStarted,StillEmployed,DateEnded)
- VALUES
- (@ID,@ResumeID,@JobTitle,@Company,@PostalCode,@Country,@StateOrRegion,@City,@DateStarted,@StillEmployed,@DateEnded)
- ON DUPLICATE KEY UPDATE
- ResumeID = @ResumeID,
- JobTitle = @JobTitle,
- Company = @Company,
- PostalCode = @PostalCode,
- Country = @Country,
- StateOrRegion = @StateOrRegion,
- City = @City,
- DateStarted = @DateStarted,
- StillEmployed = @StillEmployed,
- DateEnded = @DateEnded;
-
- SELECT LAST_INSERT_ID();
- ";
-
- MySqlCommand cmd = new MySqlCommand(command, connection);
- cmd.Parameters.AddWithValue("@ID", experiences.ID);
- cmd.Parameters.AddWithValue("@ResumeID", experiences.ResumeID);
- cmd.Parameters.AddWithValue("@JobTitle", experiences.JobTitle);
- cmd.Parameters.AddWithValue("@Company", experiences.Company);
- cmd.Parameters.AddWithValue("@PostalCode", experiences.PostalCode);
- cmd.Parameters.AddWithValue("@DateStarted", experiences.DateStarted.ToUniversalTime());
- cmd.Parameters.AddWithValue("@StillEmployed", experiences.StillEmployed);
- cmd.Parameters.AddWithValue("@DateEnded", experiences.DateEnded.ToUniversalTime());
- object? result = await cmd.ExecuteScalarAsync();
-
- if (experiences.ID == null) {
- experiences.ID = Convert.ToInt32(result);
- }
- return experiences;
- }
-
- public async Task SetResumeMilitaryBullets(MySqlConnection connection, ResumeMilitaryBullet[] bullets) {
- foreach (ResumeMilitaryBullet cur in bullets) {
+ public async Task SetResumeHeader(Resume resume) {
+ using (var conn = GetConnection()) {
+ await conn.OpenAsync();
string command = @"
INSERT INTO Resume
- (ID,ResumeID,ResumeMilitaryID,Achievement)
+ (ID,AccountID,Title,Name,Field,Email,PhoneNumber,PostalCode,Country,StateOrRegion,City,IsActive)
VALUES
- (@ID,@ResumeID,@ResumeMilitaryID,@Achievement)
+ (@ID,@AccountID,@Title,@Name,@Field,@Email,@PhoneNumber,@PostalCode,@Country,@StateOrRegion,@City,@IsActive)
ON DUPLICATE KEY UPDATE
- ResumeID = @ResumeID,
- ResumeMilitaryID = @ResumeMilitaryID,
- Achievement = @Achievement,
- Description = @Description;
+ AccountID = @AccountID,
+ Title = @Title,
+ Name = @Name,
+ Field = @Field,
+ Email = @Email,
+ PhoneNumber = @PhoneNumber,
+ PostalCode = @PostalCode,
+ Country = @Country,
+ StateOrRegion = @StateOrRegion,
+ City = @City,
+ IsActive = @IsActive;
+
+ SELECT LAST_INSERT_ID();
";
- MySqlCommand cmd = new MySqlCommand(command, connection);
- cmd.Parameters.AddWithValue("@ID", cur.ID);
- cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID);
- cmd.Parameters.AddWithValue("@ResumeMilitaryID", cur.ResumeMilitaryID);
- cmd.Parameters.AddWithValue("@Achievement", cur.Achievement);
- cmd.Parameters.AddWithValue("@Description", cur.Description);
+ MySqlCommand cmd = new MySqlCommand(command, conn);
+ cmd.Parameters.AddWithValue("@ID", resume.ID);
+ cmd.Parameters.AddWithValue("@AccountID", resume.AccountID);
+ cmd.Parameters.AddWithValue("@Title", resume.Title);
+ cmd.Parameters.AddWithValue("@Name", resume.Name);
+ cmd.Parameters.AddWithValue("@Field", resume.Field);
+ cmd.Parameters.AddWithValue("@Email", resume.Email);
+ cmd.Parameters.AddWithValue("@PhoneNumber", resume.PhoneNumber);
+ cmd.Parameters.AddWithValue("@PostalCode", resume.PostalCode);
+ cmd.Parameters.AddWithValue("@Country", resume.Country);
+ cmd.Parameters.AddWithValue("@StateOrRegion", resume.StateOrRegion);
+ cmd.Parameters.AddWithValue("@City", resume.City);
+ cmd.Parameters.AddWithValue("@IsActive", resume.IsActive);
+ object? result = await cmd.ExecuteScalarAsync();
+
+ if (resume.ID != null && resume.ID != 0) {
+ return Convert.ToInt32(resume.ID);
+ } else {
+ cmd.CommandText = "";
+ return Convert.ToInt32(result);
+ }
+ }
+ }
+
+ public async Task SetResumeExperienceBullets(ResumeExperienceBullet bullet) {
+ using (var conn = GetConnection()) {
+ await conn.OpenAsync();
+ string command = @"
+ INSERT INTO ResumeExperienceBullet
+ (ID,ResumeID,ResumeExperienceID,JobFunction)
+ VALUES
+ (@ID,@ResumeID,@ResumeExperienceID,@JobFunction)
+ ON DUPLICATE KEY UPDATE
+ ResumeID = @ResumeID,
+ ResumeExperienceID = @ResumeExperienceID,
+ JobFunction = @JobFunction;
+ ";
+
+ MySqlCommand cmd = new MySqlCommand(command, conn);
+ cmd.Parameters.AddWithValue("@ID", bullet.ID);
+ cmd.Parameters.AddWithValue("@ResumeID", bullet.ResumeID);
+ cmd.Parameters.AddWithValue("@ResumeExperienceID", bullet.ResumeExperienceID);
+ cmd.Parameters.AddWithValue("@JobFunction", bullet.JobFunction);
await cmd.ExecuteNonQueryAsync();
}
}
- public async Task SetResumeMilitary(MySqlConnection connection, ResumeMilitary? military) {
- if (military != null) {
+ public async Task SetResumeExperience(ResumeExperience experiences) {
+ using (var conn = GetConnection()) {
+ await conn.OpenAsync();
string command = @"
- INSERT INTO Resume
- (ID,ResumeID,Country,Rank,DateStarted,StillServing,DateEnded)
+ INSERT INTO ResumeExperience
+ (ID,ResumeID,JobTitle,Company,PostalCode,Country,StateOrRegion,City,DateStarted,StillEmployed,DateEnded)
VALUES
- (@ID,@ResumeID,@Country,@Rank,@DateStarted,@StillServing,@DateEnded)
+ (@ID,@ResumeID,@JobTitle,@Company,@PostalCode,@Country,@StateOrRegion,@City,@DateStarted,@StillEmployed,@DateEnded)
ON DUPLICATE KEY UPDATE
ResumeID = @ResumeID,
- Country = @Country,
- Rank = @Rank,
- DateStarted = @DateStarted,
- StillServing = @StillServing,
- DateEnded = @DateEnded;
-
- SELECT LAST_INSERT_ID();
- ";
-
- 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 = Convert.ToInt32(result);
- }
- return military;
- }
- return new ResumeMilitary();
- }
-
- public async Task SetResumeEducation(MySqlConnection connection, ResumeEducation[] educations) {
- foreach (ResumeEducation cur in educations) {
- string command = @"
- INSERT INTO Resume
- (ID,ResumeID,DegreeType,DegreeField,School,PostalCode,Country,StateOrRegion,City,DateStarted,StillStudying,DateEnded)
- VALUES
- (@ID,@ResumeID,@DegreeType,@DegreeField,@School,@PostalCode,@Country,@StateOrRegion,@City,@DateStarted,@StillStudying,@DateEnded)
- ON DUPLICATE KEY UPDATE
- ResumeID = @ResumeID,
- DegreeType = @DegreeType,
- DegreeField = @DegreeField,
- School = @School,
+ JobTitle = @JobTitle,
+ Company = @Company,
PostalCode = @PostalCode,
Country = @Country,
StateOrRegion = @StateOrRegion,
City = @City,
DateStarted = @DateStarted,
- StillStudying = @StillStudying,
+ StillEmployed = @StillEmployed,
DateEnded = @DateEnded;
+
+ SELECT LAST_INSERT_ID();
";
- MySqlCommand cmd = new MySqlCommand(command, connection);
- cmd.Parameters.AddWithValue("@ID", cur.ID);
- cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID);
- cmd.Parameters.AddWithValue("@DegreeType", cur.DegreeType);
- cmd.Parameters.AddWithValue("@DegreeField", cur.DegreeField);
- cmd.Parameters.AddWithValue("@School", cur.School);
- cmd.Parameters.AddWithValue("@PostalCode", cur.PostalCode);
- cmd.Parameters.AddWithValue("@Country", cur.Country);
- cmd.Parameters.AddWithValue("@StateOrRegion", cur.StateOrRegion);
- cmd.Parameters.AddWithValue("@City", cur.City);
- cmd.Parameters.AddWithValue("@DateStarted", cur.DateStarted.ToUniversalTime());
- cmd.Parameters.AddWithValue("@StillStudying", cur.StillStudying);
- cmd.Parameters.AddWithValue("@DateEnded", cur.DateEnded.ToUniversalTime());
+ MySqlCommand cmd = new MySqlCommand(command, conn);
+ cmd.Parameters.AddWithValue("@ID", experiences.ID);
+ cmd.Parameters.AddWithValue("@ResumeID", experiences.ResumeID);
+ cmd.Parameters.AddWithValue("@JobTitle", experiences.JobTitle);
+ cmd.Parameters.AddWithValue("@Company", experiences.Company);
+ cmd.Parameters.AddWithValue("@Country", experiences.Country);
+ cmd.Parameters.AddWithValue("@StateOrRegion", experiences.StateOrRegion);
+ cmd.Parameters.AddWithValue("@City", experiences.City);
+ cmd.Parameters.AddWithValue("@PostalCode", experiences.PostalCode);
+ cmd.Parameters.AddWithValue("@DateStarted", experiences.DateStarted.ToUniversalTime());
+ cmd.Parameters.AddWithValue("@StillEmployed", experiences.StillEmployed);
+ cmd.Parameters.AddWithValue("@DateEnded", experiences.DateEnded.ToUniversalTime());
+ object? result = await cmd.ExecuteScalarAsync();
- await cmd.ExecuteNonQueryAsync();
+ if (experiences.ID == null) {
+ experiences.ID = Convert.ToInt32(result);
+ }
+ return experiences;
}
}
- public async Task SetResumeSkills(MySqlConnection connection, ResumeSkill[] skills) {
- foreach (ResumeSkill cur in skills) {
- string command = @"
- INSERT INTO Resume
- (ID,ResumeID,Name,Description)
- VALUES
- (@ID,@ResumeID,@Name,@Description)
- ON DUPLICATE KEY UPDATE
- ResumeID = @ResumeID,
- Name = @Name,
- Description = @Description;
- ";
+ public async Task SetResumeMilitaryBullets(ResumeMilitaryBullet[] bullets) {
+ using (var conn = GetConnection()) {
+ await conn.OpenAsync();
+ foreach (ResumeMilitaryBullet cur in bullets) {
+ string command = @"
+ INSERT INTO ResumeMilitaryBullet
+ (ID,ResumeID,ResumeMilitaryID,Achievement)
+ VALUES
+ (@ID,@ResumeID,@ResumeMilitaryID,@Achievement)
+ ON DUPLICATE KEY UPDATE
+ ResumeID = @ResumeID,
+ ResumeMilitaryID = @ResumeMilitaryID,
+ Achievement = @Achievement,
+ Description = @Description;
+ ";
- MySqlCommand cmd = new MySqlCommand(command, connection);
- cmd.Parameters.AddWithValue("@ID", cur.ID);
- cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID);
- cmd.Parameters.AddWithValue("@Name", cur.Name);
- cmd.Parameters.AddWithValue("@Description", cur.Description);
+ MySqlCommand cmd = new MySqlCommand(command, conn);
+ cmd.Parameters.AddWithValue("@ID", cur.ID);
+ cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID);
+ cmd.Parameters.AddWithValue("@ResumeMilitaryID", cur.ResumeMilitaryID);
+ cmd.Parameters.AddWithValue("@Achievement", cur.Achievement);
+ cmd.Parameters.AddWithValue("@Description", cur.Description);
- await cmd.ExecuteNonQueryAsync();
+ await cmd.ExecuteNonQueryAsync();
+ }
}
}
- public async Task SetResumeLanguages(MySqlConnection connection, ResumeLanguage[] languages) {
- foreach (ResumeLanguage cur in languages) {
- string command = @"
- INSERT INTO Resume
- (ID,ResumeID,Language,Proficiency)
- VALUES
- (@ID,@ResumeID,@Language,@Proficiency)
- ON DUPLICATE KEY UPDATE
- ResumeID = @ResumeID,
- Language = @Language,
- Proficiency = @Proficiency;
- ";
+ public async Task SetResumeMilitary(ResumeMilitary? military) {
+ using (var conn = GetConnection()) {
+ await conn.OpenAsync();
+ if (military != null) {
+ string command = @"
+ INSERT INTO ResumeMilitary
+ (ID,ResumeID,Country,`Rank`,DateStarted,StillServing,DateEnded)
+ VALUES
+ (@ID,@ResumeID,@Country,@Rank,@DateStarted,@StillServing,@DateEnded)
+ ON DUPLICATE KEY UPDATE
+ ResumeID = @ResumeID,
+ Country = @Country,
+ `Rank` = @Rank,
+ DateStarted = @DateStarted,
+ StillServing = @StillServing,
+ DateEnded = @DateEnded;
- MySqlCommand cmd = new MySqlCommand(command, connection);
- cmd.Parameters.AddWithValue("@ID", cur.ID);
- cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID);
- cmd.Parameters.AddWithValue("@Language", cur.Language);
- cmd.Parameters.AddWithValue("@Proficiency", cur.Proficiency);
+ SELECT LAST_INSERT_ID();
+ ";
- await cmd.ExecuteNonQueryAsync();
+ MySqlCommand cmd = new MySqlCommand(command, conn);
+ 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 = Convert.ToInt32(result);
+ }
+ return military;
+ }
+ return new ResumeMilitary();
}
}
- public async Task SetResumeCertification(MySqlConnection connection, ResumeCertification[] certifications) {
- foreach (ResumeCertification cur in certifications) {
- string command = @"
- INSERT INTO Resume
- (ID,ResumeID,Name,VerificationURL,Description)
- VALUES
- (@ID,@ResumeID,@Name,@VerificationURL,@Description)
- ON DUPLICATE KEY UPDATE
- ResumeID = @ResumeID,
- Name = @DegreeNameType,
- VerificationURL = @VerificationURL,
- Description = @Description;
- ";
+ public async Task SetResumeEducation(ResumeEducation[] educations) {
+ using (var conn = GetConnection()) {
+ await conn.OpenAsync();
+ foreach (ResumeEducation cur in educations) {
+ string command = @"
+ INSERT INTO ResumeEducation
+ (ID,ResumeID,DegreeType,DegreeField,School,PostalCode,Country,StateOrRegion,City,DateStarted,StillStudying,DateEnded)
+ VALUES
+ (@ID,@ResumeID,@DegreeType,@DegreeField,@School,@PostalCode,@Country,@StateOrRegion,@City,@DateStarted,@StillStudying,@DateEnded)
+ ON DUPLICATE KEY UPDATE
+ ResumeID = @ResumeID,
+ DegreeType = @DegreeType,
+ DegreeField = @DegreeField,
+ School = @School,
+ PostalCode = @PostalCode,
+ Country = @Country,
+ StateOrRegion = @StateOrRegion,
+ City = @City,
+ DateStarted = @DateStarted,
+ StillStudying = @StillStudying,
+ DateEnded = @DateEnded;
+ ";
- MySqlCommand cmd = new MySqlCommand(command, connection);
- cmd.Parameters.AddWithValue("@ID", cur.ID);
- cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID);
- cmd.Parameters.AddWithValue("@Name", cur.Name);
- cmd.Parameters.AddWithValue("@VerificationURL", cur.VerificationURL);
- cmd.Parameters.AddWithValue("@Description", cur.Description);
+ MySqlCommand cmd = new MySqlCommand(command, conn);
+ cmd.Parameters.AddWithValue("@ID", cur.ID);
+ cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID);
+ cmd.Parameters.AddWithValue("@DegreeType", cur.DegreeType);
+ cmd.Parameters.AddWithValue("@DegreeField", cur.DegreeField);
+ cmd.Parameters.AddWithValue("@School", cur.School);
+ cmd.Parameters.AddWithValue("@PostalCode", cur.PostalCode);
+ cmd.Parameters.AddWithValue("@Country", cur.Country);
+ cmd.Parameters.AddWithValue("@StateOrRegion", cur.StateOrRegion);
+ cmd.Parameters.AddWithValue("@City", cur.City);
+ cmd.Parameters.AddWithValue("@DateStarted", cur.DateStarted.ToUniversalTime());
+ cmd.Parameters.AddWithValue("@StillStudying", cur.StillStudying);
+ cmd.Parameters.AddWithValue("@DateEnded", cur.DateEnded.ToUniversalTime());
- await cmd.ExecuteNonQueryAsync();
+ await cmd.ExecuteNonQueryAsync();
+ }
}
}
- public async Task SetResumeProjects(MySqlConnection connection, ResumeProject[] projects) {
- foreach (ResumeProject cur in projects) {
- string command = @"
- INSERT INTO Resume
- (ID,ResumeID,Name,URL,Description)
- VALUES
- (@ID,@ResumeID,@Name,@URL,@Description)
- ON DUPLICATE KEY UPDATE
- ResumeID = @ResumeID,
- Name = @Name,
- URL = @URL,
- Description = @Description;
- ";
+ public async Task SetResumeSkills(ResumeSkill[] skills) {
+ using (var conn = GetConnection()) {
+ await conn.OpenAsync();
+ foreach (ResumeSkill cur in skills) {
+ string command = @"
+ INSERT INTO ResumeSkill
+ (ID,ResumeID,Name,Description)
+ VALUES
+ (@ID,@ResumeID,@Name,@Description)
+ ON DUPLICATE KEY UPDATE
+ ResumeID = @ResumeID,
+ Name = @Name,
+ Description = @Description;
+ ";
- MySqlCommand cmd = new MySqlCommand(command, connection);
- cmd.Parameters.AddWithValue("@ID", cur.ID);
- cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID);
- cmd.Parameters.AddWithValue("@Name", cur.Name);
- cmd.Parameters.AddWithValue("@URL", cur.URL);
- cmd.Parameters.AddWithValue("@Description", cur.Description);
+ MySqlCommand cmd = new MySqlCommand(command, conn);
+ cmd.Parameters.AddWithValue("@ID", cur.ID);
+ cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID);
+ cmd.Parameters.AddWithValue("@Name", cur.Name);
+ cmd.Parameters.AddWithValue("@Description", cur.Description);
- await cmd.ExecuteNonQueryAsync();
+ await cmd.ExecuteNonQueryAsync();
+ }
+ }
+ }
+
+ public async Task SetResumeLanguages(ResumeLanguage[] languages) {
+ using (var conn = GetConnection()) {
+ await conn.OpenAsync();
+ foreach (ResumeLanguage cur in languages) {
+ string command = @"
+ INSERT INTO ResumeLanguage
+ (ID,ResumeID,Language,Proficiency)
+ VALUES
+ (@ID,@ResumeID,@Language,@Proficiency)
+ ON DUPLICATE KEY UPDATE
+ ResumeID = @ResumeID,
+ Language = @Language,
+ Proficiency = @Proficiency;
+ ";
+
+ MySqlCommand cmd = new MySqlCommand(command, conn);
+ cmd.Parameters.AddWithValue("@ID", cur.ID);
+ cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID);
+ cmd.Parameters.AddWithValue("@Language", cur.Language);
+ cmd.Parameters.AddWithValue("@Proficiency", cur.Proficiency);
+
+ await cmd.ExecuteNonQueryAsync();
+ }
+ }
+ }
+
+ public async Task SetResumeCertification(ResumeCertification[] certifications) {
+ using (var conn = GetConnection()) {
+ await conn.OpenAsync();
+ foreach (ResumeCertification cur in certifications) {
+ string command = @"
+ INSERT INTO ResumeCertification
+ (ID,ResumeID,Name,VerificationURL,Description)
+ VALUES
+ (@ID,@ResumeID,@Name,@VerificationURL,@Description)
+ ON DUPLICATE KEY UPDATE
+ ResumeID = @ResumeID,
+ Name = @Name,
+ VerificationURL = @VerificationURL,
+ Description = @Description;
+ ";
+
+ MySqlCommand cmd = new MySqlCommand(command, conn);
+ cmd.Parameters.AddWithValue("@ID", cur.ID);
+ cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID);
+ cmd.Parameters.AddWithValue("@Name", cur.Name);
+ cmd.Parameters.AddWithValue("@VerificationURL", cur.VerificationURL);
+ cmd.Parameters.AddWithValue("@Description", cur.Description);
+
+ await cmd.ExecuteNonQueryAsync();
+ }
+ }
+ }
+
+ public async Task SetResumeProjects(ResumeProject[] projects) {
+ using (var conn = GetConnection()) {
+ await conn.OpenAsync();
+ foreach (ResumeProject cur in projects) {
+ string command = @"
+ INSERT INTO ResumeProject
+ (ID,ResumeID,Name,URL,Description)
+ VALUES
+ (@ID,@ResumeID,@Name,@URL,@Description)
+ ON DUPLICATE KEY UPDATE
+ ResumeID = @ResumeID,
+ Name = @Name,
+ URL = @URL,
+ Description = @Description;
+ ";
+
+ MySqlCommand cmd = new MySqlCommand(command, conn);
+ cmd.Parameters.AddWithValue("@ID", cur.ID);
+ cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID);
+ cmd.Parameters.AddWithValue("@Name", cur.Name);
+ cmd.Parameters.AddWithValue("@URL", cur.URL);
+ cmd.Parameters.AddWithValue("@Description", cur.Description);
+
+ await cmd.ExecuteNonQueryAsync();
+ }
}
}