Files
portal-api/app/Models/Customer.php
T
2025-07-24 16:18:27 +07:00

167 lines
3.2 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Sanctum\HasApiTokens;
class Customer extends Authenticatable
{
use HasFactory, HasApiTokens;
protected $table = 'customer';
protected $fillable = [
'firstname',
'lastname',
'avatar',
'address',
'state',
'city',
'postcode',
'country',
'company',
'phone',
'email',
'email_verify',
'email_hash',
'email_marketing',
'receive_deposit',
'cccd',
'front_cccd',
'back_cccd',
'password',
'credit',
'total',
'remember_token',
'status',
'gender',
];
/**
* The attributes that should be hidden for serialization.
*
* @var array<int, string>
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* Quan hệ với ModuleHosting (Hosting).
*/
public function hosting()
{
return $this->hasMany(ModuleHosting::class);
}
/**
* Quan hệ với ModuleDomain (Domain).
*/
public function domain()
{
return $this->hasMany(ModuleDomain::class);
}
/**
* Quan hệ với ModuleVmware (VPS).
*/
public function vps()
{
return $this->hasMany(ModuleVmware::class);
}
/**
* Quan hệ với Invoice.
*/
public function invoice()
{
return $this->hasMany(Invoice::class);
}
/**
* Quan hệ với Ticket.
*/
public function ticket()
{
return $this->hasMany(Ticket::class);
}
/**
* Quan hệ với Mail.
*/
public function mail()
{
return $this->hasMany(Mail::class);
}
/**
* Quan hệ với File.
*/
public function file()
{
return $this->hasMany(File::class, 'customer_id');
}
/**
* Quan hệ với Order.
*/
public function order()
{
return $this->hasMany(Order::class);
}
/**
* Quan hệ với Transaction.
*/
public function transaction()
{
return $this->hasMany(Transaction::class);
}
/**
* Quan hệ với InvoiceItem.
*/
public function invoiceItem()
{
return $this->hasMany(InvoiceItem::class);
}
/**
* Quan hệ với Log.
*/
public function log()
{
return $this->hasMany(Log::class);
}
/**
* Quan hệ với ModuleSnapshotLimit (Snapshot).
*/
public function snapShot()
{
return $this->hasOne(ModuleSnapshotLimit::class);
}
public function getStatus()
{
return match ($this->attributes['status']) {
1 => '<span class="badge bg-success">Actived</span>',
2 => '<span class="badge bg-secondary">De-actived</span>',
default => '<span class="badge bg-danger">Banned</span>'
};
}
public function getEmailMarketingBoolAttribute()
{
return (bool) $this->email_marketing;
}
public function getReceiveDepositBoolAttribute()
{
return (bool) $this->receive_deposit;
}
}