Files
backend-mm/app/Models/Ecommerce/Product/Order/Order.php
2025-09-25 15:35:16 +05:00

89 lines
1.9 KiB
PHP

<?php
namespace App\Models\Ecommerce\Product\Order;
use App\Models\Ecommerce\Product\Order\Concerns\HasPayments;
use App\Models\Ecommerce\Product\Order\Concerns\HasShipping;
use App\Models\Ecommerce\Product\Order\Concerns\HasStatus;
use App\Models\System\Settings\Location\Province;
use App\Models\System\Settings\Payments\PaymentType;
use App\Models\User;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes;
class Order extends Model
{
use HasFactory;
use HasPayments;
use HasShipping;
use HasStatus;
use SoftDeletes;
/**
* The attributes that are mass assignable.
*
* @var array<string>
*/
protected $fillable = [
'number',
'status',
'shipping_method',
'shipping_price',
'payment_type_id',
'notes',
'customer_name',
'customer_phone',
'customer_address',
'delivery_time',
'delivery_at',
'region',
'halkbank_id',
'user_id',
'additional_tax',
'province_id',
'source_app',
];
/**
* The attributes that should be cast.
*/
protected $casts = [
'delivery_at' => 'date',
];
/**
* User (customer)
*/
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
/**
* Related Province
*/
public function province(): BelongsTo
{
return $this->belongsTo(Province::class);
}
/**
* Order items
*/
public function items(): HasMany
{
return $this->hasMany(OrderItem::class);
}
/**
* Payment types
*/
public function paymentType(): BelongsTo
{
return $this->belongsTo(PaymentType::class, 'payment_type_id');
}
}