diff --git a/src/Client/src/app/pages/resumes/resumes.component.html b/src/Client/src/app/pages/resumes/resumes.component.html
index 0e9fe97..260a897 100644
--- a/src/Client/src/app/pages/resumes/resumes.component.html
+++ b/src/Client/src/app/pages/resumes/resumes.component.html
@@ -1,6 +1,8 @@
@for(resume of myResumes; track myResumes.length){
-
+ @if (resume.id != null){
+
+ }
}
diff --git a/src/Server/Services/DatabaseService/Resume.cs b/src/Server/Services/DatabaseService/Resume.cs
index 27e1254..10cee22 100644
--- a/src/Server/Services/DatabaseService/Resume.cs
+++ b/src/Server/Services/DatabaseService/Resume.cs
@@ -58,41 +58,48 @@ namespace BoredCareers.Services.DatabaseService {
return resumes.ToArray();
}
- private async Task ExecuteReaderAsync(MySqlConnection conn, string query, int resumeId) {
- var cmd = new MySqlCommand(query, conn);
- cmd.Parameters.AddWithValue("@ResumeID", resumeId);
- return await cmd.ExecuteReaderAsync();
- }
-
public async Task GetResume(int ResumeID) {
using (var conn = GetConnection()) {
await conn.OpenAsync();
- Resume? resume = await GetResumeHeader(await ExecuteReaderAsync(conn, "SELECT * FROM Resume WHERE ID = @ResumeID;", ResumeID));
+ // Check if resume header exists
+ Resume? resume = await GetResumeHeader(ResumeID);
if (resume == null) { return null; }
- Task[] tasks = [
- ExecuteReaderAsync(conn, "SELECT * FROM ResumeExperience WHERE ResumeID = @ResumeID;", ResumeID),
- ExecuteReaderAsync(conn, "SELECT * FROM ResumeExperienceBullet WHERE ResumeID = @ResumeID;", ResumeID),
- ExecuteReaderAsync(conn, "SELECT * FROM ResumeMilitary WHERE ResumeID = @ResumeID;", ResumeID),
- ExecuteReaderAsync(conn, "SELECT * FROM ResumeMilitaryBullet WHERE ResumeID = @ResumeID;", ResumeID),
- ExecuteReaderAsync(conn, "SELECT * FROM ResumeEducation WHERE ResumeID = @ResumeID;", ResumeID),
- ExecuteReaderAsync(conn, "SELECT * FROM ResumeSkill WHERE ResumeID = @ResumeID;", ResumeID),
- ExecuteReaderAsync(conn, "SELECT * FROM ResumeLanguage WHERE ResumeID = @ResumeID;", ResumeID),
- ExecuteReaderAsync(conn, "SELECT * FROM ResumeCertification WHERE ResumeID = @ResumeID;", ResumeID),
- ExecuteReaderAsync(conn, "SELECT * FROM ResumeProject WHERE ResumeID = @ResumeID;", ResumeID),
- ];
- await Task.WhenAll(tasks);
+ // Create parallel threads
+ Task experienceTask = GetResumeExperience(ResumeID);
+ Task experienceBulletsTask = GetResumeExperienceBullets(ResumeID);
+ Task militaryTask = GetResumeMilitary(ResumeID);
+ Task militaryBulletsTask = GetResumeMilitaryBullets(ResumeID);
+ Task educationTask = GetResumeEducation(ResumeID);
+ Task skillsTask = GetResumeSkills(ResumeID);
+ Task languagesTask = GetResumeLanguages(ResumeID);
+ Task certificationTask = GetResumeCertification(ResumeID);
+ Task projectsTask = GetResumeProjects(ResumeID);
- ResumeExperience[] experience = await GetResumeExperience(await tasks[0]);
- ResumeExperienceBullet[] bullets = await GetResumeExperienceBullets(await tasks[1]);
- ResumeMilitary? military = await GetResumeMilitary(await tasks[2]);
- ResumeMilitaryBullet[] militaryBullets = await GetResumeMilitaryBullets(await tasks[3]);
- ResumeEducation[] education = await GetResumeEducation(await tasks[4]);
- ResumeSkill[] skills = await GetResumeSkills(await tasks[5]);
- ResumeLanguage[] languages = await GetResumeLanguages(await tasks[6]);
- ResumeCertification[] certs = await GetResumeCertification(await tasks[7]);
- ResumeProject[] projects = await GetResumeProjects(await tasks[8]);
+ // Run all in parallel
+ await Task.WhenAll(
+ experienceTask,
+ experienceBulletsTask,
+ militaryTask,
+ militaryBulletsTask,
+ educationTask,
+ skillsTask,
+ languagesTask,
+ certificationTask,
+ projectsTask
+ );
+
+ // Get results from parallel processes
+ ResumeExperience[] experience = await experienceTask;
+ ResumeExperienceBullet[] bullets = await experienceBulletsTask;
+ ResumeMilitary? military = await militaryTask;
+ ResumeMilitaryBullet[] militaryBullets = await militaryBulletsTask;
+ ResumeEducation[] education = await educationTask;
+ ResumeSkill[] skills = await skillsTask;
+ ResumeLanguage[] languages = await languagesTask;
+ ResumeCertification[] certs = await certificationTask;
+ ResumeProject[] projects = await projectsTask;
Dictionary groupedExperienceBullets = bullets.GroupBy(b => Convert.ToInt32(b.ResumeExperienceID)).ToDictionary(g => g.Key, g => g.ToArray());
foreach (var exp in experience) {
diff --git a/src/Server/Services/DatabaseService/ResumeParts/GetResumeParts.cs b/src/Server/Services/DatabaseService/ResumeParts/GetResumeParts.cs
index b0f4409..a4c9d7a 100644
--- a/src/Server/Services/DatabaseService/ResumeParts/GetResumeParts.cs
+++ b/src/Server/Services/DatabaseService/ResumeParts/GetResumeParts.cs
@@ -1,246 +1,310 @@
using BoredCareers.Entities;
+using MySql.Data.MySqlClient;
using System.Data;
using System.Data.Common;
namespace BoredCareers.Services.DatabaseService {
public partial class DatabaseService {
- public async Task GetResumeHeader(DbDataReader reader) {
- while (await reader.ReadAsync()) {
- 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");
- string _phonenumber = reader.GetString("PhoneNumber");
- string _postalcode = reader.GetString("PostalCode");
- string _country = reader.GetString("Country");
- string _state = reader.GetString("StateOrRegion");
- string _city = reader.GetString("City");
- bool _isactive = reader.GetBoolean("IsActive");
- return new Resume() {
- ID = _id,
- AccountID = _accountid,
- Title = _title,
- Name = _name,
- Field = _field,
- Email = _email,
- PhoneNumber = _phonenumber,
- PostalCode = _postalcode,
- Country = _country,
- StateOrRegion = _state,
- City = _city,
- IsActive = _isactive
- };
+ string GetString(DbDataReader reader, string name) {
+ return reader.IsDBNull(reader.GetOrdinal(name)) ? "" : reader.GetString(name);
+ }
+
+ public async Task GetResumeHeader(int ResumeID) {
+ using (MySqlConnection connection = GetConnection()) {
+ await connection.OpenAsync();
+ MySqlCommand cmd = new MySqlCommand("SELECT * FROM Resume WHERE ID = @ID;", connection);
+ cmd.Parameters.AddWithValue("@ID", ResumeID);
+ using (DbDataReader reader = await cmd.ExecuteReaderAsync()) {
+ while (await reader.ReadAsync()) {
+ int _id = reader.GetInt32("ID");
+ int _accountid = reader.GetInt32("AccountID");
+ string _title = GetString(reader, "Title");
+ string _name = GetString(reader, "Name");
+ string _field = GetString(reader, "Field");
+ string _email = GetString(reader, "Email");
+ string _phonenumber = GetString(reader, "PhoneNumber");
+ string _postalcode = GetString(reader, "PostalCode");
+ string _country = GetString(reader, "Country");
+ string _state = GetString(reader, "StateOrRegion");
+ string _city = GetString(reader, "City");
+ bool _isactive = reader.GetBoolean("IsActive");
+ return new Resume() {
+ ID = _id,
+ AccountID = _accountid,
+ Title = _title,
+ Name = _name,
+ Field = _field,
+ Email = _email,
+ PhoneNumber = _phonenumber,
+ PostalCode = _postalcode,
+ Country = _country,
+ StateOrRegion = _state,
+ City = _city,
+ IsActive = _isactive
+ };
+ }
+ }
}
return null;
}
- public async Task GetResumeExperienceBullets(DbDataReader reader) {
- List experienceBullets = new List();
- while (await reader.ReadAsync()) {
- if (reader == null) { break; }
- int _id = reader.GetInt32("ID");
- int _resumeid = reader.GetInt32("ResumeID");
- int _experienceid = reader.GetInt32("ResumeExperienceID");
- string _jobfunction = reader.GetString("JobFunction");
- experienceBullets.Add(new ResumeExperienceBullet() {
- ID = _id,
- ResumeID = _resumeid,
- ResumeExperienceID = _experienceid,
- JobFunction = _jobfunction
- });
- }
- return experienceBullets.ToArray();
- }
-
- public async Task GetResumeExperience(DbDataReader reader) {
+ public async Task GetResumeExperience(int resumeId) {
List experience = new List();
- while (await reader.ReadAsync()) {
- if (reader == null) { break; }
- int _id = reader.GetInt32("ID");
- int _resumeid = reader.GetInt32("ResumeID");
- string _jobtitle = reader.GetString("JobTitle");
- string _company = reader.GetString("Company");
- string _postalcode = reader.GetString("PostalCode");
- string _country = reader.GetString("Country");
- string _state = reader.GetString("StateOrRegion");
- string _city = reader.GetString("City");
- DateTime _datestarted = reader.GetDateTime("DateStarted");
- bool _stillempoyed = reader.GetBoolean("StillEmployed");
- DateTime _dateended = reader.GetDateTime("DateEnded");
- experience.Add(new ResumeExperience() {
- ID = _id,
- ResumeID = _resumeid,
- JobTitle = _jobtitle,
- Company = _company,
- PostalCode = _postalcode,
- Country = _country,
- StateOrRegion = _state,
- City = _city,
- DateStarted = _datestarted,
- StillEmployed = _stillempoyed,
- DateEnded = _dateended,
- });
+ using (var conn = GetConnection()) {
+ await conn.OpenAsync();
+ var cmd = new MySqlCommand("SELECT * FROM ResumeExperience WHERE ResumeID = @ResumeID;", conn);
+ cmd.Parameters.AddWithValue("@ResumeID", resumeId);
+ using (DbDataReader reader = await cmd.ExecuteReaderAsync()) {
+ while (await reader.ReadAsync()) {
+ int _id = reader.GetInt32("ID");
+ int _resumeid = reader.GetInt32("ResumeID");
+ string _jobtitle = GetString(reader, "JobTitle");
+ string _company = GetString(reader, "Company");
+ string _postalcode = GetString(reader, "PostalCode");
+ string _country = GetString(reader, "Country");
+ string _state = GetString(reader, "StateOrRegion");
+ string _city = GetString(reader, "City");
+ DateTime _datestarted = reader.GetDateTime("DateStarted");
+ bool _stillempoyed = reader.GetBoolean("StillEmployed");
+ DateTime _dateended = reader.GetDateTime("DateEnded");
+ experience.Add(new ResumeExperience() {
+ ID = _id,
+ ResumeID = _resumeid,
+ JobTitle = _jobtitle,
+ Company = _company,
+ PostalCode = _postalcode,
+ Country = _country,
+ StateOrRegion = _state,
+ City = _city,
+ DateStarted = _datestarted,
+ StillEmployed = _stillempoyed,
+ DateEnded = _dateended,
+ });
+ }
+ }
}
return experience.ToArray();
}
- public async Task GetResumeMilitaryBullets(DbDataReader reader) {
+ public async Task GetResumeExperienceBullets(int resumeId) {
+ List experienceBullets = new List();
+ using (var conn = GetConnection()) {
+ await conn.OpenAsync();
+ var cmd = new MySqlCommand("SELECT * FROM ResumeExperienceBullet WHERE ResumeID = @ResumeID;", conn);
+ cmd.Parameters.AddWithValue("@ResumeID", resumeId);
+ using (DbDataReader reader = await cmd.ExecuteReaderAsync()) {
+ while (await reader.ReadAsync()) {
+ int _id = reader.GetInt32("ID");
+ int _resumeid = reader.GetInt32("ResumeID");
+ int _experienceid = reader.GetInt32("ResumeExperienceID");
+ string _jobfunction = GetString(reader, "JobFunction");
+ experienceBullets.Add(new ResumeExperienceBullet() {
+ ID = _id,
+ ResumeID = _resumeid,
+ ResumeExperienceID = _experienceid,
+ JobFunction = _jobfunction
+ });
+ }
+ }
+ }
+ return experienceBullets.ToArray();
+ }
+
+ public async Task GetResumeMilitaryBullets(int resumeId) {
List militaryBullets = new List();
- while (await reader.ReadAsync()) {
- if (reader == null) { break; }
- int _id = reader.GetInt32("ID");
- int _resumeid = reader.GetInt32("ResumeID");
- int _experienceid = reader.GetInt32("ResumeMilitaryID");
- string _achievement = reader.GetString("Achievement");
- string _description = reader.GetString("Description");
- militaryBullets.Add(new ResumeMilitaryBullet() {
- ID = _id,
- ResumeID = _resumeid,
- ResumeMilitaryID = _experienceid,
- Achievement = _achievement,
- Description = _description
- });
+ using (var conn = GetConnection()) {
+ await conn.OpenAsync();
+ var cmd = new MySqlCommand("SELECT * FROM ResumeMilitaryBullet WHERE ResumeID = @ResumeID;", conn);
+ cmd.Parameters.AddWithValue("@ResumeID", resumeId);
+ using (DbDataReader reader = await cmd.ExecuteReaderAsync()) {
+ while (await reader.ReadAsync()) {
+ int _id = reader.GetInt32("ID");
+ int _resumeid = reader.GetInt32("ResumeID");
+ int _experienceid = reader.GetInt32("ResumeMilitaryID");
+ string _achievement = GetString(reader, "Achievement");
+ string _description = GetString(reader, "Description");
+ militaryBullets.Add(new ResumeMilitaryBullet() {
+ ID = _id,
+ ResumeID = _resumeid,
+ ResumeMilitaryID = _experienceid,
+ Achievement = _achievement,
+ Description = _description
+ });
+ }
+ }
}
return militaryBullets.ToArray();
}
- public async Task GetResumeMilitary(DbDataReader reader) {
+ public async Task GetResumeMilitary(int resumeId) {
ResumeMilitary? military = null;
- while (await reader.ReadAsync()) {
- if (reader == null) { break; }
- int _id = reader.GetInt32("ID");
- int _resumeid = reader.GetInt32("ResumeID");
- string _country = reader.GetString("Country");
- string _rank = reader.GetString("Rank");
- DateTime _datestarted = reader.GetDateTime("DateStarted");
- bool _stillServing = reader.GetBoolean("StillServing");
- DateTime _dateended = reader.GetDateTime("DateEnded");
- military = new ResumeMilitary() {
- ID = _id,
- ResumeID = _resumeid,
- Country = _country,
- Rank = _rank,
- DateStarted = _datestarted,
- StillServing = _stillServing,
- DateEnded = _dateended,
- };
+ using (var conn = GetConnection()) {
+ await conn.OpenAsync();
+ var cmd = new MySqlCommand("SELECT * FROM ResumeMilitary WHERE ResumeID = @ResumeID;", conn);
+ cmd.Parameters.AddWithValue("@ResumeID", resumeId);
+ using (DbDataReader reader = await cmd.ExecuteReaderAsync()) {
+ while (await reader.ReadAsync()) {
+ int _id = reader.GetInt32("ID");
+ int _resumeid = reader.GetInt32("ResumeID");
+ string _country = GetString(reader, "Country");
+ string _rank = GetString(reader, "Rank");
+ DateTime _datestarted = reader.GetDateTime("DateStarted");
+ bool _stillServing = reader.GetBoolean("StillServing");
+ DateTime _dateended = reader.GetDateTime("DateEnded");
+ military = new ResumeMilitary() {
+ ID = _id,
+ ResumeID = _resumeid,
+ Country = _country,
+ Rank = _rank,
+ DateStarted = _datestarted,
+ StillServing = _stillServing,
+ DateEnded = _dateended,
+ };
+ }
+ }
}
return military;
}
- public async Task GetResumeEducation(DbDataReader reader) {
+ public async Task GetResumeEducation(int resumeId) {
List? education = new List();
- while (await reader.ReadAsync()) {
- if (reader == null) { break; }
- int _id = reader.GetInt32("ID");
- int _resumeid = reader.GetInt32("ResumeID");
- string _degreetype = reader.GetString("DegreeType");
- string _degreefield = reader.GetString("DegreeField");
- string _school = reader.GetString("School");
- string _postalcode = reader.GetString("PostalCode");
- string _country = reader.GetString("Country");
- string _state = reader.GetString("StateOrRegion");
- string _city = reader.GetString("City");
- DateTime _datestarted = reader.GetDateTime("DateStarted");
- bool _stillstudying = reader.GetBoolean("StillStudying");
- DateTime _dateended = reader.GetDateTime("DateEnded");
- education.Add(new ResumeEducation {
- ID = _id,
- ResumeID = _resumeid,
- DegreeType = _degreetype,
- DegreeField = _degreefield,
- School = _school,
- PostalCode = _postalcode,
- Country = _country,
- StateOrRegion = _state,
- City = _city,
- DateStarted = _datestarted,
- StillStudying = _stillstudying,
- DateEnded = _dateended
- });
+ using (var conn = GetConnection()) {
+ await conn.OpenAsync();
+ var cmd = new MySqlCommand("SELECT * FROM ResumeEducation WHERE ResumeID = @ResumeID;", conn);
+ cmd.Parameters.AddWithValue("@ResumeID", resumeId);
+ using (DbDataReader reader = await cmd.ExecuteReaderAsync()) {
+ while (await reader.ReadAsync()) {
+ int _id = reader.GetInt32("ID");
+ int _resumeid = reader.GetInt32("ResumeID");
+ string _degreetype = GetString(reader, "DegreeType");
+ string _degreefield = GetString(reader, "DegreeField");
+ string _school = GetString(reader, "School");
+ string _postalcode = GetString(reader, "PostalCode");
+ string _country = GetString(reader, "Country");
+ string _state = GetString(reader, "StateOrRegion");
+ string _city = GetString(reader, "City");
+ DateTime _datestarted = reader.GetDateTime("DateStarted");
+ bool _stillstudying = reader.GetBoolean("StillStudying");
+ DateTime _dateended = reader.GetDateTime("DateEnded");
+ education.Add(new ResumeEducation {
+ ID = _id,
+ ResumeID = _resumeid,
+ DegreeType = _degreetype,
+ DegreeField = _degreefield,
+ School = _school,
+ PostalCode = _postalcode,
+ Country = _country,
+ StateOrRegion = _state,
+ City = _city,
+ DateStarted = _datestarted,
+ StillStudying = _stillstudying,
+ DateEnded = _dateended
+ });
+ }
+ }
}
return education.ToArray();
}
- public async Task GetResumeSkills(DbDataReader reader) {
+ public async Task GetResumeSkills(int resumeId) {
List skills = new List();
- while (await reader.ReadAsync()) {
- if (reader == null) { break; }
- int _id = reader.GetInt32("ID");
- int _resumeid = reader.GetInt32("ResumeID");
- string _name = reader.GetString("Name");
- string _description = reader.GetString("Description");
- skills.Add( new ResumeSkill {
- ID = _id,
- ResumeID = _resumeid,
- Name = _name,
- Description = _description
- } );
+ using (var conn = GetConnection()) {
+ await conn.OpenAsync();
+ var cmd = new MySqlCommand("SELECT * FROM ResumeSkill WHERE ResumeID = @ResumeID;", conn);
+ cmd.Parameters.AddWithValue("@ResumeID", resumeId);
+ using (DbDataReader reader = await cmd.ExecuteReaderAsync()) {
+ while (await reader.ReadAsync()) {
+ int _id = reader.GetInt32("ID");
+ int _resumeid = reader.GetInt32("ResumeID");
+ string _name = GetString(reader, "Name");
+ string _description = GetString(reader, "Description");
+ skills.Add(new ResumeSkill {
+ ID = _id,
+ ResumeID = _resumeid,
+ Name = _name,
+ Description = _description
+ });
+ }
+ }
}
return skills.ToArray();
}
- public async Task GetResumeLanguages(DbDataReader reader) {
+ public async Task GetResumeLanguages(int resumeId) {
List? languages = new List();
- while (await reader.ReadAsync()) {
- if (reader == null) { break; }
- int _id = reader.GetInt32("ID");
- int _resumeid = reader.GetInt32("ResumeID");
- string _language = reader.GetString("Language");
- string _proficiency = reader.GetString("Proficiency");
- languages.Add( new ResumeLanguage {
- ID = _id,
- ResumeID = _resumeid,
- Language = _language,
- Proficiency = _proficiency
- } );
+ using (var conn = GetConnection()) {
+ await conn.OpenAsync();
+ var cmd = new MySqlCommand("SELECT * FROM ResumeLanguage WHERE ResumeID = @ResumeID;", conn);
+ cmd.Parameters.AddWithValue("@ResumeID", resumeId);
+ using (DbDataReader reader = await cmd.ExecuteReaderAsync()) {
+ while (await reader.ReadAsync()) {
+ int _id = reader.GetInt32("ID");
+ int _resumeid = reader.GetInt32("ResumeID");
+ string _language = GetString(reader, "Language");
+ string _proficiency = GetString(reader, "Proficiency");
+ languages.Add(new ResumeLanguage {
+ ID = _id,
+ ResumeID = _resumeid,
+ Language = _language,
+ Proficiency = _proficiency
+ });
+ }
+ }
}
return languages.ToArray();
}
- public async Task GetResumeCertification(DbDataReader reader) {
+ public async Task GetResumeCertification(int resumeId) {
List certs = new List();
- while (await reader.ReadAsync()) {
- if (reader == null) { break; }
- int _id = reader.GetInt32("ID");
- int _resumeid = reader.GetInt32("ResumeID");
- string _name = reader.GetString("Name");
- string _url = reader.GetString("VerificationURL");
- string _description = reader.GetString("Description");
- certs.Add( new ResumeCertification {
- ID = _id,
- ResumeID = _resumeid,
- Name = _name,
- VerificationURL = _url,
- Description = _description
- } );
+ using (var conn = GetConnection()) {
+ await conn.OpenAsync();
+ var cmd = new MySqlCommand("SELECT * FROM ResumeCertification WHERE ResumeID = @ResumeID;", conn);
+ cmd.Parameters.AddWithValue("@ResumeID", resumeId);
+ using (DbDataReader reader = await cmd.ExecuteReaderAsync()) {
+ while (await reader.ReadAsync()) {
+ int _id = reader.GetInt32("ID");
+ int _resumeid = reader.GetInt32("ResumeID");
+ string _name = GetString(reader, "Name");
+ string _url = GetString(reader, "VerificationURL");
+ string _description = GetString(reader, "Description");
+ certs.Add(new ResumeCertification {
+ ID = _id,
+ ResumeID = _resumeid,
+ Name = _name,
+ VerificationURL = _url,
+ Description = _description
+ });
+ }
+ }
}
return certs.ToArray();
}
- public async Task GetResumeProjects(DbDataReader reader) {
+ public async Task GetResumeProjects(int resumeId) {
List? projects = new List();
- while (await reader.ReadAsync()) {
- if (reader == null) { break; }
- int _id = reader.GetInt32("ID");
- int _resumeid = reader.GetInt32("ResumeID");
- string _name = reader.GetString("Name");
- string _url = reader.GetString("URL");
- string _description = reader.GetString("Description");
- projects.Add( new ResumeProject {
- ID = _id,
- ResumeID = _resumeid,
- Name = _name,
- URL = _url,
- Description = _description
- } );
+ using (var conn = GetConnection()) {
+ await conn.OpenAsync();
+ var cmd = new MySqlCommand("SELECT * FROM ResumeProject WHERE ResumeID = @ResumeID;", conn);
+ cmd.Parameters.AddWithValue("@ResumeID", resumeId);
+ using (DbDataReader reader = await cmd.ExecuteReaderAsync()) {
+ while (await reader.ReadAsync()) {
+ int _id = reader.GetInt32("ID");
+ int _resumeid = reader.GetInt32("ResumeID");
+ string _name = GetString(reader, "Name");
+ string _url = GetString(reader, "URL");
+ string _description = GetString(reader, "Description");
+ projects.Add(new ResumeProject {
+ ID = _id,
+ ResumeID = _resumeid,
+ Name = _name,
+ URL = _url,
+ Description = _description
+ });
+ }
+ }
}
return projects.ToArray();
}
-
}
}