File: /var/www/ivs.kaunokolegija.lt/laravel/app/Models/ScienceActivity.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;
use Illuminate\Database\Eloquent\SoftDeletes;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;
use Spatie\MediaLibrary\MediaCollections\Models\Media;
class ScienceActivity extends Model implements HasMedia
{
use SoftDeletes, InteractsWithMedia, Auditable, HasFactory;
public $table = 'science_activities';
protected $appends = [
'attachments',
];
protected $dates = [
'activity_start',
'activity_end',
'created_at',
'updated_at',
'deleted_at',
];
public const STATE_SELECT = [
'not_started' => 'Nepradėta',
'in_progress' => 'Eigoje',
'done' => 'Įgyvendinta',
'failed' => 'Neįgyvendinta',
];
protected $fillable = [
'name',
'contractno',
'activity_start',
'activity_end',
'is_mtep',
'is_financed',
'description',
'value',
'other_accountable',
'other_accountable_contact',
'state',
'created_at',
'updated_at',
'deleted_at',
];
protected function serializeDate(DateTimeInterface $date)
{
return $date->format('Y-m-d H:i:s');
}
public function registerMediaConversions(Media $media = null): void
{
$this->addMediaConversion('thumb')->fit('crop', 50, 50);
$this->addMediaConversion('preview')->fit('crop', 120, 120);
}
public function contactscientists()
{
return $this->belongsToMany(Scientist::class);
}
public function contactstudents()
{
return $this->belongsToMany(Student::class);
}
public function getActivityStartAttribute($value)
{
return $value ? Carbon::createFromFormat('Y-m-d H:i:s', $value)->format(config('panel.date_format') . ' ' . config('panel.time_format')) : null;
}
public function setActivityStartAttribute($value)
{
$this->attributes['activity_start'] = $value ? Carbon::createFromFormat(config('panel.date_format') . ' ' . config('panel.time_format'), $value)->format('Y-m-d H:i:s') : null;
}
public function getActivityEndAttribute($value)
{
return $value ? Carbon::createFromFormat('Y-m-d H:i:s', $value)->format(config('panel.date_format') . ' ' . config('panel.time_format')) : null;
}
public function setActivityEndAttribute($value)
{
$this->attributes['activity_end'] = $value ? Carbon::createFromFormat(config('panel.date_format') . ' ' . config('panel.time_format'), $value)->format('Y-m-d H:i:s') : null;
}
public function activity_types()
{
return $this->belongsToMany(ActivityType::class);
}
public function activity_subtypes()
{
return $this->belongsToMany(ActivitySubType::class);
}
public function science_areas()
{
return $this->belongsToMany(ScienceArea::class);
}
public function sciencedirections()
{
return $this->belongsToMany(ScienceDirection::class);
}
public function accountabledepartments()
{
return $this->belongsToMany(Department::class);
}
public function accountablesubsections()
{
return $this->belongsToMany(DepartmentSubsection::class);
}
public function accountablepersonkks()
{
return $this->belongsToMany(User::class);
}
public function getAttachmentsAttribute()
{
return $this->getMedia('attachments');
}
}