Viewing file: Customer.php (5.26 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
class Customer extends Authenticatable
{
use HasFactory, Notifiable, HasApiTokens;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'first_name', 'last_name', 'email', 'password','type', 'status', 'email_verified_at','added_by',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
protected $dates = ['created_at', 'updated_at'];
public function getFullNameAttribute()
{
return "{$this->first_name} {$this->last_name}";
}
public function setPasswordAttribute($value)
{
$this->attributes['password'] = bcrypt($value);
}
public function getStatusAttribute($value)
{
return ucfirst($value);
}
public function admin()
{
return $this->belongsTo(User::class, 'admin_id')->withDefault();
}
public function numbers()
{
return $this->hasMany(CustomerNumber::class);
}
public function plan()
{
// dd(auth('customer')->user());
return $this->hasOne(CustomerPlan::class)->orderByDesc('created_at')->where('is_current', 'yes');
}
public function customer_plans (){
return $this->hasMany(CustomerPlan::class);
}
public function messages()
{
return $this->hasMany(Message::class)->orderByDesc('created_at');
}
public function sent_messages()
{
return $this->messages()->where('type', 'sent');
}
public function receive_messages()
{
return $this->messages()->where('type', 'inbox');
}
public function drafts()
{
return $this->hasMany(Draft::class)->orderByDesc('created_at');
}
public function unread_messages()
{
return $this->receive_messages()->where('read', 'no');
}
public function settings()
{
return $this->hasMany(CustomerSettings::class);
}
public function contacts()
{
return $this->hasMany(Contact::class)->orderByDesc('created_at');
}
public function groups()
{
return $this->hasMany(Group::class)->orderByDesc('created_at');
}
public function active_groups()
{
return $this->groups()->where('status', 'active');
}
public function sms_queues()
{
return $this->hasMany(SmsQueue::class);
}
public function keywords()
{
return $this->hasMany(Keyword::class);
}
public function keyword_contacts()
{
return $this->hasMany(KeywordContact::class);
}
public function campaings()
{
return $this->hasMany(Campaign::class);
}
public function tickets(){
return $this->hasMany(Ticket::class);
}
public function message_logs()
{
return $this->hasMany(MessageLog::class);
}
public function subscribes()
{
return $this->hasMany(Subscribe::class);
}
public function sender_ids()
{
return $this->hasMany(SenderId::class);
}
public function from_groups(){
return $this->hasMany(FromGroup::class, 'customer_id', 'id');
}
public function chat_responses(){
return $this->hasMany(ChatResponse::class, 'customer_id', 'id');
}
public function expenses(){
return $this->hasMany(Expense::class, 'customer_id', 'id');
}
public function whatsapp_numbers()
{
return $this->hasMany(CustomerWhatsAppNumber::class);
}
public function labels(){
return $this->hasMany(Label::class,'customer_id', 'id');
}
public function exceptions(){
return $this->hasMany(Exception::class, 'customer_id', 'id');
}
public function plans()
{
return $this->hasMany(Plan::class, 'admin_id', 'id');
}
public function plan_requests(){
return $this->hasMany(BillingRequest::class,'admin_id', 'id');
}
public function customers(){
return $this->hasMany(Customer::class,'admin_id', 'id');
}
public function resellers(){
return $this->hasMany(Customer::class,'admin_id', 'id')->where('type', 'reseller');
}
public function number_requests(){
return $this->hasMany(NumberRequest::class,'admin_id', 'id');
}
public function wallet(){
return $this->hasOne(Wallet::class, 'customer_id', 'id');
}
public function topup_requests(){
return $this->hasMany(TopUpRequest::class, 'admin_id', 'id')->where('customer_type','!=','master_reseller')->orWhere('customer_type','!=','normal');
}
public function domain(){
return $this->hasOne(Domain::class, 'customer_id', 'id');
}
}
|