File: /www/wwwroot/erp.nhatnamsst.com/domains/QuoteRequest/Models/QuoteRequest.php
<?php
namespace Domains\QuoteRequest\Models;
use Domains\Admin\Models\Admin;
use Domains\Brand\Models\Brand;
use Domains\Customer\Models\Customer;
use Domains\Core\Enums\CustomerType;
use Domains\Core\Enums\QuoteRequestStatus;
use Domains\Core\Traits\ModelTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
class QuoteRequest extends Model
{
use HasFactory, ModelTrait;
protected $fillable = [
'code',
'sale_id',
'request_date',
'brand_id',
'customer_id',
'status',
'selected_inter_id',
'cannot_quote_reason',
'requote_request_message',
'confirm_messages',
'sales_leader_quote_date',
'customer_type',
'new_consultant',
'spare_parts',
'project',
'attached_files',
];
protected function casts(): array
{
return [
'status' => QuoteRequestStatus::class,
'customer_type' => CustomerType::class,
'spare_parts' => 'boolean',
'request_date' => 'date',
'sales_leader_quote_date' => 'date',
'attached_files' => 'array',
'confirm_messages' => 'array',
];
}
/**
* Get the sale admin
*/
public function sale(): BelongsTo
{
return $this->belongsTo(Admin::class, 'sale_id');
}
/**
* Get the brand
*/
public function brand(): BelongsTo
{
return $this->belongsTo(Brand::class);
}
/**
* Get the customer
*/
public function customer(): BelongsTo
{
return $this->belongsTo(Customer::class);
}
/**
* Get the inters (many-to-many)
*/
public function inters(): BelongsToMany
{
return $this->belongsToMany(Admin::class, 'quote_request_inters', 'quote_request_id', 'admin_id')
->withTimestamps();
}
/**
* Get the quote request details
*/
public function details(): HasMany
{
return $this->hasMany(QuoteRequestDetail::class);
}
/**
* Get the selected inter admin
*/
public function selectedInter(): BelongsTo
{
return $this->belongsTo(Admin::class, 'selected_inter_id');
}
}