diff --git a/app/Filament/Admin/Resources/CareerApplications/Tables/CareerApplicationsTable.php b/app/Filament/Admin/Resources/CareerApplications/Tables/CareerApplicationsTable.php index 54cef1c..581a0de 100644 --- a/app/Filament/Admin/Resources/CareerApplications/Tables/CareerApplicationsTable.php +++ b/app/Filament/Admin/Resources/CareerApplications/Tables/CareerApplicationsTable.php @@ -52,6 +52,18 @@ class CareerApplicationsTable default => 'gray', }), + TextColumn::make('git_knowledge') + ->label(__('career.git_knowledge')) + ->badge() + ->color(fn ($state) => $state ? 'success' : 'danger') + ->formatStateUsing(fn ($state) => $state ? 'Evet' : 'Hayır'), + + TextColumn::make('ai_usage') + ->label(__('career.ai_usage')) + ->badge() + ->color(fn ($state) => $state ? 'success' : 'danger') + ->formatStateUsing(fn ($state) => $state ? 'Evet' : 'Hayır'), + TextColumn::make('created_at') ->label(__('career.created_at')) ->dateTime('d.m.Y H:i') @@ -79,6 +91,18 @@ class CareerApplicationsTable ->icon('heroicon-o-arrow-down-tray') ->url(fn ($record) => Storage::disk('public')->url($record->cv_path)) ->openUrlInNewTab(), + Action::make('download_nda') + ->label(__('career.nda')) + ->icon('heroicon-o-shield-check') + ->url(fn ($record) => $record->nda_path ? Storage::disk('public')->url($record->nda_path) : null) + ->visible(fn ($record) => $record->nda_path !== null) + ->openUrlInNewTab(), + Action::make('download_contract') + ->label(__('career.contract')) + ->icon('heroicon-o-document-text') + ->url(fn ($record) => $record->contract_path ? Storage::disk('public')->url($record->contract_path) : null) + ->visible(fn ($record) => $record->contract_path !== null) + ->openUrlInNewTab(), DeleteAction::make(), ]) ->bulkActions([ diff --git a/app/Http/Controllers/CareerController.php b/app/Http/Controllers/CareerController.php index 5ac7de2..c0658ff 100644 --- a/app/Http/Controllers/CareerController.php +++ b/app/Http/Controllers/CareerController.php @@ -30,25 +30,37 @@ class CareerController extends Controller public function store(Request $request) { - $request->validate([ + $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', - ]); + ]; - $cvPath = null; - if ($request->hasFile('cv')) { - $cvPath = $request->file('cv')->store('cvs', 'public'); + 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', ]); diff --git a/app/Models/CareerApplication.php b/app/Models/CareerApplication.php index 90745b0..39c09a7 100644 --- a/app/Models/CareerApplication.php +++ b/app/Models/CareerApplication.php @@ -15,6 +15,10 @@ class CareerApplication extends Model 'phone', 'type', 'cv_path', + 'nda_path', + 'contract_path', + 'git_knowledge', + 'ai_usage', 'message', 'status', ]; diff --git a/database/migrations/2026_05_11_061311_add_extra_fields_to_career_applications_table.php b/database/migrations/2026_05_11_061311_add_extra_fields_to_career_applications_table.php new file mode 100644 index 0000000..d1eb530 --- /dev/null +++ b/database/migrations/2026_05_11_061311_add_extra_fields_to_career_applications_table.php @@ -0,0 +1,31 @@ +string('nda_path')->nullable()->after('cv_path'); + $table->string('contract_path')->nullable()->after('nda_path'); + $table->boolean('git_knowledge')->default(false)->after('contract_path'); + $table->boolean('ai_usage')->default(false)->after('git_knowledge'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('career_applications', function (Blueprint $table) { + $table->dropColumn(['nda_path', 'contract_path', 'git_knowledge', 'ai_usage']); + }); + } +}; diff --git a/lang/tr/career.php b/lang/tr/career.php index e8f22dd..62c96a0 100644 --- a/lang/tr/career.php +++ b/lang/tr/career.php @@ -22,6 +22,10 @@ return [ 'submit' => 'Başvuruyu Gönder', 'success_message' => 'Başvurunuz başarıyla alındı. Teşekkür ederiz.', 'download_cv' => 'CV İndir', + 'nda' => 'İmzalı NDA', + 'contract' => 'İmzalı Sözleşme', + 'git_knowledge' => 'GIT Bilgisi', + 'ai_usage' => 'AI Araçları Kullanımı', 'created_at' => 'Başvuru Tarihi', 'remote_work_title' => 'Tamamen Uzaktan Çalışma', 'remote_work_details' => 'Günlük standup toplantıları ile ekip koordinasyonu sağlanır. Bazı projelerde çalışma saatleri daha esnektir. Stajyerler, CV\'lerine ve yetkinliklerine uygun olan bir veya birden fazla gerçek projede değerlendirilir.', diff --git a/resources/views/front/career/index.blade.php b/resources/views/front/career/index.blade.php index c24f538..b0f9b3b 100644 --- a/resources/views/front/career/index.blade.php +++ b/resources/views/front/career/index.blade.php @@ -119,10 +119,39 @@
PDF veya ZIP (Maks. 5MB). Lütfen CV ve imzalı NDA/Sözleşme belgelerini yükleyiniz.
+PDF, DOC, DOCX (Maks. 5MB)
+İmzalanmış Gizlilik Sözleşmesi (PDF, Maks. 5MB)
+İmzalanmış Bağımsız Sözleşmeli Sözleşmesi (PDF, Maks. 5MB)
+