浏览代码

ajuste precos da loja + correcao nao aparecer item inativo

Gustavo Zanatta 1 天之前
父节点
当前提交
229e7f69b9

+ 17 - 0
app/Http/Controllers/StoreItemController.php

@@ -25,6 +25,12 @@ class StoreItemController extends Controller
         return $this->successResponse(payload: StoreItemResource::collection($items));
     }
 
+    public function indexAssociado(): JsonResponse
+    {
+        $items = $this->service->getAll(onlyActive: true);
+        return $this->successResponse(payload: StoreItemResource::collection($items));
+    }
+
     public function store(StoreItemRequest $request): JsonResponse
     {
         $item = $this->service->create($request->validated());
@@ -41,6 +47,17 @@ class StoreItemController extends Controller
         return $this->successResponse(payload: new StoreItemResource($item));
     }
 
+    public function showAssociado(int $id): JsonResponse
+    {
+        $item = $this->service->findById($id, onlyActive: true);
+
+        if (!$item) {
+            return $this->errorResponse(message: __('messages.not_found'));
+        }
+
+        return $this->successResponse(payload: new StoreItemResource($item));
+    }
+
     public function update(StoreItemRequest $request, int $id): JsonResponse
     {
         $item = $this->service->update($id, $request->validated());

+ 16 - 5
app/Services/StoreItemService.php

@@ -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']);

+ 2 - 2
routes/authRoutes/associado_store.php

@@ -5,8 +5,8 @@ use Illuminate\Support\Facades\Route;
 
 Route::controller(StoreItemController::class)->prefix('associado/store-item')->group(function () {
     Route::get('/my/interests',      'myInterests')   ->middleware('permission:associado.loja,view');
-    Route::get('/',                  'index')          ->middleware('permission:associado.loja,view');
-    Route::get('/{id}',              'show')           ->middleware('permission:associado.loja,view');
+    Route::get('/',                  'indexAssociado') ->middleware('permission:associado.loja,view');
+    Route::get('/{id}',              'showAssociado')  ->middleware('permission:associado.loja,view');
     Route::post('/{id}/interest',    'toggleInterest') ->middleware('permission:associado.loja,view');
     Route::get('/{id}/interests',    'getInterests')   ->middleware('permission:associado.loja,view');
 });