<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class Classes extends Model
{
    use HasFactory, SoftDeletes;

    protected $fillable = [
        'id',
        'class_mode',
        'class_name',
        'class_code',
        'start_date',
        'tutor_id',
        'status',
        'created_at',
        'updated_at',
        'deleted_at',
        'created_by',
        'updated_by',
        'batch_id',
        'class_duration',
        'description',
        'document_links',
        'module_name',
        'recording_status',
        'task_module',
        'task_name',
        'task_description',
        'task_links',
        'day',
        'study_material',
    ];

    public function scopeSearchQuery($query)
    {
      
        if (request('keyword')) {
            foreach ($this->fillable as $column) {
                switch ($column) {
                    case 'id':
                        $query->orWhere($column, 'LIKE', '%' . request('keyword') . '%');
                      break;
                    case 'class_name':
                      $query->orWhere($column, 'LIKE', '%' . request('keyword') . '%');
                      break;
                    case 'class_code':
                        $query->orWhere($column, 'LIKE', '%' . request('keyword') . '%');
                        break;
                    case 'tutor_id':
                        $query->orWhereHas('tutor', function ($query) {
                            $query->where('name', 'like', '%' . request('keyword') . '%');
                        });
                        break;

                    case 'batch_id':
                        $query->orWhereHas('batch', function ($query) {
                            $query->where('batch_name', 'like', '%' . request('keyword') . '%');
                        });
                        break;
                    
                    default:
                        $query->orWhere($column, 'LIKE', '%' . request('keyword') . '%');
                        break;
                }
            }
        }
        return $query;
    }

  

    public function batch()
    {
        return $this->belongsTo(Batch::class,'batch_id');
    }
    public function tutor()
    {
        return $this->belongsTo(Admin::class,'tutor_id');
    }
}
