<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Offers;
use Illuminate\Support\Facades\Auth;

class EtudiantController extends Controller
{
    /**
     * Afficher la liste des offres avec une barre de recherche.
     */
    public function index(Request $request)
    {
        $user = auth()->user();
        $query = $request->input('query'); 

        if ($user -> status == 'en attente') {
            return view ('etudiants.others', compact('user'));
        }

        //rechercher des offres publiées
        $offres = Offers::where('status', 'published')
            ->where('end_date', '>=', now())

            ->when($query, function ($q) use ($query) {
                // Rechercher dans plusieurs champs
                $q->where('reference', 'LIKE', "%{$query}%")
                  ->orWhere('title', 'LIKE', "%{$query}%")
                  ->orWhere('description', 'LIKE', "%{$query}%")
                  ->orWhere('company_name', 'LIKE', "%{$query}%");
            })
            ->paginate(10);

        return view('etudiants.index', compact('user', 'offres'));
    }

    /**
     * Afficher les détails d'une offre spécifique.
     */
   

    public function showOffres($id)
    {
        $offre = Offers::findOrFail($id);
        return view('etudiants.showOffres', compact('offre'));
    }
    
    /**
     * Afficher le profil de l'étudiant.
     */
    public function showProfil()
    {
        $user = auth()->user();
        
        return view('etudiants.profile', compact('user'));
    }

    /**
     * Afficher le formulaire de modification de profil.
     */
    public function editProfile()
    {
        $user = Auth::user();
        return view('etudiants.editProfile', compact('user'));
    }

    /**
     * Mettre à jour le profil de l'utilisateur.
     */
   
     public function updateProfile(Request $request)
    {
        $user = auth()->user();

        // Validation des données 
        $validatedData = $request->validate([
            'name' => 'required|string|max:255',
            'email' => 'required|email|max:255',
            'password' => 'nullable|min:8',
            'phone' => 'nullable|string|max:15',
            'birthday' => 'nullable|date',
            'birthplace' => 'nullable|string|max:255',
            'address' => 'nullable|string|max:255',
            'cv' => 'nullable|file|mimes:pdf,doc,docx,jpg,jpeg,png|max:2048',  
        ]);

        $user->name = $request->input('name');
        $user->phone = $request->input('phone');
        $user->birthday = $request->input('birthday');
        $user->birthplace = $request->input('birthplace');
        $user->address = $request->input('address');

        // Mise à jour du mot de passe si fourni
        if ($request->filled('password')) {
            $user->password = bcrypt($request->input('password'));
        }

        // Vérification et gestion du fichier CV
        if ($request->hasFile('cv')) {
            
            $path = $request->file('cv')->store('public/cvs');
            
            $user->cv = basename($path);  
        }

        $user->save();

        return redirect()->route('etudiants.profile')->with('success', 'Profil mis à jour avec succès.');
    }

}
