File: /var/www/ivs.kaunokolegija.lt/laravel/app/Models/CoopAgreement.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 CoopAgreement extends Model implements HasMedia
{
use SoftDeletes, InteractsWithMedia, Auditable, HasFactory;
public $table = 'coop_agreements';
protected $appends = [
'attachments',
];
protected $dates = [
'signing_date',
'validity_date',
'created_at',
'updated_at',
'deleted_at',
];
protected $fillable = [
'social_partner_id',
'state_id',
'type_id',
'number',
'signing_date',
'validity_date',
'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 coopagreementsCompanies()
{
return $this->belongsToMany(Company::class);
}
public function social_partner()
{
return $this->belongsTo(Company::class, 'social_partner_id');
}
public function state()
{
return $this->belongsTo(CoopAgreementState::class, 'state_id');
}
public function type()
{
return $this->belongsTo(CoopAgreementType::class, 'type_id');
}
public function getSigningDateAttribute($value)
{
return $value ? Carbon::parse($value)->format(config('panel.date_format')) : null;
}
public function setSigningDateAttribute($value)
{
$this->attributes['signing_date'] = $value ? Carbon::createFromFormat(config('panel.date_format'), $value)->format('Y-m-d') : null;
}
public function getValidityDateAttribute($value)
{
return $value ? Carbon::parse($value)->format(config('panel.date_format')) : null;
}
public function setValidityDateAttribute($value)
{
$this->attributes['validity_date'] = $value ? Carbon::createFromFormat(config('panel.date_format'), $value)->format('Y-m-d') : null;
}
public function contactpeople()
{
return $this->belongsToMany(ContactPerson::class);
}
public function getAttachmentsAttribute()
{
return $this->getMedia('attachments');
}
}