137 lines
4.6 KiB
PHP
137 lines
4.6 KiB
PHP
<?php
|
||
|
||
namespace App\Http\Controllers;
|
||
|
||
use App\Models\CareerApplication;
|
||
use Illuminate\Http\Request;
|
||
use Illuminate\Support\Facades\Storage;
|
||
|
||
class CareerController extends Controller
|
||
{
|
||
public function index()
|
||
{
|
||
return view('front.career.index', [
|
||
'meta' => [
|
||
'title' => __('career.job_application_title', ['default' => 'İş Başvurusu']),
|
||
'description' => __('career.job_application_description', ['default' => 'Ekibimize katılmak için aşağıdaki formu doldurarak CV\'nizi iletebilirsiniz.']),
|
||
]
|
||
]);
|
||
}
|
||
|
||
public function internship()
|
||
{
|
||
return view('front.career.internship', [
|
||
'meta' => [
|
||
'title' => __('career.internship_title', ['default' => 'Staj Başvurusu']),
|
||
'description' => __('career.internship_description', ['default' => 'Uzaktan staj programımız hakkında bilgi alın ve başvurunuzu yapın.']),
|
||
]
|
||
]);
|
||
}
|
||
|
||
public function store(Request $request)
|
||
{
|
||
$rules = [
|
||
'name' => 'required|string|max:255',
|
||
'email' => 'required|email|max:255',
|
||
'phone' => 'nullable|string|max:20',
|
||
'cv' => 'required|file|mimes:pdf,doc,docx|max:5120', // Max 5MB
|
||
'message' => 'nullable|string',
|
||
];
|
||
|
||
if ($request->type === 'job') {
|
||
$rules['nda'] = 'required|file|mimes:pdf|max:5120';
|
||
$rules['contract'] = 'required|file|mimes:pdf|max:5120';
|
||
$rules['git_knowledge'] = 'accepted';
|
||
$rules['ai_usage'] = 'accepted';
|
||
}
|
||
|
||
$request->validate($rules);
|
||
|
||
$cvPath = $request->file('cv') ? $request->file('cv')->store('cvs', 'public') : null;
|
||
$ndaPath = $request->file('nda') ? $request->file('nda')->store('ndas', 'public') : null;
|
||
$contractPath = $request->file('contract') ? $request->file('contract')->store('contracts', 'public') : null;
|
||
|
||
CareerApplication::create([
|
||
'name' => $request->name,
|
||
'email' => $request->email,
|
||
'phone' => $request->phone,
|
||
'type' => $request->type ?? 'job',
|
||
'cv_path' => $cvPath,
|
||
'nda_path' => $ndaPath,
|
||
'contract_path' => $contractPath,
|
||
'git_knowledge' => $request->has('git_knowledge'),
|
||
'ai_usage' => $request->has('ai_usage'),
|
||
'message' => $request->message,
|
||
'status' => 'pending',
|
||
]);
|
||
|
||
if ($request->ajax()) {
|
||
return response()->json([
|
||
'success' => true,
|
||
'message' => __('career.success_message')
|
||
]);
|
||
}
|
||
|
||
return redirect()->back()->with('success', __('career.success_message'));
|
||
}
|
||
|
||
public function internLoginForm()
|
||
{
|
||
if (session()->has('intern_id')) {
|
||
return redirect()->route('intern.dashboard');
|
||
}
|
||
return view('front.career.intern_login', [
|
||
'meta' => [
|
||
'title' => 'Stajyer Girişi',
|
||
'description' => 'İmzalı staj belgelerinize erişmek için lütfen giriş yapın.',
|
||
]
|
||
]);
|
||
}
|
||
|
||
public function internLogin(Request $request)
|
||
{
|
||
$request->validate([
|
||
'username' => 'required|string',
|
||
'password' => 'required|string',
|
||
]);
|
||
|
||
$intern = CareerApplication::where('username', $request->username)
|
||
->where('type', 'internship')
|
||
->first();
|
||
|
||
if (!$intern || !\Illuminate\Support\Facades\Hash::check($request->password, $intern->password)) {
|
||
return redirect()->back()
|
||
->withInput($request->only('username'))
|
||
->withErrors([
|
||
'username' => 'Girdiğiniz kullanıcı adı veya şifre hatalı.',
|
||
]);
|
||
}
|
||
|
||
session(['intern_id' => $intern->id]);
|
||
|
||
return redirect()->route('intern.dashboard')->with('success', 'Başarıyla giriş yapıldı.');
|
||
}
|
||
|
||
public function internDashboard()
|
||
{
|
||
if (!session()->has('intern_id')) {
|
||
return redirect()->route('intern.login')->with('error', 'Lütfen giriş yapın.');
|
||
}
|
||
|
||
$intern = CareerApplication::findOrFail(session('intern_id'));
|
||
return view('front.career.intern_dashboard', [
|
||
'intern' => $intern,
|
||
'meta' => [
|
||
'title' => 'Stajyer Paneli',
|
||
'description' => 'Belgelerinizi buradan indirebilirsiniz.',
|
||
]
|
||
]);
|
||
}
|
||
|
||
public function internLogout()
|
||
{
|
||
session()->forget('intern_id');
|
||
return redirect()->route('intern.login')->with('success', 'Başarıyla çıkış yapıldı.');
|
||
}
|
||
}
|