MIF_E31220442/app/Http/Controllers/LamaranUserController.php

57 lines
2.1 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\LamaranUser;
use App\Notifications\PelamarBaruNotification;
use Illuminate\Support\Facades\Notification;
use App\Models\User;
class LamaranUserController extends Controller
{
public function store(Request $request)
{
$request->validate([
'name' => 'required|string|max:255',
'usia' => 'required|integer|min:17|max:60',
'pendidikan' => 'required|string',
'ipk' => 'required|numeric|min:0|max:4',
'jurusan' => 'required|string',
'lama_studi' => 'required|integer|min:0|max:10',
'pengalaman' => 'required|integer|min:0|max:50',
'serkom' => 'required|boolean',
'cv' => 'required|file|mimes:pdf,doc,docx|max:2048',
'dokumen_pendukung.*' => 'nullable|file|mimes:pdf,doc,docx,jpg,png|max:2048',
]);
// Upload CV
$cvPath = $request->file('cv')->store('dokumen/cv', 'public');
// Upload dokumen pendukung (bisa lebih dari satu file)
$dokumenPaths = [];
if ($request->hasFile('dokumen_pendukung')) {
foreach ($request->file('dokumen_pendukung') as $file) {
$dokumenPaths[] = $file->store('dokumen/pendukung', 'public');
}
}
$lamaran = LamaranUser::create([
'name' => $request->name,
'usia' => $request->usia,
'pendidikan' => $request->pendidikan,
'ipk' => $request->ipk,
'jurusan' => $request->jurusan,
'lama_studi' => $request->lama_studi,
'pengalaman' => $request->pengalaman,
'serkom' => $request->serkom,
'cv' => $cvPath,
'dokumen_pendukung' => json_encode($dokumenPaths),
]);
$adminUsers = User::where('role', 'admin')->get(); // Pastikan 'role' sesuai
Notification::send($adminUsers, new PelamarBaruNotification([
'message' => "Pelamar baru: {$lamaran->name}"
]));
return redirect()->back()->with('msg', 'Lamaran Anda berhasil diajukan. Silakan tunggu konfirmasi dari admin.');
}
}