public function getPropertyPackages($id) { $property = Property::findOrFail($id); $packageCategories = []; if ($property->for_sell) { $packageCategories[] = PackageCategory::where('slug', 'sell')->firstOrFail(); } if ($property->for_rent) { $packageCategories[] = PackageCategory::where('slug', 'rent')->firstOrFail(); } $selectedAddons = []; $globalCartOrder = ProjectHelper::getGlobalCartOrder(); $packageOrder = $property->getCartOrder(); $order = NULL; if (empty($packageOrder)) { if (!is_null($globalCartOrder)) { $order = $globalCartOrder; $order->property()->associate($property); $order->save(); $addons = []; foreach ($order->getAddons() as $addon) { $addons[] = $addon->id; } $property->packages()->attach([$order->package->id => ['addons' => implode('|', $addons)]]); ProjectHelper::forgetGlobalCartOrder(); //Redirect to review because package is already selected from homepage return redirect()->route('frontend.property.review', ['id' => $property->id]); } } else { $order = $packageOrder; } if ($order) { foreach ($property->packages as $package) { $selectedAddons[$package->id] = explode('|', $package->pivot->addons); } } return view('frontend.property.property_packages', ['model' => $property, 'packageCategories' => $packageCategories, 'selectedAddons' => $selectedAddons]); }