<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Carbon\Carbon;

class Preoccupations extends Model
{
    protected $connection = 'mysql';

    protected $fillable = [
        'user_id',
        'etablissement_id',
        'module_id',
        'progiciel_id',
        'priorite_id',
        'description',
        'date_soumission',
        'date_debut',
        'date_fin',
        'dure_resolution',
        'media_paths',
        'statut_id',
        'methodeResol'
    ];

    protected $casts = [
        'media_paths' => 'array', // Indique que ce champ est un tableau JSON
    ];

    public function gestionnaire()
    {
        return $this->belongsTo(User::class, 'user_id', 'id');
    }
    
    
    // Relation avec l'établissement
    public function etablissement()
    {
        return $this->belongsTo(Etablissement::class, 'etablissement_id');
    }

    // Relation avec l'établissement
    public function progiciel()
    {
        return $this->belongsTo(Progiciels::class, 'progiciel_id');
    }


    // Relation avec le statut
    public function statut()
    {
        return $this->belongsTo(Statuts::class, 'statut_id')->withDefault([
            'intitule' => 'En attente'
        ]);
    }

    // Relation avec la priorité
    public function priorite()
    {
        return $this->belongsTo(Priorites::class, 'priorite_id');
    }

    // Relation avec le module
    public function module()
    {
        return $this->belongsTo(Modules::class, 'module_id');
    }

    protected $dates = [
        'date_debut',
        'date_fin',
    ];

    public static function boot()
    {
        parent::boot();

        static::saving(function ($model) {
            if ($model->date_debut && $model->date_fin) {
                $model->dure_resolution = Carbon::parse($model->date_debut)->diffInDays($model->date_fin);
            }
        });
    }

    public function markAsResolved()
{
    $statutResolue = Statuts::where('intitule', 'Résolu')->first();
    if ($statutResolue) {
        $this->statut_id = $statutResolue->id;
        $this->save();
    }
}

}
