diff --git a/apps/companies/src/handlers/mod.rs b/apps/companies/src/handlers/mod.rs index 5dafc80..c182d74 100644 --- a/apps/companies/src/handlers/mod.rs +++ b/apps/companies/src/handlers/mod.rs @@ -326,9 +326,10 @@ async fn submit_job( match JobRepository::update_status(&state.pool, job.id, "PENDING_APPROVAL").await { Ok(updated) => { - // Fire email to company user (ignore failures) if let Ok(user) = UserRepository::get_by_id(&state.pool, auth.user_id).await { - let _ = state.mail.send_job_submitted_email(&user.email, &format!("{} {}", user.first_name.unwrap_or_default(), user.last_name.unwrap_or_default()), &updated.title).await; + if let Err(e) = state.mail.send_job_submitted_email(&user.email, &format!("{} {}", user.first_name.unwrap_or_default(), user.last_name.unwrap_or_default()), &updated.title).await { + tracing::error!("Failed to send job-submitted email to {}: {:?}", user.email, e); + } } // Create verification case so the request appears in Verification Management first. @@ -714,7 +715,7 @@ async fn view_contact( let _ = sqlx::query( r#" - INSERT INTO notifications (user_id, title, body, notification_type, reference_id) + INSERT INTO notifications (user_id, title, body, type, reference_id) VALUES ($1, $2, $3, $4, $5) "# ) diff --git a/apps/customers/src/handlers.rs b/apps/customers/src/handlers.rs index 4ed7806..3637cdd 100644 --- a/apps/customers/src/handlers.rs +++ b/apps/customers/src/handlers.rs @@ -267,9 +267,10 @@ async fn submit_requirement( match RequirementRepository::update_status(&state.pool, req.id, "PENDING_APPROVAL").await { Ok(updated) => { - // Fire email to customer (ignore failures) if let Ok(user) = UserRepository::get_by_id(&state.pool, auth.user_id).await { - let _ = state.mail.send_requirement_submitted_email(&user.email, &format!("{} {}", user.first_name.unwrap_or_default(), user.last_name.unwrap_or_default()), &updated.title).await; + if let Err(e) = state.mail.send_requirement_submitted_email(&user.email, &format!("{} {}", user.first_name.unwrap_or_default(), user.last_name.unwrap_or_default()), &updated.title).await { + tracing::error!("Failed to send requirement-submitted email to {}: {:?}", user.email, e); + } } // Create verification case so this request enters Verification Management first. diff --git a/apps/users/src/handlers/approvals.rs b/apps/users/src/handlers/approvals.rs index 1b78d23..1e354e3 100644 --- a/apps/users/src/handlers/approvals.rs +++ b/apps/users/src/handlers/approvals.rs @@ -456,7 +456,9 @@ async fn approve_job( .await; if let Ok(Some((name, email, user_uuid))) = company_info { - let _ = state.mail.send_job_approved_email(&email, &name, &existing.title).await; + if let Err(e) = state.mail.send_job_approved_email(&email, &name, &existing.title).await { + tracing::error!("Failed to send job-approved email to {}: {:?}", email, e); + } // Send in-app notification to company sqlx::query( @@ -521,7 +523,9 @@ async fn reject_job( if let Ok(Some((name, email, user_uuid))) = company_info { let r = payload.reason.as_deref().unwrap_or("Rejected by admin"); - let _ = state.mail.send_job_rejected_email(&email, &name, &existing.title, r).await; + if let Err(e) = state.mail.send_job_rejected_email(&email, &name, &existing.title, r).await { + tracing::error!("Failed to send job-rejected email to {}: {:?}", email, e); + } // Send in-app notification to company sqlx::query( @@ -594,7 +598,9 @@ async fn approve_requirement( if let Some(user_id) = req.created_by_user_id { if let Ok(user) = UserRepository::get_by_id(&state.pool, user_id).await { let name = format!("{} {}", user.first_name.unwrap_or_default(), user.last_name.unwrap_or_default()); - let _ = state.mail.send_requirement_approved_email(&user.email, &name, &req.title).await; + if let Err(e) = state.mail.send_requirement_approved_email(&user.email, &name, &req.title).await { + tracing::error!("Failed to send requirement-approved email to {}: {:?}", user.email, e); + } } } diff --git a/apps/users/src/handlers/verifications.rs b/apps/users/src/handlers/verifications.rs index cbd2ba7..2747e3a 100644 --- a/apps/users/src/handlers/verifications.rs +++ b/apps/users/src/handlers/verifications.rs @@ -172,7 +172,9 @@ async fn trigger_rejection( if let Ok(user) = db::models::user::UserRepository::get_by_id(&state.pool, user_id).await { let display = role_key_to_display(&role_key); let user_name = format!("{} {}", user.first_name.unwrap_or_default(), user.last_name.unwrap_or_default()); - let _ = state.mail.send_approval_rejected_email(&user.email, &user_name, &display, reason_str).await; + if let Err(e) = state.mail.send_approval_rejected_email(&user.email, &user_name, &display, reason_str).await { + tracing::error!("Failed to send approval-rejected email to {}: {:?}", user.email, e); + } } // Send in-app notification @@ -226,7 +228,9 @@ async fn approve_verification( let display = role_key_to_display(&v.role_key); let user_name = format!("{} {}", user.first_name.unwrap_or_default(), user.last_name.unwrap_or_default()); // Use a "verification passed" notification instead of final approval - let _ = state.mail.send_approval_approved_email(&user.email, &user_name, &display).await; + if let Err(e) = state.mail.send_approval_approved_email(&user.email, &user_name, &display).await { + tracing::error!("Failed to send approval-approved email to {}: {:?}", user.email, e); + } } // Send in-app notification - profile verified, pending final approval