working #28
@@ -8,6 +8,7 @@
|
|||||||
<input name="resumeemail" [(ngModel)]="resume.email" type="email" placeholder="no-reply@mistox.com" />
|
<input name="resumeemail" [(ngModel)]="resume.email" type="email" placeholder="no-reply@mistox.com" />
|
||||||
<input name="resumephoneNumber" [(ngModel)]="resume.phoneNumber" type="tel" placeholder="+1 800-000-0000" />
|
<input name="resumephoneNumber" [(ngModel)]="resume.phoneNumber" type="tel" placeholder="+1 800-000-0000" />
|
||||||
<input name="resumepostalCode" [(ngModel)]="resume.postalCode" type="text" placeholder="92020" />
|
<input name="resumepostalCode" [(ngModel)]="resume.postalCode" type="text" placeholder="92020" />
|
||||||
|
<input name="resumecountry" [(ngModel)]="resume.country" type="text" placeholder="US" />
|
||||||
<input name="resumestateOrRegion" [(ngModel)]="resume.stateOrRegion" type="text" placeholder="CA" />
|
<input name="resumestateOrRegion" [(ngModel)]="resume.stateOrRegion" type="text" placeholder="CA" />
|
||||||
<input name="resumecity" [(ngModel)]="resume.city" type="text" placeholder="San Diego" />
|
<input name="resumecity" [(ngModel)]="resume.city" type="text" placeholder="San Diego" />
|
||||||
<h1>Public: </h1><input name="active" [(ngModel)]="resume.isActive" type="checkbox" />
|
<h1>Public: </h1><input name="active" [(ngModel)]="resume.isActive" type="checkbox" />
|
||||||
@@ -16,7 +17,7 @@
|
|||||||
<!-- Experience -->
|
<!-- Experience -->
|
||||||
<div class="resume-section">
|
<div class="resume-section">
|
||||||
<button type="button" (click)="addExperience()">ADD Experience</button>
|
<button type="button" (click)="addExperience()">ADD Experience</button>
|
||||||
@for(experience of resume.experience; track experience.trackUUID ){
|
@for(experience of resume.experiences; track experience.trackUUID ){
|
||||||
<div class="resume-sub-section">
|
<div class="resume-sub-section">
|
||||||
<input name="experiencejobTitle" [(ngModel)]="experience.jobTitle" type="text" placeholder="Data Entry Clerk" />
|
<input name="experiencejobTitle" [(ngModel)]="experience.jobTitle" type="text" placeholder="Data Entry Clerk" />
|
||||||
<input name="experiencecompany" [(ngModel)]="experience.company" type="text" placeholder="San Diego Gas Electric" />
|
<input name="experiencecompany" [(ngModel)]="experience.company" type="text" placeholder="San Diego Gas Electric" />
|
||||||
@@ -53,7 +54,7 @@
|
|||||||
<input name="dateEnded" [(ngModel)]="resume.military.dateEnded" type="date" />
|
<input name="dateEnded" [(ngModel)]="resume.military.dateEnded" type="date" />
|
||||||
}
|
}
|
||||||
<button type="button" (click)="addMillitaryBullet()">Add Millitary Task</button>
|
<button type="button" (click)="addMillitaryBullet()">Add Millitary Task</button>
|
||||||
@for(military of resume.military.millitaryBullets; track military.trackUUID ){
|
@for(military of resume.military.militaryBullets; track military.trackUUID ){
|
||||||
<div>
|
<div>
|
||||||
<input name="militaryachievement" [(ngModel)]="military.achievement" type="text" placeholder="Deployed Kuwait" />
|
<input name="militaryachievement" [(ngModel)]="military.achievement" type="text" placeholder="Deployed Kuwait" />
|
||||||
<textarea name="militarydescription" [(ngModel)]="military.description" placeholder="Delivered goods line-hall" ></textarea>
|
<textarea name="militarydescription" [(ngModel)]="military.description" placeholder="Delivered goods line-hall" ></textarea>
|
||||||
@@ -66,7 +67,7 @@
|
|||||||
<!-- Education -->
|
<!-- Education -->
|
||||||
<div class="resume-section">
|
<div class="resume-section">
|
||||||
<button type="button" (click)="addEducation()">ADD Education</button>
|
<button type="button" (click)="addEducation()">ADD Education</button>
|
||||||
@for(education of resume.education; track education.trackUUID){
|
@for(education of resume.educations; track education.trackUUID){
|
||||||
<div>
|
<div>
|
||||||
<input name="educationdegreeType" [(ngModel)]="education.degreeType" type="text" placeholder="Masters" />
|
<input name="educationdegreeType" [(ngModel)]="education.degreeType" type="text" placeholder="Masters" />
|
||||||
<input name="educationdegreeField" [(ngModel)]="education.degreeField" type="text" placeholder="Computer Science" />
|
<input name="educationdegreeField" [(ngModel)]="education.degreeField" type="text" placeholder="Computer Science" />
|
||||||
@@ -113,7 +114,7 @@
|
|||||||
<!-- Certification -->
|
<!-- Certification -->
|
||||||
<div class="resume-section">
|
<div class="resume-section">
|
||||||
<button type="button" (click)="addCert()">ADD Certification</button>
|
<button type="button" (click)="addCert()">ADD Certification</button>
|
||||||
@for(cert of resume.certification; track cert.trackUUID){
|
@for(cert of resume.certifications; track cert.trackUUID){
|
||||||
<div>
|
<div>
|
||||||
<input name="certname" [(ngModel)]="cert.name" type="text" placeholder="Comptia A+" />
|
<input name="certname" [(ngModel)]="cert.name" type="text" placeholder="Comptia A+" />
|
||||||
<input name="certverificationURL" [(ngModel)]="cert.verificationURL" type="text" placeholder="https://certmaster.com/certid" />
|
<input name="certverificationURL" [(ngModel)]="cert.verificationURL" type="text" placeholder="https://certmaster.com/certid" />
|
||||||
|
|||||||
@@ -57,13 +57,13 @@ export class ResumesEditorComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
addExperience(){
|
addExperience(){
|
||||||
this.resume.experience.push( new ResumeExperience );
|
this.resume.experiences.push( new ResumeExperience );
|
||||||
}
|
}
|
||||||
delExperience(self: ResumeExperience){
|
delExperience(self: ResumeExperience){
|
||||||
for(let i=0; i<this.resume.experience.length; i++){
|
for(let i=0; i<this.resume.experiences.length; i++){
|
||||||
let cur = this.resume.experience[i];
|
let cur = this.resume.experiences[i];
|
||||||
if (cur.trackUUID === self.trackUUID){
|
if (cur.trackUUID === self.trackUUID){
|
||||||
this.resume.experience.splice( i, 1 );
|
this.resume.experiences.splice( i, 1 );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -93,14 +93,14 @@ export class ResumesEditorComponent {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
addMillitaryBullet(){
|
addMillitaryBullet(){
|
||||||
this.resume.military?.millitaryBullets.push( new ResumeMilitaryBullet );
|
this.resume.military?.militaryBullets.push( new ResumeMilitaryBullet );
|
||||||
}
|
}
|
||||||
delMillitaryBullet(self: ResumeMilitaryBullet){
|
delMillitaryBullet(self: ResumeMilitaryBullet){
|
||||||
if (this.resume.military !== null){
|
if (this.resume.military !== null){
|
||||||
for(let i=0; i<this.resume.military.millitaryBullets.length; i++){
|
for(let i=0; i<this.resume.military.militaryBullets.length; i++){
|
||||||
let cur = this.resume.military.millitaryBullets[i];
|
let cur = this.resume.military.militaryBullets[i];
|
||||||
if (cur.trackUUID === self.trackUUID){
|
if (cur.trackUUID === self.trackUUID){
|
||||||
this.resume.military.millitaryBullets.splice( i, 1 );
|
this.resume.military.militaryBullets.splice( i, 1 );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -108,13 +108,13 @@ export class ResumesEditorComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
addEducation(){
|
addEducation(){
|
||||||
this.resume.education.push( new ResumeEducation );
|
this.resume.educations.push( new ResumeEducation );
|
||||||
}
|
}
|
||||||
delEducation(self: ResumeEducation){
|
delEducation(self: ResumeEducation){
|
||||||
for(let i=0; i<this.resume.education.length; i++){
|
for(let i=0; i<this.resume.educations.length; i++){
|
||||||
let cur = this.resume.education[i];
|
let cur = this.resume.educations[i];
|
||||||
if (cur.trackUUID === self.trackUUID){
|
if (cur.trackUUID === self.trackUUID){
|
||||||
this.resume.education.splice( i, 1 );
|
this.resume.educations.splice( i, 1 );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -147,13 +147,13 @@ export class ResumesEditorComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
addCert(){
|
addCert(){
|
||||||
this.resume.certification.push( new ResumeCertification );
|
this.resume.certifications.push( new ResumeCertification );
|
||||||
}
|
}
|
||||||
delCert(self: ResumeCertification){
|
delCert(self: ResumeCertification){
|
||||||
for(let i=0; i<this.resume.certification.length; i++){
|
for(let i=0; i<this.resume.certifications.length; i++){
|
||||||
let cur = this.resume.certification[i];
|
let cur = this.resume.certifications[i];
|
||||||
if (cur.trackUUID === self.trackUUID){
|
if (cur.trackUUID === self.trackUUID){
|
||||||
this.resume.certification.splice( i, 1 );
|
this.resume.certifications.splice( i, 1 );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ namespace BoredCareers.Services.DatabaseService {
|
|||||||
using (var conn = GetConnection()) {
|
using (var conn = GetConnection()) {
|
||||||
await conn.OpenAsync();
|
await conn.OpenAsync();
|
||||||
|
|
||||||
Resume? resume = await GetResume(await ExecuteReaderAsync(conn, "SELECT * FROM Resume WHERE ID = @ResumeID;", ResumeID));
|
Resume? resume = await GetResumeHeader(await ExecuteReaderAsync(conn, "SELECT * FROM Resume WHERE ID = @ResumeID;", ResumeID));
|
||||||
if (resume == null) { return null; }
|
if (resume == null) { return null; }
|
||||||
|
|
||||||
Task<DbDataReader>[] tasks = [
|
Task<DbDataReader>[] tasks = [
|
||||||
@@ -94,21 +94,21 @@ namespace BoredCareers.Services.DatabaseService {
|
|||||||
ResumeCertification[] certs = await GetResumeCertification(await tasks[7]);
|
ResumeCertification[] certs = await GetResumeCertification(await tasks[7]);
|
||||||
ResumeProject[] projects = await GetResumeProjects(await tasks[8]);
|
ResumeProject[] projects = await GetResumeProjects(await tasks[8]);
|
||||||
|
|
||||||
Dictionary<int, ResumeExperienceBullet[]> groupedExperienceBullets = bullets.GroupBy(b => b.ResumeExperienceID).ToDictionary(g => g.Key, g => g.ToArray());
|
Dictionary<int, ResumeExperienceBullet[]> groupedExperienceBullets = bullets.GroupBy(b => Convert.ToInt32(b.ResumeExperienceID)).ToDictionary(g => g.Key, g => g.ToArray());
|
||||||
foreach (var exp in experience) {
|
foreach (var exp in experience) {
|
||||||
exp.ExperienceBullets = groupedExperienceBullets.TryGetValue(Convert.ToInt32(exp.ID), out var b) ? b : Array.Empty<ResumeExperienceBullet>();
|
exp.ExperienceBullets = groupedExperienceBullets.TryGetValue(Convert.ToInt32(exp.ID), out var b) ? b : Array.Empty<ResumeExperienceBullet>();
|
||||||
}
|
}
|
||||||
|
|
||||||
resume.Experience = experience;
|
resume.Experiences = experience;
|
||||||
resume.Educations = education;
|
resume.Educations = education;
|
||||||
resume.Skills = skills;
|
resume.Skills = skills;
|
||||||
resume.Languages = languages;
|
resume.Languages = languages;
|
||||||
resume.Certification = certs;
|
resume.Certifications = certs;
|
||||||
resume.Projects = projects;
|
resume.Projects = projects;
|
||||||
|
|
||||||
if (military != null) {
|
if (military != null) {
|
||||||
military.MillitaryBullets = militaryBullets;
|
military.MilitaryBullets = militaryBullets;
|
||||||
resume.Millitary = military;
|
resume.Military = military;
|
||||||
}
|
}
|
||||||
|
|
||||||
return resume;
|
return resume;
|
||||||
@@ -116,66 +116,62 @@ namespace BoredCareers.Services.DatabaseService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public async Task SetResume(Resume resume) {
|
public async Task SetResume(Resume resume) {
|
||||||
using (var conn = GetConnection()) {
|
// Set ResumeID on all nodes
|
||||||
await conn.OpenAsync();
|
int _ResumeID = await SetResumeHeader(resume);
|
||||||
|
if (resume.Military != null) {
|
||||||
// Set ResumeID on all nodes
|
resume.Military.ResumeID = _ResumeID;
|
||||||
int _ResumeID = await SetResume(conn, resume);
|
foreach (ResumeMilitaryBullet cur in resume.Military.MilitaryBullets) {
|
||||||
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) {
|
|
||||||
cur.ResumeID = _ResumeID;
|
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<Task<ResumeExperience>> experienceTasks = new List<Task<ResumeExperience>>();
|
|
||||||
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<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);
|
|
||||||
}
|
}
|
||||||
|
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<Task<ResumeExperience>> experienceTasks = new List<Task<ResumeExperience>>();
|
||||||
|
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<Task> experienceBulletTasks = new List<Task>();
|
||||||
|
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 ) {
|
public async Task DeleteResume( int ResumeID ) {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ using System.Data.Common;
|
|||||||
namespace BoredCareers.Services.DatabaseService {
|
namespace BoredCareers.Services.DatabaseService {
|
||||||
public partial class DatabaseService {
|
public partial class DatabaseService {
|
||||||
|
|
||||||
public async Task<Resume?> GetResume(DbDataReader reader) {
|
public async Task<Resume?> GetResumeHeader(DbDataReader reader) {
|
||||||
while (await reader.ReadAsync()) {
|
while (await reader.ReadAsync()) {
|
||||||
if (reader == null) { break; }
|
if (reader == null) { break; }
|
||||||
int _id = reader.GetInt32("ID");
|
int _id = reader.GetInt32("ID");
|
||||||
|
|||||||
@@ -4,303 +4,336 @@ using MySql.Data.MySqlClient;
|
|||||||
namespace BoredCareers.Services.DatabaseService {
|
namespace BoredCareers.Services.DatabaseService {
|
||||||
public partial class DatabaseService {
|
public partial class DatabaseService {
|
||||||
|
|
||||||
public async Task<int> SetResume(MySqlConnection connection, Resume resume) {
|
public async Task<int> SetResumeHeader(Resume resume) {
|
||||||
string command = @"
|
using (var conn = GetConnection()) {
|
||||||
INSERT INTO Resume
|
await conn.OpenAsync();
|
||||||
(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<ResumeExperience> 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) {
|
|
||||||
string command = @"
|
string command = @"
|
||||||
INSERT INTO Resume
|
INSERT INTO Resume
|
||||||
(ID,ResumeID,ResumeMilitaryID,Achievement)
|
(ID,AccountID,Title,Name,Field,Email,PhoneNumber,PostalCode,Country,StateOrRegion,City,IsActive)
|
||||||
VALUES
|
VALUES
|
||||||
(@ID,@ResumeID,@ResumeMilitaryID,@Achievement)
|
(@ID,@AccountID,@Title,@Name,@Field,@Email,@PhoneNumber,@PostalCode,@Country,@StateOrRegion,@City,@IsActive)
|
||||||
ON DUPLICATE KEY UPDATE
|
ON DUPLICATE KEY UPDATE
|
||||||
ResumeID = @ResumeID,
|
AccountID = @AccountID,
|
||||||
ResumeMilitaryID = @ResumeMilitaryID,
|
Title = @Title,
|
||||||
Achievement = @Achievement,
|
Name = @Name,
|
||||||
Description = @Description;
|
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);
|
MySqlCommand cmd = new MySqlCommand(command, conn);
|
||||||
cmd.Parameters.AddWithValue("@ID", cur.ID);
|
cmd.Parameters.AddWithValue("@ID", resume.ID);
|
||||||
cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID);
|
cmd.Parameters.AddWithValue("@AccountID", resume.AccountID);
|
||||||
cmd.Parameters.AddWithValue("@ResumeMilitaryID", cur.ResumeMilitaryID);
|
cmd.Parameters.AddWithValue("@Title", resume.Title);
|
||||||
cmd.Parameters.AddWithValue("@Achievement", cur.Achievement);
|
cmd.Parameters.AddWithValue("@Name", resume.Name);
|
||||||
cmd.Parameters.AddWithValue("@Description", cur.Description);
|
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();
|
await cmd.ExecuteNonQueryAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<ResumeMilitary> SetResumeMilitary(MySqlConnection connection, ResumeMilitary? military) {
|
public async Task<ResumeExperience> SetResumeExperience(ResumeExperience experiences) {
|
||||||
if (military != null) {
|
using (var conn = GetConnection()) {
|
||||||
|
await conn.OpenAsync();
|
||||||
string command = @"
|
string command = @"
|
||||||
INSERT INTO Resume
|
INSERT INTO ResumeExperience
|
||||||
(ID,ResumeID,Country,Rank,DateStarted,StillServing,DateEnded)
|
(ID,ResumeID,JobTitle,Company,PostalCode,Country,StateOrRegion,City,DateStarted,StillEmployed,DateEnded)
|
||||||
VALUES
|
VALUES
|
||||||
(@ID,@ResumeID,@Country,@Rank,@DateStarted,@StillServing,@DateEnded)
|
(@ID,@ResumeID,@JobTitle,@Company,@PostalCode,@Country,@StateOrRegion,@City,@DateStarted,@StillEmployed,@DateEnded)
|
||||||
ON DUPLICATE KEY UPDATE
|
ON DUPLICATE KEY UPDATE
|
||||||
ResumeID = @ResumeID,
|
ResumeID = @ResumeID,
|
||||||
Country = @Country,
|
JobTitle = @JobTitle,
|
||||||
Rank = @Rank,
|
Company = @Company,
|
||||||
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,
|
|
||||||
PostalCode = @PostalCode,
|
PostalCode = @PostalCode,
|
||||||
Country = @Country,
|
Country = @Country,
|
||||||
StateOrRegion = @StateOrRegion,
|
StateOrRegion = @StateOrRegion,
|
||||||
City = @City,
|
City = @City,
|
||||||
DateStarted = @DateStarted,
|
DateStarted = @DateStarted,
|
||||||
StillStudying = @StillStudying,
|
StillEmployed = @StillEmployed,
|
||||||
DateEnded = @DateEnded;
|
DateEnded = @DateEnded;
|
||||||
|
|
||||||
|
SELECT LAST_INSERT_ID();
|
||||||
";
|
";
|
||||||
|
|
||||||
MySqlCommand cmd = new MySqlCommand(command, connection);
|
MySqlCommand cmd = new MySqlCommand(command, conn);
|
||||||
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("@DegreeType", cur.DegreeType);
|
cmd.Parameters.AddWithValue("@JobTitle", experiences.JobTitle);
|
||||||
cmd.Parameters.AddWithValue("@DegreeField", cur.DegreeField);
|
cmd.Parameters.AddWithValue("@Company", experiences.Company);
|
||||||
cmd.Parameters.AddWithValue("@School", cur.School);
|
cmd.Parameters.AddWithValue("@Country", experiences.Country);
|
||||||
cmd.Parameters.AddWithValue("@PostalCode", cur.PostalCode);
|
cmd.Parameters.AddWithValue("@StateOrRegion", experiences.StateOrRegion);
|
||||||
cmd.Parameters.AddWithValue("@Country", cur.Country);
|
cmd.Parameters.AddWithValue("@City", experiences.City);
|
||||||
cmd.Parameters.AddWithValue("@StateOrRegion", cur.StateOrRegion);
|
cmd.Parameters.AddWithValue("@PostalCode", experiences.PostalCode);
|
||||||
cmd.Parameters.AddWithValue("@City", cur.City);
|
cmd.Parameters.AddWithValue("@DateStarted", experiences.DateStarted.ToUniversalTime());
|
||||||
cmd.Parameters.AddWithValue("@DateStarted", cur.DateStarted.ToUniversalTime());
|
cmd.Parameters.AddWithValue("@StillEmployed", experiences.StillEmployed);
|
||||||
cmd.Parameters.AddWithValue("@StillStudying", cur.StillStudying);
|
cmd.Parameters.AddWithValue("@DateEnded", experiences.DateEnded.ToUniversalTime());
|
||||||
cmd.Parameters.AddWithValue("@DateEnded", cur.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) {
|
public async Task SetResumeMilitaryBullets(ResumeMilitaryBullet[] bullets) {
|
||||||
foreach (ResumeSkill cur in skills) {
|
using (var conn = GetConnection()) {
|
||||||
string command = @"
|
await conn.OpenAsync();
|
||||||
INSERT INTO Resume
|
foreach (ResumeMilitaryBullet cur in bullets) {
|
||||||
(ID,ResumeID,Name,Description)
|
string command = @"
|
||||||
VALUES
|
INSERT INTO ResumeMilitaryBullet
|
||||||
(@ID,@ResumeID,@Name,@Description)
|
(ID,ResumeID,ResumeMilitaryID,Achievement)
|
||||||
ON DUPLICATE KEY UPDATE
|
VALUES
|
||||||
ResumeID = @ResumeID,
|
(@ID,@ResumeID,@ResumeMilitaryID,@Achievement)
|
||||||
Name = @Name,
|
ON DUPLICATE KEY UPDATE
|
||||||
Description = @Description;
|
ResumeID = @ResumeID,
|
||||||
";
|
ResumeMilitaryID = @ResumeMilitaryID,
|
||||||
|
Achievement = @Achievement,
|
||||||
|
Description = @Description;
|
||||||
|
";
|
||||||
|
|
||||||
MySqlCommand cmd = new MySqlCommand(command, connection);
|
MySqlCommand cmd = new MySqlCommand(command, conn);
|
||||||
cmd.Parameters.AddWithValue("@ID", cur.ID);
|
cmd.Parameters.AddWithValue("@ID", cur.ID);
|
||||||
cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID);
|
cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID);
|
||||||
cmd.Parameters.AddWithValue("@Name", cur.Name);
|
cmd.Parameters.AddWithValue("@ResumeMilitaryID", cur.ResumeMilitaryID);
|
||||||
cmd.Parameters.AddWithValue("@Description", cur.Description);
|
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) {
|
public async Task<ResumeMilitary> SetResumeMilitary(ResumeMilitary? military) {
|
||||||
foreach (ResumeLanguage cur in languages) {
|
using (var conn = GetConnection()) {
|
||||||
string command = @"
|
await conn.OpenAsync();
|
||||||
INSERT INTO Resume
|
if (military != null) {
|
||||||
(ID,ResumeID,Language,Proficiency)
|
string command = @"
|
||||||
VALUES
|
INSERT INTO ResumeMilitary
|
||||||
(@ID,@ResumeID,@Language,@Proficiency)
|
(ID,ResumeID,Country,`Rank`,DateStarted,StillServing,DateEnded)
|
||||||
ON DUPLICATE KEY UPDATE
|
VALUES
|
||||||
ResumeID = @ResumeID,
|
(@ID,@ResumeID,@Country,@Rank,@DateStarted,@StillServing,@DateEnded)
|
||||||
Language = @Language,
|
ON DUPLICATE KEY UPDATE
|
||||||
Proficiency = @Proficiency;
|
ResumeID = @ResumeID,
|
||||||
";
|
Country = @Country,
|
||||||
|
`Rank` = @Rank,
|
||||||
|
DateStarted = @DateStarted,
|
||||||
|
StillServing = @StillServing,
|
||||||
|
DateEnded = @DateEnded;
|
||||||
|
|
||||||
MySqlCommand cmd = new MySqlCommand(command, connection);
|
SELECT LAST_INSERT_ID();
|
||||||
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();
|
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) {
|
public async Task SetResumeEducation(ResumeEducation[] educations) {
|
||||||
foreach (ResumeCertification cur in certifications) {
|
using (var conn = GetConnection()) {
|
||||||
string command = @"
|
await conn.OpenAsync();
|
||||||
INSERT INTO Resume
|
foreach (ResumeEducation cur in educations) {
|
||||||
(ID,ResumeID,Name,VerificationURL,Description)
|
string command = @"
|
||||||
VALUES
|
INSERT INTO ResumeEducation
|
||||||
(@ID,@ResumeID,@Name,@VerificationURL,@Description)
|
(ID,ResumeID,DegreeType,DegreeField,School,PostalCode,Country,StateOrRegion,City,DateStarted,StillStudying,DateEnded)
|
||||||
ON DUPLICATE KEY UPDATE
|
VALUES
|
||||||
ResumeID = @ResumeID,
|
(@ID,@ResumeID,@DegreeType,@DegreeField,@School,@PostalCode,@Country,@StateOrRegion,@City,@DateStarted,@StillStudying,@DateEnded)
|
||||||
Name = @DegreeNameType,
|
ON DUPLICATE KEY UPDATE
|
||||||
VerificationURL = @VerificationURL,
|
ResumeID = @ResumeID,
|
||||||
Description = @Description;
|
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);
|
MySqlCommand cmd = new MySqlCommand(command, conn);
|
||||||
cmd.Parameters.AddWithValue("@ID", cur.ID);
|
cmd.Parameters.AddWithValue("@ID", cur.ID);
|
||||||
cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID);
|
cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID);
|
||||||
cmd.Parameters.AddWithValue("@Name", cur.Name);
|
cmd.Parameters.AddWithValue("@DegreeType", cur.DegreeType);
|
||||||
cmd.Parameters.AddWithValue("@VerificationURL", cur.VerificationURL);
|
cmd.Parameters.AddWithValue("@DegreeField", cur.DegreeField);
|
||||||
cmd.Parameters.AddWithValue("@Description", cur.Description);
|
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) {
|
public async Task SetResumeSkills(ResumeSkill[] skills) {
|
||||||
foreach (ResumeProject cur in projects) {
|
using (var conn = GetConnection()) {
|
||||||
string command = @"
|
await conn.OpenAsync();
|
||||||
INSERT INTO Resume
|
foreach (ResumeSkill cur in skills) {
|
||||||
(ID,ResumeID,Name,URL,Description)
|
string command = @"
|
||||||
VALUES
|
INSERT INTO ResumeSkill
|
||||||
(@ID,@ResumeID,@Name,@URL,@Description)
|
(ID,ResumeID,Name,Description)
|
||||||
ON DUPLICATE KEY UPDATE
|
VALUES
|
||||||
ResumeID = @ResumeID,
|
(@ID,@ResumeID,@Name,@Description)
|
||||||
Name = @Name,
|
ON DUPLICATE KEY UPDATE
|
||||||
URL = @URL,
|
ResumeID = @ResumeID,
|
||||||
Description = @Description;
|
Name = @Name,
|
||||||
";
|
Description = @Description;
|
||||||
|
";
|
||||||
|
|
||||||
MySqlCommand cmd = new MySqlCommand(command, connection);
|
MySqlCommand cmd = new MySqlCommand(command, conn);
|
||||||
cmd.Parameters.AddWithValue("@ID", cur.ID);
|
cmd.Parameters.AddWithValue("@ID", cur.ID);
|
||||||
cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID);
|
cmd.Parameters.AddWithValue("@ResumeID", cur.ResumeID);
|
||||||
cmd.Parameters.AddWithValue("@Name", cur.Name);
|
cmd.Parameters.AddWithValue("@Name", cur.Name);
|
||||||
cmd.Parameters.AddWithValue("@URL", cur.URL);
|
cmd.Parameters.AddWithValue("@Description", cur.Description);
|
||||||
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user