update
This commit is contained in:
@@ -54,13 +54,14 @@ export interface JobApplication {
|
||||
|
||||
class CareerService {
|
||||
private baseUrl = `${API_BASE_URL}/api/career`;
|
||||
|
||||
|
||||
/**
|
||||
* Get all active job positions
|
||||
*/
|
||||
async getAllJobs(): Promise<JobPosition[]> {
|
||||
try {
|
||||
const response = await fetch(`${this.baseUrl}/jobs/`, {
|
||||
const response = await fetch(`${this.baseUrl}/jobs`, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
@@ -75,7 +76,6 @@ class CareerService {
|
||||
// Handle paginated response - extract results array
|
||||
return data.results || data;
|
||||
} catch (error) {
|
||||
console.error('Error fetching jobs:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
@@ -85,7 +85,7 @@ class CareerService {
|
||||
*/
|
||||
async getJobBySlug(slug: string): Promise<JobPosition> {
|
||||
try {
|
||||
const response = await fetch(`${this.baseUrl}/jobs/${slug}/`, {
|
||||
const response = await fetch(`${this.baseUrl}/jobs/${slug}`, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
@@ -99,7 +99,6 @@ class CareerService {
|
||||
const data = await response.json();
|
||||
return data;
|
||||
} catch (error) {
|
||||
console.error('Error fetching job:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
@@ -109,7 +108,7 @@ class CareerService {
|
||||
*/
|
||||
async getFeaturedJobs(): Promise<JobPosition[]> {
|
||||
try {
|
||||
const response = await fetch(`${this.baseUrl}/jobs/featured/`, {
|
||||
const response = await fetch(`${this.baseUrl}/jobs/featured`, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
@@ -124,7 +123,6 @@ class CareerService {
|
||||
// Handle paginated response - extract results array
|
||||
return data.results || data;
|
||||
} catch (error) {
|
||||
console.error('Error fetching featured jobs:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
@@ -136,19 +134,15 @@ class CareerService {
|
||||
try {
|
||||
const formData = new FormData();
|
||||
|
||||
// Append all fields to FormData
|
||||
// Required fields
|
||||
formData.append('job', applicationData.job.toString());
|
||||
formData.append('first_name', applicationData.first_name);
|
||||
formData.append('last_name', applicationData.last_name);
|
||||
formData.append('email', applicationData.email);
|
||||
formData.append('consent', applicationData.consent.toString());
|
||||
formData.append('resume', applicationData.resume);
|
||||
|
||||
// Append resume file
|
||||
if (applicationData.resume) {
|
||||
formData.append('resume', applicationData.resume);
|
||||
}
|
||||
|
||||
// Append optional fields
|
||||
// Optional fields (only append if they exist)
|
||||
if (applicationData.phone) formData.append('phone', applicationData.phone);
|
||||
if (applicationData.current_position) formData.append('current_position', applicationData.current_position);
|
||||
if (applicationData.current_company) formData.append('current_company', applicationData.current_company);
|
||||
@@ -160,24 +154,24 @@ class CareerService {
|
||||
if (applicationData.website_url) formData.append('website_url', applicationData.website_url);
|
||||
if (applicationData.available_from) formData.append('available_from', applicationData.available_from);
|
||||
if (applicationData.notice_period) formData.append('notice_period', applicationData.notice_period);
|
||||
if (applicationData.expected_salary) formData.append('expected_salary', applicationData.expected_salary.toString());
|
||||
if (applicationData.expected_salary !== undefined) formData.append('expected_salary', applicationData.expected_salary.toString());
|
||||
if (applicationData.salary_currency) formData.append('salary_currency', applicationData.salary_currency);
|
||||
|
||||
const response = await fetch(`${this.baseUrl}/applications/`, {
|
||||
|
||||
const response = await fetch(`${this.baseUrl}/applications`, {
|
||||
method: 'POST',
|
||||
body: formData,
|
||||
// Don't set Content-Type header - browser will set it with boundary for multipart/form-data
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
const errorData = await response.json();
|
||||
throw new Error(errorData.error || `Failed to submit application: ${response.statusText}`);
|
||||
const errorData = await response.json().catch(() => ({}));
|
||||
const errorMessage = errorData.error || errorData.message || errorData.detail || `HTTP ${response.status}: ${response.statusText}`;
|
||||
throw new Error(errorMessage);
|
||||
}
|
||||
|
||||
const data = await response.json();
|
||||
return data;
|
||||
|
||||
} catch (error) {
|
||||
console.error('Error submitting application:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
@@ -187,7 +181,7 @@ class CareerService {
|
||||
*/
|
||||
async getJobsByDepartment(department: string): Promise<JobPosition[]> {
|
||||
try {
|
||||
const response = await fetch(`${this.baseUrl}/jobs/?department=${department}`, {
|
||||
const response = await fetch(`${this.baseUrl}/jobs?department=${department}`, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
@@ -202,7 +196,6 @@ class CareerService {
|
||||
// Handle paginated response - extract results array
|
||||
return data.results || data;
|
||||
} catch (error) {
|
||||
console.error('Error fetching jobs by department:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
@@ -212,7 +205,7 @@ class CareerService {
|
||||
*/
|
||||
async getJobsByEmploymentType(employmentType: string): Promise<JobPosition[]> {
|
||||
try {
|
||||
const response = await fetch(`${this.baseUrl}/jobs/?employment_type=${employmentType}`, {
|
||||
const response = await fetch(`${this.baseUrl}/jobs?employment_type=${employmentType}`, {
|
||||
method: 'GET',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
@@ -227,7 +220,6 @@ class CareerService {
|
||||
// Handle paginated response - extract results array
|
||||
return data.results || data;
|
||||
} catch (error) {
|
||||
console.error('Error fetching jobs by employment type:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user