Edit File: OrderDetailsResource.php
<?php namespace App\Http\Resources\Api\Delegate\Orders; use App\Enums\OrderStatusEnum; use App\Http\Resources\Api\General\OrderRateResource; use App\Http\Resources\Api\General\Settings\CancelReasonResource; use App\Http\Resources\Api\Provider\OrdersItemResource; use App\Http\Resources\Api\User\Basics\BasicProviderResource; use App\Http\Resources\Api\User\Basics\BasicUserResource; use App\Models\Delegate; use Illuminate\Http\Resources\Json\JsonResource; class OrderDetailsResource extends JsonResource { public function toArray($request) { return [ 'id' => $this?->id, 'order_number' => $this?->order_num, 'receiving_method' => $this->receiving_method, 'status' => $this?->getStatus(), 'notes' => $this?->notes, 'order_call_type' => 'order', // When Order is Scheduled 'schedule_execution_date' => $this?->schedule_execution_date, 'schedule_execution_time' => $this?->schedule_execution_time, // Financial Transactions 'financial_transactions' => [ 'created_at' => $this->created_at->translatedFormat('j F Y'), 'created_at_text' => $this->created_at->diffForHumans(), 'vat_per' => $this?->vat_per, 'vat_amount' => $this?->vat_amount, 'coupon_amount' => $this?->coupon_amount, 'total_products' => $this?->total_products, 'delivery_price' => $this?->delivery_price, 'final_total' => $this?->final_total, 'pay_type' => $this?->pay_type, 'pay_type_text' => $this?->pay_type_text, 'pay_status' => $this?->pay_status, ], // Informations 'provider' => BasicProviderResource::make($this?->provider), 'user' => BasicUserResource::make($this?->user), 'delegate_id' => $this?->delegate_id, // Address Details 'map_desc' => $this?->map_desc, 'lat' => $this?->lat, 'lng' => $this?->lng, 'distances' => [ 'between_delegate_and_provider' => calculateDistance(auth()->user()->lat, auth()->user()->lng, $this->provider->lat, $this->provider->lng)['text'], 'between_delegate_and_user' => calculateDistance(auth()->user()->lat, auth()->user()->lng, $this->lat, $this->lng)['text'], ], 'is_user_rated' => $this->user?->givenRates()->whereOrderId($this->id) ->where(['ratingable_type' => Delegate::class, 'ratingable_id' => auth()->id()])->exists() ?? false, 'is_provider_rated' => $this->provider?->givenRates()->whereOrderId($this->id) ->where(['ratingable_type' => Delegate::class, 'ratingable_id' => auth()->id()])->exists() ?? false, 'rates' => $this->when(!empty($this->rates), OrderRateResource::collection($this->rates() ->where(['ratingable_type' => Delegate::class, 'ratingable_id' => auth()->id()])->get())), // Order Items 'order_items' => OrdersItemResource::collection($this?->orderItems), // When Cancelling 'cancellation_reason' => CancelReasonResource::make($this?->cancellationReason), 'currency' => __('site.currency'), ]; } protected function getStatus() { $isIgnored = auth()->user()->ignoredOrders()->where('order_id', $this->id)->exists(); return $isIgnored ? [ 'value' => OrderStatusEnum::Cancelled->value, 'slug' => OrderStatusEnum::from((int)OrderStatusEnum::Cancelled->value)->name, 'text' => __('order.status.' . OrderStatusEnum::from((int)OrderStatusEnum::Cancelled->value)->name), ] : $this->status; } }
Back to File Manager