78 lines
1.4 KiB
PHP
78 lines
1.4 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace App\Models;
|
||
|
|
||
|
use Illuminate\Support\Collection;
|
||
|
use Illuminate\Support\Facades\DB;
|
||
|
use Jenssegers\Mongodb\Eloquent\Model;
|
||
|
use Jenssegers\Mongodb\Eloquent\SoftDeletes;
|
||
|
|
||
|
use App\Interfaces\Packet;
|
||
|
|
||
|
final class OldEchomail extends Model
|
||
|
{
|
||
|
use SoftDeletes;
|
||
|
|
||
|
private const LOGKEY = 'ME-';
|
||
|
protected $table = 'echomails';
|
||
|
|
||
|
protected $collection = FALSE;
|
||
|
|
||
|
protected $casts = [ 'kludges' => 'json' ];
|
||
|
|
||
|
private const cast_utf8 = [
|
||
|
'to',
|
||
|
'from',
|
||
|
'subject',
|
||
|
'msg',
|
||
|
'origin',
|
||
|
'tearline',
|
||
|
'tagline',
|
||
|
];
|
||
|
protected $dates = ['datetime'];
|
||
|
|
||
|
public static function resolveConnection($connection = null)
|
||
|
{
|
||
|
return static::$resolver->connection('mongodb');
|
||
|
}
|
||
|
|
||
|
/* RELATIONS */
|
||
|
|
||
|
public function echoarea()
|
||
|
{
|
||
|
return $this->belongsTo(Echoarea::class);
|
||
|
}
|
||
|
|
||
|
public function fftn()
|
||
|
{
|
||
|
return $this
|
||
|
->setConnection('pgsql')
|
||
|
->belongsTo(Address::class)
|
||
|
->withTrashed();
|
||
|
}
|
||
|
|
||
|
/* ATTRIBUTES */
|
||
|
|
||
|
public function getKludgesAttribute(?string $value): Collection
|
||
|
{
|
||
|
return collect($this->castAttribute('kludges',$value));
|
||
|
}
|
||
|
|
||
|
public function getPathAttribute(?array $value): Collection
|
||
|
{
|
||
|
if (is_null($value))
|
||
|
return collect();
|
||
|
|
||
|
return Address::whereIn('id',$value)
|
||
|
->orderBy(DB::raw(sprintf("position (id::text in '(%s)')",join(',',$value))))
|
||
|
->get();
|
||
|
}
|
||
|
|
||
|
public function getSeenByAttribute(?array $value): Collection
|
||
|
{
|
||
|
if (is_null($value))
|
||
|
return collect();
|
||
|
|
||
|
return Address::whereIn('id',$value)->get();
|
||
|
}
|
||
|
}
|