From e7bb9326977bb00edb5092ab54d9980a87d1dd5d Mon Sep 17 00:00:00 2001 From: Derek Holloway Date: Mon, 14 Jul 2025 19:55:07 -0700 Subject: [PATCH] Create Set methods for DbDriver --- .../ResumeParts/SetResumeParts.cs | 298 +++++++++++++++--- 1 file changed, 259 insertions(+), 39 deletions(-) diff --git a/src/Server/Services/DatabaseService/ResumeParts/SetResumeParts.cs b/src/Server/Services/DatabaseService/ResumeParts/SetResumeParts.cs index 19c9fc1..e127c51 100644 --- a/src/Server/Services/DatabaseService/ResumeParts/SetResumeParts.cs +++ b/src/Server/Services/DatabaseService/ResumeParts/SetResumeParts.cs @@ -1,78 +1,298 @@ using BoredCareers.Entities; using MySql.Data.MySqlClient; +// TODO: Fix Data type mangling. Such As DateTime + namespace BoredCareers.Services.DatabaseService { public partial class DatabaseService { public async Task SetResume(MySqlConnection connection, Resume resume) { string command = @" - INSERT INTO Resume - (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; - "; + INSERT INTO Resume + (ID,AccountID,Name,Field,Email,PhoneNumber,PostalCode,Country,StateOrRegion,City,IsActive) + VALUES + (@ID,@AccountID,@Name,@Field,@Email,@PhoneNumber,@PostalCode,@Country,@StateOrRegion,@City,@IsActive); + ON DUPLICATE KEY UPDATE + ID = @ID, + AccountID = @AccountID, + Name = @Name, + Field = @Field, + Email = @Email, + PhoneNumber = @PhoneNumber, + PostalCode = @PostalCode, + Country = @Country, + StateOrRegion = @StateOrRegion, + City = @City, + IsActive = @IsActive; + "; - 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); + MySqlCommand cmd = new MySqlCommand(command, connection); + cmd.Parameters.AddWithValue("@ID", resume.ID); + cmd.Parameters.AddWithValue("@AccountID", resume.AccountID); + 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); - await cmd.ExecuteNonQueryAsync(); + await cmd.ExecuteNonQueryAsync(); } public async Task SetResumeExperienceBullets(MySqlConnection connection, ResumeExperienceBullet[] bullets) { - + foreach (ResumeExperienceBullet cur in bullets) { + string command = @" + INSERT INTO Resume + (ID,ResumeID,ResumeExperienceID,JobFunction) + VALUES + (@ID,@ResumeID,@ResumeExperienceID,@JobFunction); + ON DUPLICATE KEY UPDATE + ID = @ID, + ResumeID = @ResumeID, + ResumeExperienceID = @ResumeExperienceID, + JobFunction = @JobFunction; + "; + + MySqlCommand cmd = new MySqlCommand(command, connection); + cmd.Parameters.AddWithValue("@ID", cur.ID); + cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID); + cmd.Parameters.AddWithValue("@ResumeExperienceID", cur.ResumeExperienceID); + cmd.Parameters.AddWithValue("@JobFunction", cur.JobFunction); + + await cmd.ExecuteNonQueryAsync(); + } } public async Task SetResumeExperience(MySqlConnection connection, ResumeExperience[] experiences) { - + foreach (ResumeExperience cur in 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 + ID = @ID, + ResumeID = @ResumeID, + JobTitle = @JobTitle, + Company = @Company, + PostalCode = @PostalCode, + Country = @Country, + StateOrRegion = @StateOrRegion, + City = @City, + DateStarted = @DateStarted, + StillEmployed = @StillEmployed, + DateEnded = @DateEnded; + "; + + MySqlCommand cmd = new MySqlCommand(command, connection); + cmd.Parameters.AddWithValue("@ID", cur.ID); + cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID); + cmd.Parameters.AddWithValue("@JobTitle", cur.JobTitle); + cmd.Parameters.AddWithValue("@Company", cur.Company); + cmd.Parameters.AddWithValue("@PostalCode", cur.PostalCode); + cmd.Parameters.AddWithValue("@DateStarted", cur.DateStarted); + cmd.Parameters.AddWithValue("@StillEmployed", cur.StillEmployed); + cmd.Parameters.AddWithValue("@DateEnded", cur.DateEnded); + + await cmd.ExecuteNonQueryAsync(); + } } public async Task SetResumeMilitaryBullets(MySqlConnection connection, ResumeMilitaryBullet[] bullets) { - + foreach (ResumeMilitaryBullet cur in bullets) { + string command = @" + INSERT INTO Resume + (ID,ResumeID,ResumeMilitaryID,Achievement) + VALUES + (@ID,@ResumeID,@ResumeMilitaryID,@Achievement); + ON DUPLICATE KEY UPDATE + ID = @ID, + 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("@ResumeMilitaryID", cur.ResumeMilitaryID); + cmd.Parameters.AddWithValue("@Achievement", cur.Achievement); + cmd.Parameters.AddWithValue("@Description", cur.Description); + + await cmd.ExecuteNonQueryAsync(); + } } - public async Task SetResumeMilitary(MySqlConnection connection, ResumeMilitary? military) { - + public async Task SetResumeMilitary(MySqlConnection connection, ResumeMilitary military) { + string command = @" + INSERT INTO Resume + (ID,ResumeID,Country,Rank,DateStarted,StillServing,DateEnded) + VALUES + (@ID,@ResumeID,@Country,@Rank,@DateStarted,@StillServing,@DateEnded); + ON DUPLICATE KEY UPDATE + ID = @ID, + ResumeID = @ResumeID, + Country = @Country, + Rank = @Rank, + DateStarted = @DateStarted, + StillServing = @StillServing, + DateEnded = @DateEnded, + "; + + 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); + cmd.Parameters.AddWithValue("@StillServing", military.StillServing); + cmd.Parameters.AddWithValue("@DateEnded", military.DateEnded); + + await cmd.ExecuteNonQueryAsync(); } 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 + ID = @ID, + 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("@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); + cmd.Parameters.AddWithValue("@StillStudying", cur.StillStudying); + cmd.Parameters.AddWithValue("@DateEnded", cur.DateEnded); + + await cmd.ExecuteNonQueryAsync(); + } } 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 + ID = @ID, + 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("@Description", cur.Description); + + 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 + ID = @ID, + ResumeID = @ResumeID, + Language = @Language, + Proficiency = @Proficiency; + "; + + 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); + + await cmd.ExecuteNonQueryAsync(); + } } 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 + ID = @ID, + ResumeID = @ResumeID, + Name = @DegreeNameType, + VerificationURL = @VerificationURL, + 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("@VerificationURL", cur.VerificationURL); + cmd.Parameters.AddWithValue("@Description", cur.Description); + + 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 + ID = @ID, + ResumeID = @ResumeID, + Name = @Name, + URL = @URL, + 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); + + await cmd.ExecuteNonQueryAsync(); + } } }