HEX
Server: Apache
System: Linux WWW 6.1.0-40-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.153-1 (2025-09-20) x86_64
User: web11 (1011)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: /var/www/ivs.kaunokolegija.lt/laravel/app/Models/InstProject.php
<?php

namespace App\Models;

use App\Traits\Auditable;
use Carbon\Carbon;
use DateTimeInterface;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class InstProject extends Model
{
    use Auditable, HasFactory;

    public $table = 'inst_projects';

    public const LEADED_PARTICIPATED_SELECT = [
        'leaded'       => 'Vadovauta',
        'participated' => 'Dalyvauta',
    ];

    protected $dates = [
        'period_from',
        'period_to',
        'created_at',
        'updated_at',
        'deleted_at',
    ];

    protected $fillable = [
        'project_type_id',
        'leaded_participated',
        'leader',
        'title',
        'number',
        'period_from',
        'period_to',
        'budget',
        'created_at',
        'updated_at',
        'deleted_at',
    ];

    protected function serializeDate(DateTimeInterface $date)
    {
        return $date->format('Y-m-d H:i:s');
    }

    public function project_type()
    {
        return $this->belongsTo(ProjectType::class, 'project_type_id');
    }

    public function scientists()
    {
        return $this->belongsToMany(Scientist::class);
    }

    public function getPeriodFromAttribute($value)
    {
        return $value ? Carbon::parse($value)->format(config('panel.date_format')) : null;
    }

    public function setPeriodFromAttribute($value)
    {
        $this->attributes['period_from'] = $value ? Carbon::createFromFormat(config('panel.date_format'), $value)->format('Y-m-d') : null;
    }

    public function getPeriodToAttribute($value)
    {
        return $value ? Carbon::parse($value)->format(config('panel.date_format')) : null;
    }

    public function setPeriodToAttribute($value)
    {
        $this->attributes['period_to'] = $value ? Carbon::createFromFormat(config('panel.date_format'), $value)->format('Y-m-d') : null;
    }
}