feat: implementation du role Gestionnaire RH et refonte de la gestion des offres
This commit is contained in:
@@ -16,10 +16,17 @@ class PublicJobApplicationController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
$jobs = JobPosition::with('tenant')->orderBy('created_at', 'desc')->get()->map(function($job) {
|
||||
$job->description = strip_tags(\Illuminate\Support\Str::markdown($job->description));
|
||||
return $job;
|
||||
});
|
||||
$jobs = JobPosition::with('tenant')
|
||||
->where(function($q) {
|
||||
$q->whereNull('expires_at')
|
||||
->orWhere('expires_at', '>=', now());
|
||||
})
|
||||
->orderBy('created_at', 'desc')
|
||||
->get()
|
||||
->map(function($job) {
|
||||
$job->description = strip_tags(\Illuminate\Support\Str::markdown($job->description));
|
||||
return $job;
|
||||
});
|
||||
|
||||
return Inertia::render('Public/Jobs/Index', [
|
||||
'jobs' => $jobs
|
||||
@@ -28,6 +35,10 @@ class PublicJobApplicationController extends Controller
|
||||
|
||||
public function show(JobPosition $jobPosition)
|
||||
{
|
||||
if ($jobPosition->expires_at && $jobPosition->expires_at->isPast()) {
|
||||
abort(404);
|
||||
}
|
||||
|
||||
$data = $jobPosition->toArray();
|
||||
$data['description_html'] = \Illuminate\Support\Str::markdown($jobPosition->description);
|
||||
|
||||
@@ -38,12 +49,26 @@ class PublicJobApplicationController extends Controller
|
||||
|
||||
public function store(Request $request, JobPosition $jobPosition)
|
||||
{
|
||||
if ($jobPosition->expires_at && $jobPosition->expires_at->isPast()) {
|
||||
return back()->withErrors(['error' => 'Cette offre a expiré.']);
|
||||
}
|
||||
|
||||
$request->validate([
|
||||
'name' => 'required|string|max:255',
|
||||
'email' => 'required|string|email|max:255|unique:users',
|
||||
'phone' => 'nullable|string|max:20',
|
||||
'linkedin_url' => 'nullable|url|max:255',
|
||||
'city' => 'nullable|string|max:255',
|
||||
'birth_name' => 'required|string|max:255',
|
||||
'usage_name' => 'required|string|max:255',
|
||||
'first_name' => 'required|string|max:255',
|
||||
'address' => 'required|string|max:255',
|
||||
'zip_code' => 'required|string|max:10',
|
||||
'city' => 'required|string|max:255',
|
||||
'phone' => 'required|string|max:20',
|
||||
'email' => 'required|string|email|max:255|unique:users|confirmed',
|
||||
'birth_date' => 'required|date',
|
||||
'birth_place' => 'required|string|max:255',
|
||||
'nationality' => 'required|string|max:255',
|
||||
'current_situation' => 'required|string|max:255',
|
||||
'education_level' => 'required|string|max:255',
|
||||
'has_driving_license' => 'required|boolean',
|
||||
'privacy_policy' => 'accepted',
|
||||
'cv' => 'nullable|mimes:pdf|max:5120',
|
||||
'cover_letter' => 'nullable|mimes:pdf|max:5120',
|
||||
]);
|
||||
@@ -51,7 +76,7 @@ class PublicJobApplicationController extends Controller
|
||||
$password = Str::random(10);
|
||||
|
||||
$user = User::create([
|
||||
'name' => $request->name,
|
||||
'name' => $request->first_name . ' ' . $request->usage_name,
|
||||
'email' => $request->email,
|
||||
'password' => Hash::make($password),
|
||||
'role' => 'candidate',
|
||||
@@ -59,9 +84,19 @@ class PublicJobApplicationController extends Controller
|
||||
]);
|
||||
|
||||
$candidate = $user->candidate()->create([
|
||||
'phone' => $request->phone,
|
||||
'linkedin_url' => $request->linkedin_url,
|
||||
'birth_name' => $request->birth_name,
|
||||
'usage_name' => $request->usage_name,
|
||||
'first_name' => $request->first_name,
|
||||
'address' => $request->address,
|
||||
'zip_code' => $request->zip_code,
|
||||
'city' => $request->city,
|
||||
'phone' => $request->phone,
|
||||
'birth_date' => $request->birth_date,
|
||||
'birth_place' => $request->birth_place,
|
||||
'nationality' => $request->nationality,
|
||||
'current_situation' => $request->current_situation,
|
||||
'education_level' => $request->education_level,
|
||||
'has_driving_license' => $request->has_driving_license,
|
||||
'status' => 'en_attente',
|
||||
'tenant_id' => $jobPosition->tenant_id,
|
||||
'job_position_id' => $jobPosition->id,
|
||||
@@ -74,7 +109,7 @@ class PublicJobApplicationController extends Controller
|
||||
$this->storeDocument($candidate, $request->file('cover_letter'), 'cover_letter');
|
||||
}
|
||||
|
||||
// Auto-login the candidate so they can take the quiz immediately if they want
|
||||
// Auto-login
|
||||
Auth::login($user);
|
||||
|
||||
return redirect()->route('dashboard')->with('success', 'Votre candidature a bien été enregistrée. Voici votre mot de passe temporaire pour vous reconnecter : ' . $password);
|
||||
|
||||
Reference in New Issue
Block a user