<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
use App\Traits\DateFormatTrait;

class ExtraStudentData extends Model {
    use HasFactory, SoftDeletes, DateFormatTrait;

    protected $table = 'extra_user_datas';

    protected $fillable = [
        'student_id',
        'form_field_id',
        'data',
        'school_id',
    ];

    protected $appends = ['file_url'];

    public function scopeOwner($query) {
        if (Auth::user() && Auth::user()->hasRole('Super Admin')) {
            return $query;
        }

        if (Auth::user() &&Auth::user()->hasRole('School Admin')) {
            return $query->where('school_id', Auth::user()->school_id);
        }

        if (Auth::user() && Auth::user()->hasRole('Student')) { 
            return $query->where('school_id', Auth::user()->school_id);
        }

        return $query;
    }

    public function form_field() {
        return $this->belongsTo(FormField::class, 'form_field_id')->withTrashed();
    }


    public function getFileUrlAttribute() {
        if ($this->relationLoaded('form_field')) {
            if ($this->form_field->type == "file" && !empty($this->data)) {
                return url(Storage::url($this->data));
            }

            return null;
        }
        return null;

    }

    public function getCreatedAtAttribute()
    {
        return $this->formatDateValue($this->getRawOriginal('created_at'));
    }

    public function getUpdatedAtAttribute()
    {
        return $this->formatDateValue($this->getRawOriginal('updated_at'));
    }

}
