working #38

Merged
derek merged 4 commits from working into main 2025-09-01 10:51:39 -07:00
6 changed files with 49 additions and 32 deletions
+5 -1
View File
@@ -12,7 +12,8 @@ Server:
Need to update notification email Need to update notification email
Create page to notify cx that their work email has been verified Create page to notify cx that their work email has been verified
Verify that each resume section belongs to the resume it was created for: Emails:
Make emails follow theme of website better
Client: Client:
jobs/editor: jobs/editor:
@@ -50,6 +51,9 @@ Client:
Company: Company:
Need to impliment Add employee Need to impliment Add employee
Need to impliment Remove employee Need to impliment Remove employee
Add comment fields to companies for company conversions
This should solve invisible overtime
Goes along with the ratings
AI Resume Rating: AI Resume Rating:
Allow companies to determine if the resume looks AI -> add rating Allow companies to determine if the resume looks AI -> add rating
+17 -12
View File
@@ -186,18 +186,18 @@ CREATE TABLE IF NOT EXISTS `JobListingSkill` (
-- Postal Codes Section -- Postal Codes Section
CREATE TABLE IF NOT EXISTS `PostalCodes` ( CREATE TABLE IF NOT EXISTS `PostalCodes` (
`country code` char(2), `CountryCode` char(2),
`postal code` varchar(20), `PostalCode` varchar(20),
`place name` varchar(180), `City` varchar(180),
`state` varchar(100), `State` varchar(100),
`state code` varchar(20), `StateCode` varchar(20),
`city` varchar(100), `County` varchar(100),
`admin code2` varchar(20), `CountyCode` varchar(20),
`admin name3` varchar(100), `Admin` varchar(100),
`admin code3` varchar(20), `AdminCode` varchar(20),
`latitude` float, `Latitude` float,
`longitude` float, `Longitude` float,
`accuracy` varchar(2) `Accuracy` varchar(2)
); );
LOAD DATA INFILE '/var/lib/mysql-files/postalcodes.csv' LOAD DATA INFILE '/var/lib/mysql-files/postalcodes.csv'
@@ -206,6 +206,11 @@ FIELDS TERMINATED BY '\t'
ENCLOSED BY '"' ENCLOSED BY '"'
LINES TERMINATED BY '\n'; LINES TERMINATED BY '\n';
CREATE INDEX idx_country_code ON PostalCodes(CountryCode);
CREATE INDEX idx_postal_code ON PostalCodes(PostalCode);
CREATE INDEX idx_latitude ON PostalCodes(Latitude);
CREATE INDEX idx_longitude ON PostalCodes(Longitude);
-- Application Section -- Application Section
CREATE TABLE IF NOT EXISTS `JobApplication` ( CREATE TABLE IF NOT EXISTS `JobApplication` (
+1 -1
View File
@@ -91,7 +91,7 @@ namespace BoredCareers.Controllers {
EmailContents = Substitue(EmailContents, "@ID", CompanyID.ToString()); EmailContents = Substitue(EmailContents, "@ID", CompanyID.ToString());
EmailContents = Substitue(EmailContents, "@VerifyPassword", test.EmailToken); EmailContents = Substitue(EmailContents, "@VerifyPassword", test.EmailToken);
string result = _emailContext.Send(test.Email, EmailService.CompanyVerifyEmailSubject, EmailContents); string result = await _emailContext.Send(test.Email, EmailService.CompanyVerifyEmailSubject, EmailContents);
_emailContext._SentEmails.Add(key, DateTime.Now); _emailContext._SentEmails.Add(key, DateTime.Now);
return Redirect("/"); return Redirect("/");
} }
+1
View File
@@ -9,6 +9,7 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.8" /> <PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="9.0.8" />
<PackageReference Include="MailKit" Version="4.13.0" />
<PackageReference Include="BCrypt.Net-Next" Version="4.0.3" /> <PackageReference Include="BCrypt.Net-Next" Version="4.0.3" />
<PackageReference Include="MySql.Data" Version="9.4.0" /> <PackageReference Include="MySql.Data" Version="9.4.0" />
<PackageReference Include="Stripe.net" Version="48.2.0" /> <PackageReference Include="Stripe.net" Version="48.2.0" />
@@ -51,7 +51,7 @@ namespace BoredCareers.Services.TimerService {
string emailbody = EmailService.JobAutoClosedBody; string emailbody = EmailService.JobAutoClosedBody;
//Substitue(emailbody, "@job", listing.JobListingID); //Substitue(emailbody, "@job", listing.JobListingID);
_em.Send(email, EmailService.JobAutoClosedSubject, emailbody); await _em.Send(email, EmailService.JobAutoClosedSubject, emailbody);
} }
} }
@@ -1,4 +1,7 @@
using System.Net.Mail; using System.Threading.Tasks;
using MailKit.Net.Smtp;
using MailKit.Security;
using MimeKit;
namespace BoredCareers.Services { namespace BoredCareers.Services {
public partial class EmailService { public partial class EmailService {
@@ -17,25 +20,29 @@ namespace BoredCareers.Services {
EmailPassword = _EmailPassword; EmailPassword = _EmailPassword;
} }
public string Send( string Destination, string Subject, string Body ) { public async Task<string> Send(string Destination, string Subject, string Body) {
using (SmtpClient client = new SmtpClient( EmailServer, EmailPort )){
client.EnableSsl = true;
client.Credentials = new System.Net.NetworkCredential( EmailAddress, EmailPassword );
try { try {
MailMessage msg = new MailMessage(){ MimeMessage message = new MimeMessage();
IsBodyHtml = true, message.From.Add(new MailboxAddress(EmailAddress.Split('@')[0], EmailAddress));
Subject = Subject, message.To.Add(new MailboxAddress(Destination.Split('@')[0], Destination));
Body = Body message.Subject = Subject;
};
msg.From = new MailAddress( EmailAddress, "no-reply" ); BodyBuilder messageBody = new BodyBuilder();
msg.To.Add( new MailAddress( Destination ) ); messageBody.HtmlBody = Body;
client.Send( msg );
return "Success"; message.Body = messageBody.ToMessageBody();
using (SmtpClient client = new SmtpClient()) {
await client.ConnectAsync(EmailServer, EmailPort);
client.Authenticate(new SaslMechanismLogin(EmailAddress, EmailPassword));
string serverResponse = await client.SendAsync(message);
await client.DisconnectAsync(true);
return serverResponse;
}
} catch (Exception e) { } catch (Exception e) {
return "An Error Has Occurred Sending Email : " + e.ToString(); return "An Error Has Occurred Sending Email : " + e.ToString();
} }
} }
}
} }
} }