|
|
@@ -2,6 +2,7 @@
|
|
|
|
|
|
namespace App\Services;
|
|
|
|
|
|
+use App\Enums\StoreItemStatusEnum;
|
|
|
use App\Models\StoreItem;
|
|
|
use App\Models\StoreItemInterest;
|
|
|
use App\Models\StoreItemVariation;
|
|
|
@@ -12,7 +13,7 @@ use Illuminate\Support\Facades\DB;
|
|
|
|
|
|
class StoreItemService
|
|
|
{
|
|
|
- public function getAll(): Collection
|
|
|
+ public function getAll(bool $onlyActive = false): Collection
|
|
|
{
|
|
|
$userId = Auth::id();
|
|
|
|
|
|
@@ -20,6 +21,10 @@ class StoreItemService
|
|
|
->withCount('interests')
|
|
|
->orderBy('name');
|
|
|
|
|
|
+ if ($onlyActive) {
|
|
|
+ $query->where('status', StoreItemStatusEnum::ACTIVE);
|
|
|
+ }
|
|
|
+
|
|
|
if ($userId) {
|
|
|
$query->withExists(['interests as user_interested' => fn($q) => $q->where('user_id', $userId)]);
|
|
|
}
|
|
|
@@ -27,9 +32,15 @@ class StoreItemService
|
|
|
return $query->get();
|
|
|
}
|
|
|
|
|
|
- public function findById(int $id): ?StoreItem
|
|
|
+ public function findById(int $id, bool $onlyActive = false): ?StoreItem
|
|
|
{
|
|
|
- return StoreItem::with(['category', 'media', 'variations'])->find($id);
|
|
|
+ $query = StoreItem::with(['category', 'media', 'variations']);
|
|
|
+
|
|
|
+ if ($onlyActive) {
|
|
|
+ $query->where('status', StoreItemStatusEnum::ACTIVE);
|
|
|
+ }
|
|
|
+
|
|
|
+ return $query->find($id);
|
|
|
}
|
|
|
|
|
|
public function create(array $data): StoreItem
|
|
|
@@ -95,8 +106,8 @@ class StoreItemService
|
|
|
if (!$model) return null;
|
|
|
|
|
|
$model->status = $model->status->value === 'active'
|
|
|
- ? \App\Enums\StoreItemStatusEnum::INACTIVE
|
|
|
- : \App\Enums\StoreItemStatusEnum::ACTIVE;
|
|
|
+ ? StoreItemStatusEnum::INACTIVE
|
|
|
+ : StoreItemStatusEnum::ACTIVE;
|
|
|
$model->save();
|
|
|
|
|
|
return $model->fresh(['category', 'media', 'variations']);
|