$order->id, 'reference' => $order->reference, 'reference_contract' => $order->type, 'type' => $order->type, 'status' => $order->status, 'created_at' => $order->created_at->format('d-m-Y') ]; } /** * Include company module * @param Order $order * @return Item */ public function includeCompanyModule(Order $order): Item { return $this->item($order->companyModule, new CompanyModuleTransformer()); } /** * * Include warehouse * @param Order $order * @return Item */ public function includeWarehouse(Order $order): Item { return $this->item($order->orderRoles()->where('role_id', '=', OrderRoleTypes::ORIGIN_WAREHOUSE)->first()->appointee, new CompanyModuleTransformer()); } /** * include address * @param Order $order * @return Item */ public function includeAddress(Order $order): Item { return $this->item($order->addresses()->where('status', '=', ApprovalStatus::APPROVED)->first(), new AddressTransformer()); } /** * include address change request * @param Order $order * @return Item */ public function includeAddressChangeRequest(Order $order): Item { return $this->item($order->addressesPendingVerification()->first(), new AddressTransformer()); } /** * include parcels * @param Order $order * @return array */ public function includeParcels(Order $order): array { return [ 'origin_warehouse_packages' => $this->collection($order->originWarehousePackages()->get(), new PackageListTransformer()), 'in_transit_packages' => $this->collection($order->inTransitPackages()->get(), new PackageListTransformer()), 'destination_warehouse_packages' => $this->collection($order->destinationWarehousePackages()->get(), new PackageListTransformer()), 'delivered_packages' => $this->collection($order->deliveredPackages()->get(), new PackageListTransformer()), 'received_packages' => $this->collection($order->packingLists()->where('type', PackingListType::WAREHOUSE_RECEIVE_LIST)->whereHas('packages')->get(), new PackageListTransformer()), ]; } /** * * include invoices * @param Order $order * @return Collection */ public function includeInvoices(Order $order): Collection { $invoices = $order->transactions()->whereNotIn('transactions.status', [0, 1])->get(); return $this->collection($invoices, new TransactionTransformer()); } public function includeRemarks(Order $order): Collection { return $this->collection($order->remarks()->get(), new RemarkTransformer); } }