From e3b282da97ccd1dca706eecdc3b4e3c992d080d7 Mon Sep 17 00:00:00 2001 From: Derek Holloway Date: Sun, 20 Jul 2025 12:28:40 -0700 Subject: [PATCH 01/10] Start work on home page --- .../app/pages/main/home/home.component.html | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/Client/src/app/pages/main/home/home.component.html b/src/Client/src/app/pages/main/home/home.component.html index e69de29..9141b33 100644 --- a/src/Client/src/app/pages/main/home/home.component.html +++ b/src/Client/src/app/pages/main/home/home.component.html @@ -0,0 +1,27 @@ +
+

Death by a thousand slops

+ + If you were a company and wanted to go through your applications. Today that is near impossible with the + thousands of auto applications. + + + We have multiple measures in place to stop applicants from applying with outside tools. Making it faster to apply + and easier for companies to filter for what they need. + +
+ +
+

AI Resume's

+ + If you were to be going through resumes and see that they were all made with AI + You would start using AI to filter your resumes. + +
+ +
+

AI Resume's

+ + If you were to be going through resumes and see that they were all made with AI + You would start using AI to filter your resumes. + +
\ No newline at end of file From 2797d05389cb7c9f6d8427fa09562563075baf27 Mon Sep 17 00:00:00 2001 From: Derek Holloway Date: Sun, 20 Jul 2025 19:18:14 -0700 Subject: [PATCH 02/10] Create layout for homepage --- src/Client/src/app/app.css | 2 +- .../app/pages/main/home/home.component.css | 48 +++++++++ .../app/pages/main/home/home.component.html | 102 +++++++++++++----- src/Client/src/styles.css | 2 +- 4 files changed, 128 insertions(+), 26 deletions(-) diff --git a/src/Client/src/app/app.css b/src/Client/src/app/app.css index 1afe8cc..f8bee69 100644 --- a/src/Client/src/app/app.css +++ b/src/Client/src/app/app.css @@ -44,7 +44,7 @@ .active { background-color: #00000010; - color: var(--Mistox-Bright); + color: var(--Mistox-Frame); } .nav-button-login { diff --git a/src/Client/src/app/pages/main/home/home.component.css b/src/Client/src/app/pages/main/home/home.component.css index e69de29..1b670c7 100644 --- a/src/Client/src/app/pages/main/home/home.component.css +++ b/src/Client/src/app/pages/main/home/home.component.css @@ -0,0 +1,48 @@ +.center-frame { + margin: 0 200px; + width: calc(100% - 400px); +} + +.content-frame { + display: flex; + flex-direction: row; + justify-content: space-between; + width: 100%; +} + +.content-frame:nth-child(even) { + flex-direction: row-reverse; +} + +.floating-frame { + width: 450px; + background-color: var(--Mistox-Frame); + padding: 20px; + margin: 20px 0; + border: 1px solid #000; + border-radius: 10px; +} + +.title-block { + margin: 0; + margin-bottom: 20px; + white-space: nowrap; + text-align: center; + font-size: 0.8rem; +} + +.title-block h1 { + margin: 0; +} + +hr { + width: 90%; + margin: 20px 5%; +} + +.solution-frame { + height: 200px; + background-color: blueviolet; + width: calc(100% - 515px); + margin: 20px 0; +} \ No newline at end of file diff --git a/src/Client/src/app/pages/main/home/home.component.html b/src/Client/src/app/pages/main/home/home.component.html index 9141b33..d36ac97 100644 --- a/src/Client/src/app/pages/main/home/home.component.html +++ b/src/Client/src/app/pages/main/home/home.component.html @@ -1,27 +1,81 @@ -
-

Death by a thousand slops

- - If you were a company and wanted to go through your applications. Today that is near impossible with the - thousands of auto applications. - - - We have multiple measures in place to stop applicants from applying with outside tools. Making it faster to apply - and easier for companies to filter for what they need. - -
+
+
+
+
+

death by a thousand applicants

+
+
+

Everyone’s applying to everything. With automation tools, job seekers blast out hundreds of applications in minutes.

+

It’s turned the job market into noise — a flood of résumés that no recruiter can realistically sift through.

+

Volume wins the race, but nobody’s really being heard.

+
+
+
-
-

AI Resume's

- - If you were to be going through resumes and see that they were all made with AI - You would start using AI to filter your resumes. - -
+
+
-
-

AI Resume's

- - If you were to be going through resumes and see that they were all made with AI - You would start using AI to filter your resumes. - +
+
+
+

keyword frenzie

+
+
+

AI is scanning your resume, not a human. And it’s not looking for personality — it’s hunting for keywords.

+

In today’s job market, crafting a resume isn’t about telling your story. It’s about guessing the right terms an algorithm wants to see.

+

It’s no longer about standing out — it’s about fitting the filter.

+
+
+
+ +
+
+ +
+
+
+

response black-hole

+
+
+

Companies are overwhelmed, and most simply don’t have the time to respond to every application.

+

With hundreds — sometimes thousands — of resumes coming in for a single role, even automated responses fall short.

+

Silence isn't personal. It’s just capacity.

+
+
+
+ +
+
+ +
+
+
+

zombie postings

+
+
+

Not every job posting is real. Some listings stay up long after the role is filled — or worse, never existed in the first place.

+

These "zombie listings" inflate the perception of a healthy job market or act as bait to collect resumes and personal data.

+

You're not always applying — sometimes you're just feeding the machine.

+
+
+
+ +
+
+ +
+
+
+

caveman tools

+
+
+

Hiring tools haven't kept up. Most companies still rely on outdated systems to manage a flood of modern, automated applications.

+

What should be a streamlined process turns into digital clutter — messy dashboards, keyword roulette, and missed talent.

+

The tools are broken, but the workload keeps growing.

+
+
+
+ +
+
\ No newline at end of file diff --git a/src/Client/src/styles.css b/src/Client/src/styles.css index b37f794..99bb268 100644 --- a/src/Client/src/styles.css +++ b/src/Client/src/styles.css @@ -5,7 +5,7 @@ --Mistox-Medium: #890620; --Mistox-Light: #B6465F; --Mistox-Bright: #FC440F; - --Mistox-Frame: #ff000078; + --Mistox-Frame: #FF5A00CC; --Mistox-Button: #ff9999; --Mistox-Button-Hover: #ff999977; --Mistox-White: #FFF; From a88bc6514908c7770627b2eee80e4d416a1ed345 Mon Sep 17 00:00:00 2001 From: Derek Holloway Date: Sun, 20 Jul 2025 20:11:30 -0700 Subject: [PATCH 03/10] Fix employee drivers --- src/Server/Controllers/EmployeeController.cs | 64 ++++++++++++++++ .../Services/DatabaseService/Employee.cs | 74 +++++++++++++++++-- 2 files changed, 132 insertions(+), 6 deletions(-) create mode 100644 src/Server/Controllers/EmployeeController.cs diff --git a/src/Server/Controllers/EmployeeController.cs b/src/Server/Controllers/EmployeeController.cs new file mode 100644 index 0000000..debdc6d --- /dev/null +++ b/src/Server/Controllers/EmployeeController.cs @@ -0,0 +1,64 @@ +using Microsoft.AspNetCore.Mvc; +using BoredCareers.Services.DatabaseService; +using BoredCareers.Entities; +using System.Web.Http; + +namespace BoredCareers.Controllers { + [ApiController] + [Route("api/employee")] + public class EmployeeController : MistoxControllerBase { + + public EmployeeController(DatabaseService db) : base(db) {} + + [HttpGet("{CompanyID}")] + public async Task GetEmployees([FromRoute] int CompanyID) { + if (isLoggedIn()) { + if (await isLoggedInUserEmployeeOf(CompanyID)) { + Employee[] employees = await _databaseService.GetEmployeesFromCompany(CompanyID); + return Ok(employees); + } + return NotFound("You are not an employee of company"); + } + return NotFound("Not logged in"); + } + + [HttpGet] + public async Task GetEmployee() { + if (isLoggedIn()) { + Employee[] employees = await _databaseService.GetEmployeesFromAccount(getLoggedInUserID()); + return Ok(employees); + } + return NotFound("Not logged in"); + } + + [HttpPost] + public async Task SetEmployee([FromBody] Employee employee) { + if (isLoggedIn()) { + if (await isLoggedInUserEmployeeOf(employee.CompanyID)) { + await _databaseService.SetEmployee(employee); + return Ok(); + } + return NotFound("You are not an employee of company"); + } + return NotFound("Not logged in"); + } + + [HttpDelete] + public async Task DeleteEmployee(int EmployeeID) { + if (isLoggedIn()) { + Employee? employee = await _databaseService.GetEmployee(EmployeeID); + if (employee != null) { + if (await isLoggedInUserEmployeeOf(employee.CompanyID)) { + await _databaseService.DeleteEmployee(EmployeeID); + return Ok(); + } + return NotFound("You are not an employee of company"); + } + return NotFound("Employee not found"); + } + return NotFound("Not logged in"); + } + + } + +} diff --git a/src/Server/Services/DatabaseService/Employee.cs b/src/Server/Services/DatabaseService/Employee.cs index f31261d..ad7e2b9 100644 --- a/src/Server/Services/DatabaseService/Employee.cs +++ b/src/Server/Services/DatabaseService/Employee.cs @@ -6,8 +6,8 @@ using System.Data.Common; namespace BoredCareers.Services.DatabaseService { public partial class DatabaseService { - public async Task GetEmployees( int CompanyID ) { - List employees = new List(); + public async Task GetEmployee( int EmployeeID ) { + Employee? employee = null; using( MySqlConnection connection = GetConnection() ) { connection.Open(); string command = @" @@ -17,7 +17,7 @@ namespace BoredCareers.Services.DatabaseService { "; MySqlCommand cmd = new MySqlCommand(command, connection); - cmd.Parameters.AddWithValue("@ID", CompanyID); + cmd.Parameters.AddWithValue("@ID", EmployeeID); using( DbDataReader reader = await cmd.ExecuteReaderAsync() ) { while( await reader.ReadAsync() ) { @@ -26,6 +26,68 @@ namespace BoredCareers.Services.DatabaseService { int _accountid = reader.GetInt32("AccountID"); int _companyid = reader.GetInt32("CompanyID"); + employee = new Employee() { + ID = _id, + AccountID = _accountid, + CompanyID = _companyid + }; + } + } + } + return employee; + } + + public async Task GetEmployeesFromCompany(int CompanyID) { + List employees = new List(); + using (MySqlConnection connection = GetConnection()) { + connection.Open(); + string command = @" + SELECT * + FROM Employee + WHERE CompanyID = @CompanyID; + "; + + MySqlCommand cmd = new MySqlCommand(command, connection); + cmd.Parameters.AddWithValue("@CompanyID", CompanyID); + + using (DbDataReader reader = await cmd.ExecuteReaderAsync()) { + while (await reader.ReadAsync()) { + if (reader == null) { break; } + int _id = reader.GetInt32("ID"); + int _accountid = reader.GetInt32("AccountID"); + int _companyid = reader.GetInt32("CompanyID"); + + employees.Add(new Employee() { + ID = _id, + AccountID = _accountid, + CompanyID = _companyid + }); + } + } + } + return employees.ToArray(); + } + + public async Task GetEmployeesFromAccount(int AccountID) { + List employees = new List(); + using (MySqlConnection connection = GetConnection()) { + connection.Open(); + string command = @" + SELECT * + FROM Employee + WHERE AccountID = @AccountID; + "; + + MySqlCommand cmd = new MySqlCommand(command, connection); + cmd.Parameters.AddWithValue("@AccountID", AccountID); + + using (DbDataReader reader = await cmd.ExecuteReaderAsync()) { + while (await reader.ReadAsync()) { + if (reader == null) { break; } + int _id = reader.GetInt32("ID"); + int _accountid = reader.GetInt32("AccountID"); + int _companyid = reader.GetInt32("CompanyID"); + employees.Add(new Employee() { ID = _id, AccountID = _accountid, @@ -37,8 +99,8 @@ namespace BoredCareers.Services.DatabaseService { return employees.ToArray(); } - public async Task SetEmployee( Employee employee ) { - using( MySqlConnection connection = GetConnection() ) { + public async Task SetEmployee(Employee employee) { + using (MySqlConnection connection = GetConnection()) { connection.Open(); string command = @" @@ -51,7 +113,7 @@ namespace BoredCareers.Services.DatabaseService { CompanyID = @CompanyID; "; - MySqlCommand cmd = new MySqlCommand( command , connection); + MySqlCommand cmd = new MySqlCommand(command, connection); cmd.Parameters.AddWithValue("@ID", employee.ID); cmd.Parameters.AddWithValue("@AccountID", employee.AccountID); cmd.Parameters.AddWithValue("@CompanyID", employee.CompanyID); From a5573dce4e98e7c6135f62b226b40524dc04a374 Mon Sep 17 00:00:00 2001 From: Derek Holloway Date: Sun, 20 Jul 2025 21:14:05 -0700 Subject: [PATCH 04/10] Route properly for angular --- src/Client/src/app/app.html | 22 +++++++++++----------- src/Client/src/app/app.ts | 4 ++-- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/Client/src/app/app.html b/src/Client/src/app/app.html index 61c0b51..c142ed6 100644 --- a/src/Client/src/app/app.html +++ b/src/Client/src/app/app.html @@ -1,19 +1,19 @@
@@ -21,9 +21,9 @@