id; $origin_warehouse_packages = $this->originWarehousePackages()->get(); foreach ($origin_warehouse_packages as $item) { $item['include_shipping_transaction'] = false; $item['include_suspended_invoice'] = false; $item['include_packages'] = true; $item['include_receive_packing_list'] = true; $item['include_base_only_in_receive_packing_list'] = false; $item['include_order_in_packages'] = true; $item['include_transport_in_packages'] = true; $item['include_container_in_packages'] = true; $item['include_packing_list_reference_in_packages'] = true; } $in_transit_packages = $this->inTransitPackages()->get(); foreach ($in_transit_packages as $item) { $item['include_shipping_transaction'] = false; $item['include_suspended_invoice'] = false; $item['include_packages'] = true; $item['include_receive_packing_list'] = true; $item['include_base_only_in_receive_packing_list'] = false; $item['include_order_in_packages'] = true; $item['include_transport_in_packages'] = false; $item['include_container_in_packages'] = true; $item['include_packing_list_reference_in_packages'] = true; } $destination_warehouse_packages = $this->destinationWarehousePackages()->get(); foreach ($destination_warehouse_packages as $item) { $item['include_shipping_transaction'] = false; $item['include_suspended_invoice'] = false; $item['include_packages'] = true; $item['include_receive_packing_list'] = false; $item['include_base_only_in_receive_packing_list'] = false; $item['include_order_in_packages'] = true; $item['include_transport_in_packages'] = false; $item['include_container_in_packages'] = true; $item['include_packing_list_reference_in_packages'] = true; } $delivered_packages = $this->deliveredPackages()->get(); foreach ($delivered_packages as $item) { $item['include_shipping_transaction'] = false; $item['include_suspended_invoice'] = false; $item['include_packages'] = true; $item['include_receive_packing_list'] = true; $item['include_base_only_in_receive_packing_list'] = false; $item['include_order_in_packages'] = true; $item['include_transport_in_packages'] = false; $item['include_container_in_packages'] = true; $item['include_packing_list_reference_in_packages'] = true; } $received_packages = $this->packingLists()->where('type', PackingListType::WAREHOUSE_RECEIVE_LIST)->whereHas('packages')->get(); foreach ($received_packages as $item) { $item['include_shipping_transaction'] = false; $item['include_suspended_invoice'] = false; $item['include_packages'] = true; $item['include_receive_packing_list'] = true; $item['include_base_only_in_receive_packing_list'] = false; $item['include_order_in_packages'] = true; $item['include_transport_in_packages'] = true; $item['include_container_in_packages'] = false; $item['include_packing_list_reference_in_packages'] = true; } return [ 'id' => $this->id, 'reference' => $this->reference, 'reference_contract' => (int) $this->type, 'type' => (int) $this->type, 'status' => (int) $this->status, //'company_module' => new CompanyModuleResource($this->companyModule), //'warehouse' => new CompanyModuleResource($this->orderRoles()->where('role_id', '=', OrderRoleTypes::ORIGIN_WAREHOUSE)->first()->appointee), // 'address' => new AddressResource($this->addresses()->where('status', '=', ApprovalStatus::APPROVED)->first()), // 'address_change_request' => new AddressResource($this->addressesPendingVerification()->first()), 'parcels' => $this->whenLoaded('packingLists', function() use ($origin_warehouse_packages, $in_transit_packages, $destination_warehouse_packages, $delivered_packages, $received_packages) { return [ $this->mergeWhen($this->include_packages_origin_warehouse, [ 'origin_warehouse_packages' => PackingListBaseResource::collection($origin_warehouse_packages) ]), $this->mergeWhen($this->include_packages_in_transit, [ 'in_transit_packages' => PackingListBaseResource::collection($in_transit_packages) ]), $this->mergeWhen($this->include_packages_destination_warehouse, [ 'destination_warehouse_packages' => PackingListBaseResource::collection($destination_warehouse_packages) ]), $this->mergeWhen($this->include_packages_delivery, [ 'delivered_packages' => PackingListBaseResource::collection($delivered_packages) ]), $this->mergeWhen($this->include_packages_received, [ 'received_packages' => PackingListBaseResource::collection($received_packages) ]), ]; }), // 'invoices' => $this->whenLoaded('packingLists', function() use ($orderId) { // return TransactionResource::collection($this->transactions()->whereNotIn('transactions.status', [0, 1])->where('transactions.type', TransactionType::SHIPPING_INVOICE)->get()); // }), //'remarks' => RemarkResource::collection($this->remarks), 'created_at' => $this->created_at->format('d-m-Y') ]; } }