Edit File: NegotiationOrder.php
<?php namespace App\Models; use App\Enums\NegotiationOrderStatusEnum; use App\Enums\OrderPayType; use App\Enums\OrderStatusEnum; use App\Enums\ProductDeliveryTypesEnum; 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\Relations\HasOne; class NegotiationOrder extends Model { use HasFactory; protected $fillable = [ 'order_num', 'user_id', 'provider_id', 'cancellation_reason_id', 'city_id', 'room_id', 'neighborhood_id', 'pay_type', 'pay_status', 'pay_data', 'lat', 'lng', 'map_desc', 'notes', 'product_id', 'quantity', 'order_type', 'receiving_method', 'schedule_execution_date', 'schedule_execution_time', 'status', 'delivery_price', 'delegate_due_amount', 'notes', 'car_color', 'car_model', 'car_plat_number', 'receiving_in_store_notes', //calls 'api_key', 'session_id', 'token', 'secret_key', ]; public function neighborhood(): BelongsTo { return $this->belongsTo(Neighborhood::class, 'neighborhood_id', 'id'); } public function user(): BelongsTo { return $this->belongsTo(User::class, 'user_id', 'id'); } public function provider(): BelongsTo { return $this->belongsTo(Provider::class, 'provider_id', 'id'); } public function cancellationReason(): BelongsTo { return $this->belongsTo(CancelReason::class, 'cancellation_reason_id', 'id'); } public function product(): BelongsTo { return $this->belongsTo(Product::class)->withTrashed(); } public function negotiationRoom(): BelongsTo { return $this->belongsTo(Room::class, 'room_id', 'id'); } public function invoices(): HasMany { return $this->hasMany(NegotiationInvoice::class); } public function latestInvoice() { return $this->hasOne(NegotiationInvoice::class)->latestOfMany(); } public static function boot(): void { parent::boot(); self::creating(function ($model) { $lastId = self::max('id') ?? 0; $model->order_num = date('Y') . ($lastId + 1); }); } public function getStatusAttribute($value): array { return [ 'value' => $value, 'slug' => NegotiationOrderStatusEnum::from((int)$value)->name, 'text' => __('order.negotiation_status.' . NegotiationOrderStatusEnum::from((int)$value)->name), ]; } public function getReceivingMethodAttribute($value): array { return [ 'value' => $value, 'slug' => ProductDeliveryTypesEnum::from((int)$value)->name, 'text' => __('order.receiving_method.' . ProductDeliveryTypesEnum::from((int)$value)->name), ]; } public function getPayTypeTextAttribute(): string { return trans('order.pay_type.' . strtolower(OrderPayType::from((int)$this->attributes['pay_type'])->name)); } }
Back to File Manager