Files
portal-api/modules/Lead/App/Models/Lead.php
T

69 lines
1.8 KiB
PHP

<?php
namespace Modules\Lead\App\Models;
use App\Models\Customer;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Concerns\HasUuids;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class Lead extends Model
{
use HasUuids;
public const STATUSES = ['new', 'contacted', 'converted', 'lost'];
public const SOURCES = ['manual', 'whmcs_contact'];
protected $fillable = [
'legacy_id',
'customer_id',
'whmcs_client_id',
'fullname',
'company',
'email',
'phone',
'address',
'source',
'status',
'receives_invoice_emails',
'receives_domain_emails',
'receives_support_emails',
'receives_product_emails',
'receives_general_emails',
'note',
];
protected $casts = [
'receives_invoice_emails' => 'boolean',
'receives_domain_emails' => 'boolean',
'receives_support_emails' => 'boolean',
'receives_product_emails' => 'boolean',
'receives_general_emails' => 'boolean',
];
public function uniqueIds(): array
{
return ['uuid'];
}
public function customer(): BelongsTo
{
return $this->belongsTo(Customer::class);
}
public function scopeSearch(Builder $query, ?string $term): Builder
{
$term = trim((string) $term);
return $term === '' ? $query : $query->where(function (Builder $query) use ($term) {
$like = '%' . addcslashes($term, '%_\\') . '%';
$query->where('fullname', 'like', $like)
->orWhere('company', 'like', $like)
->orWhere('email', 'like', $like)
->orWhere('phone', 'like', $like);
});
}
}