![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/syn.corals.io/Corals/modules/Utility/Classes/Wishlist/ |
<?php namespace Corals\Modules\Utility\Classes\Wishlist; use Illuminate\Database\Eloquent\Model; use Corals\Modules\Utility\Models\Wishlist\Wishlist as WishlistModel; class WishlistManager { protected $instance, $user; /** * WishlistManager constructor. * @param $instance * @param null $user */ public function __construct($instance, $user = null) { $this->instance = $instance; $this->user = is_null($user) ? user() : $user; } /** * @return WishlistModel|Model */ public function createWishlistItem() { $data = [ 'wishlistable_id' => $this->instance->id, 'wishlistable_type' => getMorphAlias($this->instance), 'user_id' => $this->user->id, ]; return WishlistModel::create($data); } /** * @return string * @throws \Exception */ public function handleWishlistItem() { $wishlistItem = $this->getWishlistItem(false); if ($wishlistItem) { $this->deleteItem($wishlistItem); $state = 'delete'; } else { $state = 'add'; $this->createWishlistItem(); } return $state; } /** * @param WishlistModel $wishlist * @return bool|null * @throws \Exception */ public function deleteItem(WishlistModel $wishlist) { return $wishlist->delete(); } /** * @param bool $count * @return \Illuminate\Database\Eloquent\Builder|WishlistModel|int|null|object */ public function getWishlistItem($count = true) { $wishlistQB = WishlistModel::query() ->where('wishlistable_id', $this->instance->id) ->where('wishlistable_type', getMorphAlias($this->instance)) ->where('user_id', $this->user->id); if ($count) { return $wishlistQB->count(); } else { return $wishlistQB->first(); } } public function getUserWishlist($count = false) { $wishlistsQB = WishlistModel::query() ->where('wishlistable_type', getMorphAlias($this->instance)) ->where('user_id', $this->user->id); if ($count) { return $wishlistsQB->count(); } else { return $wishlistsQB; } } }