From 1054c595bfb3ecfedcaf63cd0b52e1e1520d9aeb Mon Sep 17 00:00:00 2001 From: Derek Holloway Date: Mon, 11 Aug 2025 21:27:20 -0700 Subject: [PATCH] Add Title and Veteran to DB --- database/mistox.sql | 2 + src/Client/src/app/models/Resume.ts | 47 ++++++++++++++----- src/Server/Entities/Resume.cs | 2 + src/Server/Services/DatabaseService/Resume.cs | 2 + .../ResumeParts/GetResumeParts.cs | 4 ++ .../ResumeParts/SetResumeParts.cs | 12 +++-- 6 files changed, 53 insertions(+), 16 deletions(-) diff --git a/database/mistox.sql b/database/mistox.sql index dee3b06..035a927 100755 --- a/database/mistox.sql +++ b/database/mistox.sql @@ -6,6 +6,7 @@ USE `boredcareers`; CREATE TABLE IF NOT EXISTS `Resume` ( `ID` int NOT NULL AUTO_INCREMENT, `AccountID` int NOT NULL, + `Title` varchar(100) NOT NULL, `Name` varchar(100) NOT NULL, `Field` varchar(100) DEFAULT NULL, `Email` varchar(255) NOT NULL, @@ -47,6 +48,7 @@ CREATE TABLE IF NOT EXISTS `Resume` ( CREATE TABLE IF NOT EXISTS `ResumeMilitary` ( `ID` int NOT NULL AUTO_INCREMENT, `ResumeID` int NOT NULL, + `Veteran` boolean DEFAULT 0, `Country` char(2) NOT NULL, `Rank` varchar(50) NOT NULL, `DateStarted` date NOT NULL, diff --git a/src/Client/src/app/models/Resume.ts b/src/Client/src/app/models/Resume.ts index c917a5a..92826d8 100644 --- a/src/Client/src/app/models/Resume.ts +++ b/src/Client/src/app/models/Resume.ts @@ -1,6 +1,9 @@ + export class Resume { public id: number | null = null; - public accountID: number = 0; + public accountID: number | null = null; + + public title: string = ""; public name: string = ""; public field: string = ""; public email: string = ""; @@ -17,11 +20,13 @@ export class Resume { public languages: ResumeLanguage[] = []; public certification: ResumeCertification[] = []; public projects: ResumeProject[] = []; + public trackUUID: string = crypto.randomUUID(); } export class ResumeExperience { public id: number | null = null; - public resumeID: number = 0; + public resumeID: number | null = null; + public jobTitle: string = ""; public company: string = ""; public postalCode: string = ""; @@ -32,37 +37,46 @@ export class ResumeExperience { public stillEmployed: boolean = false; public dateEnded: Date = new Date(); public experienceBullets: ResumeExperienceBullet[] = []; + public trackUUID: string = crypto.randomUUID(); } export class ResumeExperienceBullet { public id: number | null = null; - public resumeID: number = 0; - public resumeExperienceID: number = 0; + public resumeID: number | null = null; + public resumeExperienceID: number | null = null; + public jobFunction: string = ""; + public trackUUID: string = crypto.randomUUID(); } export class ResumeMilitary { public id: number | null = null; - public resumeID: number = 0; + public resumeID: number | null = null; + + public veteran: boolean = false; public country: string = ""; public rank: string = ""; public dateStarted: Date = new Date(); public stillServing: boolean = false; public dateEnded: Date = new Date(); public millitaryBullets: ResumeMilitaryBullet[] = []; + public trackUUID: string = crypto.randomUUID(); } export class ResumeMilitaryBullet { public id: number | null = null; - public resumeID: number = 0; - public resumeMilitaryID: number = 0; + public resumeID: number | null = null; + public resumeMilitaryID: number | null = null; + public achievement: string = ""; public description: string = ""; + public trackUUID: string = crypto.randomUUID(); } export class ResumeEducation { public id: number | null = null; - public resumeID: number = 0; + public resumeID: number | null = null; + public degreeType: string = ""; public degreeField: string = ""; public school: string = ""; @@ -73,34 +87,43 @@ export class ResumeEducation { public dateStarted: Date = new Date(); public stillStudying: boolean = false; public dateEnded: Date = new Date(); + public trackUUID: string = crypto.randomUUID(); } export class ResumeSkill { public id: number | null = null; - public resumeID: number = 0; + public resumeID: number | null = null; + public name: string = ""; public description: string = ""; + public trackUUID: string = crypto.randomUUID(); } export class ResumeLanguage { public id: number | null = null; - public resumeID: number = 0; + public resumeID: number | null = null; + public language: string = ""; public proficiency: string = ""; + public trackUUID: string = crypto.randomUUID(); } export class ResumeCertification { public id: number | null = null; - public resumeID: number = 0; + public resumeID: number | null = null; + public name: string = ""; public verificationURL: string = ""; public description: string = ""; + public trackUUID: string = crypto.randomUUID(); } export class ResumeProject { public id: number | null = null; - public resumeID: number = 0; + public resumeID: number | null = null; + public name: string = ""; public url: string = ""; public description: string = ""; + public trackUUID: string = crypto.randomUUID(); } \ No newline at end of file diff --git a/src/Server/Entities/Resume.cs b/src/Server/Entities/Resume.cs index b093c3d..8457400 100644 --- a/src/Server/Entities/Resume.cs +++ b/src/Server/Entities/Resume.cs @@ -2,6 +2,7 @@ namespace BoredCareers.Entities { public class Resume { public int? ID { get; set; } // PK public int AccountID { get; set; } // FK + public string Title { get; set; } = ""; public string Name { get; set; } = ""; public string Field { get; set; } = ""; public string Email { get; set; } = ""; @@ -45,6 +46,7 @@ namespace BoredCareers.Entities { public class ResumeMilitary { public int? ID { get; set; } // PK public int ResumeID { get; set; } // FK + public bool Veteran { get; set; } = false; public string Country { get; set; } = ""; // 2 Letter Country Code public string Rank { get; set; } = ""; public DateTime DateStarted { get; set; } = new DateTime(); diff --git a/src/Server/Services/DatabaseService/Resume.cs b/src/Server/Services/DatabaseService/Resume.cs index 86eda81..35cf14e 100644 --- a/src/Server/Services/DatabaseService/Resume.cs +++ b/src/Server/Services/DatabaseService/Resume.cs @@ -27,6 +27,7 @@ namespace BoredCareers.Services.DatabaseService { int _id = reader.GetInt32("ID"); int _accountid = reader.GetInt32("AccountID"); + string _title = reader.GetString("Title"); string _name = reader.GetString("Name"); string _field = reader.GetString("Field"); string _email = reader.GetString("Email"); @@ -40,6 +41,7 @@ namespace BoredCareers.Services.DatabaseService { resumes.Add( new Resume() { ID = _id, AccountID = _accountid, + Title = _title, Name = _name, Field = _field, Email = _email, diff --git a/src/Server/Services/DatabaseService/ResumeParts/GetResumeParts.cs b/src/Server/Services/DatabaseService/ResumeParts/GetResumeParts.cs index 603bdcc..016556d 100644 --- a/src/Server/Services/DatabaseService/ResumeParts/GetResumeParts.cs +++ b/src/Server/Services/DatabaseService/ResumeParts/GetResumeParts.cs @@ -10,6 +10,7 @@ namespace BoredCareers.Services.DatabaseService { if (reader == null) { break; } int _id = reader.GetInt32("ID"); int _accountid = reader.GetInt32("AccountID"); + string _title = reader.GetString("Title"); string _name = reader.GetString("Name"); string _field = reader.GetString("Field"); string _email = reader.GetString("Email"); @@ -22,6 +23,7 @@ namespace BoredCareers.Services.DatabaseService { return new Resume() { ID = _id, AccountID = _accountid, + Title = _title, Name = _name, Field = _field, Email = _email, @@ -112,6 +114,7 @@ namespace BoredCareers.Services.DatabaseService { if (reader == null) { break; } int _id = reader.GetInt32("ID"); int _resumeid = reader.GetInt32("ResumeID"); + bool _veteran = reader.GetBoolean("Veteran"); string _country = reader.GetString("Country"); string _rank = reader.GetString("Rank"); DateTime _datestarted = reader.GetDateTime("DateStarted"); @@ -120,6 +123,7 @@ namespace BoredCareers.Services.DatabaseService { military = new ResumeMilitary() { ID = _id, ResumeID = _resumeid, + Veteran = _veteran, Country = _country, Rank = _rank, DateStarted = _datestarted, diff --git a/src/Server/Services/DatabaseService/ResumeParts/SetResumeParts.cs b/src/Server/Services/DatabaseService/ResumeParts/SetResumeParts.cs index 55ff142..85c993d 100644 --- a/src/Server/Services/DatabaseService/ResumeParts/SetResumeParts.cs +++ b/src/Server/Services/DatabaseService/ResumeParts/SetResumeParts.cs @@ -7,11 +7,12 @@ namespace BoredCareers.Services.DatabaseService { public async Task SetResume(MySqlConnection connection, Resume resume) { string command = @" INSERT INTO Resume - (ID,AccountID,Name,Field,Email,PhoneNumber,PostalCode,Country,StateOrRegion,City,IsActive) + (ID,AccountID,Title,Name,Field,Email,PhoneNumber,PostalCode,Country,StateOrRegion,City,IsActive) VALUES - (@ID,@AccountID,@Name,@Field,@Email,@PhoneNumber,@PostalCode,@Country,@StateOrRegion,@City,@IsActive) + (@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, @@ -26,6 +27,7 @@ namespace BoredCareers.Services.DatabaseService { 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); @@ -124,11 +126,12 @@ namespace BoredCareers.Services.DatabaseService { public async Task SetResumeMilitary(MySqlConnection connection, ResumeMilitary military) { string command = @" INSERT INTO Resume - (ID,ResumeID,Country,Rank,DateStarted,StillServing,DateEnded) + (ID,ResumeID,Veteran,Country,Rank,DateStarted,StillServing,DateEnded) VALUES - (@ID,@ResumeID,@Country,@Rank,@DateStarted,@StillServing,@DateEnded) + (@ID,@ResumeID,@Veteran,@Country,@Rank,@DateStarted,@StillServing,@DateEnded) ON DUPLICATE KEY UPDATE ResumeID = @ResumeID, + Veteran = @Veteran, Country = @Country, Rank = @Rank, DateStarted = @DateStarted, @@ -139,6 +142,7 @@ namespace BoredCareers.Services.DatabaseService { MySqlCommand cmd = new MySqlCommand(command, connection); 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());