string('restaurant_name')->toString(), pickupAddress: $request->string('pickup_address')->toString(), pickupLatitude: (float) $request->input('pickup_latitude'), pickupLongitude: (float) $request->input('pickup_longitude'), customerName: $request->string('customer_name')->toString(), dropAddress: $request->string('drop_address')->toString(), dropLatitude: (float) $request->input('drop_latitude'), dropLongitude: (float) $request->input('drop_longitude'), dropContactPhone: $request->string('drop_contact_phone')->toString(), zoneId: $request->filled('zone_id') ? $request->integer('zone_id') : null, orderableType: $request->filled('orderable_type') ? $request->string('orderable_type')->toString() : null, orderableId: $request->filled('orderable_id') ? $request->integer('orderable_id') : null, pickupContactName: $request->filled('pickup_contact_name') ? $request->string('pickup_contact_name')->toString() : null, pickupContactPhone: $request->filled('pickup_contact_phone') ? $request->string('pickup_contact_phone')->toString() : null, pickupInstructions: $request->filled('pickup_instructions') ? $request->string('pickup_instructions')->toString() : null, dropContactName: $request->filled('drop_contact_name') ? $request->string('drop_contact_name')->toString() : null, dropInstructions: $request->filled('drop_instructions') ? $request->string('drop_instructions')->toString() : null, dropFloor: $request->filled('drop_floor') ? $request->string('drop_floor')->toString() : null, dropApartment: $request->filled('drop_apartment') ? $request->string('drop_apartment')->toString() : null, isScheduled: $request->boolean('is_scheduled'), scheduledFor: $request->filled('scheduled_for') ? new \DateTime($request->input('scheduled_for')) : null, isPriority: $request->boolean('is_priority'), orderValue: $request->filled('order_value') ? (float) $request->input('order_value') : null, tipAmount: $request->filled('tip_amount') ? (float) $request->input('tip_amount') : null, tipType: $request->filled('tip_type') ? $request->string('tip_type')->toString() : null, meta: $request->input('meta'), ); } /** * Convert to array for model creation. */ public function toArray(): array { return array_filter([ 'restaurant_id' => $this->restaurantId, 'restaurant_name' => $this->restaurantName, 'pickup_address' => $this->pickupAddress, 'pickup_latitude' => $this->pickupLatitude, 'pickup_longitude' => $this->pickupLongitude, 'customer_name' => $this->customerName, 'drop_address' => $this->dropAddress, 'drop_latitude' => $this->dropLatitude, 'drop_longitude' => $this->dropLongitude, 'drop_contact_phone' => $this->dropContactPhone, 'zone_id' => $this->zoneId, 'orderable_type' => $this->orderableType, 'orderable_id' => $this->orderableId, 'pickup_contact_name' => $this->pickupContactName, 'pickup_contact_phone' => $this->pickupContactPhone, 'pickup_instructions' => $this->pickupInstructions, 'drop_contact_name' => $this->dropContactName, 'drop_instructions' => $this->dropInstructions, 'drop_floor' => $this->dropFloor, 'drop_apartment' => $this->dropApartment, 'is_scheduled' => $this->isScheduled, 'scheduled_for' => $this->scheduledFor?->format('Y-m-d H:i:s'), 'is_priority' => $this->isPriority, 'order_value' => $this->orderValue, 'tip_amount' => $this->tipAmount, 'tip_type' => $this->tipType, 'meta' => $this->meta, ], fn ($value) => $value !== null); } }