pingcrm/app/Contact.php

48 lines
1.4 KiB
PHP
Raw Normal View History

2019-03-18 08:53:00 -03:00
<?php
namespace App;
use Illuminate\Database\Eloquent\SoftDeletes;
class Contact extends Model
{
use SoftDeletes;
public function organization()
{
return $this->belongsTo(Organization::class);
}
public function getNameAttribute()
{
return $this->first_name.' '.$this->last_name;
}
public function scopeOrderByName($query)
{
$query->orderBy('last_name')->orderBy('first_name');
}
public function scopeFilter($query, array $filters)
{
$query->when($filters['search'] ?? null, function ($query, $search) {
$query->where(function ($query) use ($search) {
$query->where('first_name', 'ilike', '%'.$search.'%')
->orWhere('last_name', 'ilike', '%'.$search.'%')
->orWhere('email', 'ilike', '%'.$search.'%')
->orWhereHas('organization', function ($query) use ($search) {
$query->where('name', 'ilike', '%'.$search.'%');
});
});
// })->when($filters['role'] ?? null, function ($query, $role) {
// $query->whereRole($role);
})->when($filters['trashed'] ?? null, function ($query, $trashed) {
if ($trashed === 'with') {
$query->withTrashed();
} elseif ($trashed === 'only') {
$query->onlyTrashed();
}
});
}
}