Edit File: OrderResource.php
<?php namespace App\Http\Resources; use Illuminate\Http\Resources\Json\JsonResource; use App\Traits\GeneralTrait; use App\Models\Paymentmethod; use App\Models\Category; use App\Models\Setting; use App\Models\Review; use App\Http\Resources\OrderProductResource; use App\Http\Resources\StoresResource; use App\Http\Resources\StoreResource; use App\Http\Resources\DeliveryOffersResource; use App\Http\Resources\PaymentmethodResource; use App\Services\OrderService; use Carbon\Carbon; use App\Models\Order; use Illuminate\Support\Facades\File; use SimpleSoftwareIO\QrCode\Facades\QrCode; class OrderResource extends JsonResource { use GeneralTrait; /** * Transform the resource into an array. * * @param \Illuminate\Http\Request $request * @return array */ public function toArray($request) { $lang = $request->header('lang') ?? 'ar'; //timer to withdraw $timer=0; $can_withdraw=false; //user $user = auth('api')->user(); // paymrnt method $payment_method = Paymentmethod::where('key',$this->payment_type)->first(); // order products $orderproducts = $this->orderproducts; // delivery_offers $delivery_offers = $this->deliveryOffers()->Where('status','new')->get(); // delivery_offers $images = $this->images()->get(); // order current status if($user->id == $this->user_id){ $status = $this->statusForUser(); }else{ $status = $this->statusForStore(); } $order_service = new OrderService(); if($this->deliver_lat && $this->deliver_long || $request->lat && $request->long){ $request['distance'] = $order_service->getdirectDistance($this->deliver_long ?? $request->lat, $this->deliver_long ?? $request->long , $this->receive_lat , $this->receive_long); } //image and name $image = $this->store ? $this->store->iconPath :''; $name = $this->store->getTranslations('name')[$lang]??''; $is_rated = false; if (Review::where('order_id',$this->id)->where('user_id' , $user->id)->first()) { $is_rated = true; } if($this->store_id == null){ $is_rated = true; } $newformat =''; if($this->deliver_date) { $newformat = Carbon::parse($this->deliver_date)->format('Y-m-d'); } $store = $this->store; $delegate = $this->delegate; $order_user = $this->user; // $image = asset("assets/uploads/qrcodes/".$this->id.".png"); // if (!File::exists($image)) { // QrCode::format('png')->generate(route('admin.invoice.show' , $this->id), public_path("assets/uploads/qrcodes/".$this->id.".png")); // } return [ 'id' => $this->id, 'created_at' => $this->created_at->isoFormat('YYYY - MMMM - D'), 'status' => $status, 'deliver_time' => ($this->deliver_time) ? Carbon::createFromFormat('H:i:s', $this->deliver_time)->format('g:i A') : '', 'deliver_date' => $newformat??'', 'payment_method' => new PaymentmethodResource($payment_method), 'payment_status' => $this->payment_status=='true'?true:false, 'deliver_lat' => $this->deliver_lat??'', 'deliver_long' => $this->deliver_long??'', 'deliver_address' => $this->deliver_address??'', 'receive_lat' => $this->receive_lat??'', 'receive_long' => $this->receive_long??'', 'receive_address' => $this->receive_address??'', 'have_invoice' => $this->have_invoice=='true'?true:false, 'needs_delivery' => $this->needs_delivery=='true'?true:false, 'type' => $this->type??'special_stores', 'delivery_price' => number_format($this->delivery_price,2)??'0', 'price' => number_format($this->price,2)??'0', 'app_percentage' => number_format($this->app_percentage,2)??'0', 'added_value' => number_format($this->added_value,2)??'0', 'discount' => number_format($this->discount,2)??'0', 'total_price' => number_format($this->total_price,2)??'0', 'invoice_image' => $this->invoiceImagePath ?? '', 'description' => $this->description ?? '', 'products' => OrderProductsResource::collection($orderproducts), 'delegate_id' => $delegate ? $delegate->id : 0, 'delegate_name' => $delegate ? $delegate->name : '', 'delegate_phone' => $delegate ? $delegate->country_key.$delegate->phone : '', 'delegate_avatar' => $delegate ? $delegate->avatarPath : '', 'delegate_lat' => $delegate?((string)$delegate->lat??''):'', 'delegate_long' => $delegate?((string)$delegate->long??''):'', 'user_id' => $order_user? $order_user->id : 0, 'user_name' => $order_user? $order_user->name : '', 'user_phone' => $order_user? $order_user->country_key.$order_user->phone : '', 'user_avatar' => $order_user? $order_user->avatarPath:'', 'delivery_offers' => DeliveryOffersResource::collection($delivery_offers), 'images' => OrderImagesResource::collection($images), 'store' => new StoresResource($store), 'close_reason' => $this->close_reason??'', 'timer' => $timer, 'can_withdraw' => $can_withdraw, 'image' => $image, 'name' => $name, 'is_rated' => $is_rated, 'invoice' => $this->status != 'open' ? route('admin.invoice.show' , $this->id) : '', // 'qr' => $image, ]; } public function changeMonth($month){ switch($month){ case 'Jan': return "يناير"; break; case 'Feb': return "فبراير"; break; case 'Mar': return "مارس"; break; case 'Apr': return "أبريل"; break; case 'May': return "مايو"; break; case 'Jun': return "يونيو"; break; case 'Jul': return "يوليو"; break; case 'Aug': return "أغسطس"; break; case 'Sep': return "سبتمبر"; break; case 'Oct': return "أكتوبر"; break; case 'Nov': return "نوفمبر"; break; case 'Dec': return "ديسمبر"; break; } } }
Back to File Manager