Parcourir la source

fix delete photo

Alexander Musikhin il y a 1 jour
Parent
commit
bb05a73c9e
1 fichiers modifiés avec 25 ajouts et 6 suppressions
  1. 25 6
      app/Http/Controllers/OrderController.php

+ 25 - 6
app/Http/Controllers/OrderController.php

@@ -585,16 +585,20 @@ class OrderController extends Controller
         return redirect()->route('order.show', $order)->with(['success' => 'Фотографии успешно загружены!']);
         return redirect()->route('order.show', $order)->with(['success' => 'Фотографии успешно загружены!']);
     }
     }
 
 
-    public function deletePhoto(Order $order, File $file, FileService $fileService)
+    public function deletePhoto(int $order, File $file, FileService $fileService)
     {
     {
+        $order = $this->findOrderWithoutYearScope($order);
+        abort_unless($order->photos()->whereKey($file->id)->exists(), 404);
+
         $order->photos()->detach($file);
         $order->photos()->detach($file);
         $fileService->deleteFileWithThumbnail($file);
         $fileService->deleteFileWithThumbnail($file);
         $file->delete();
         $file->delete();
         return redirect()->route('order.show', $order);
         return redirect()->route('order.show', $order);
     }
     }
 
 
-    public function deleteAllPhotos(Order $order, FileService $fileService)
+    public function deleteAllPhotos(int $order, FileService $fileService)
     {
     {
+        $order = $this->findOrderWithoutYearScope($order);
         $files = $order->photos;
         $files = $order->photos;
         $order->photos()->detach();
         $order->photos()->detach();
         foreach ($files as $file) {
         foreach ($files as $file) {
@@ -627,16 +631,20 @@ class OrderController extends Controller
         return redirect()->route('order.show', $order)->with(['success' => 'Документы успешно загружены!']);
         return redirect()->route('order.show', $order)->with(['success' => 'Документы успешно загружены!']);
     }
     }
 
 
-    public function deleteDocument(Order $order, File $file)
+    public function deleteDocument(int $order, File $file)
     {
     {
+        $order = $this->findOrderWithoutYearScope($order);
+        abort_unless($order->documents()->whereKey($file->id)->exists(), 404);
+
         $order->documents()->detach($file);
         $order->documents()->detach($file);
         Storage::disk('public')->delete($file->path);
         Storage::disk('public')->delete($file->path);
         $file->delete();
         $file->delete();
         return redirect()->route('order.show', $order);
         return redirect()->route('order.show', $order);
     }
     }
 
 
-    public function deleteAllDocuments(Order $order)
+    public function deleteAllDocuments(int $order)
     {
     {
+        $order = $this->findOrderWithoutYearScope($order);
         $files = $order->documents;
         $files = $order->documents;
         $order->documents()->detach();
         $order->documents()->detach();
         foreach ($files as $file) {
         foreach ($files as $file) {
@@ -669,16 +677,20 @@ class OrderController extends Controller
         return redirect()->route('order.show', $order)->with(['success' => 'Ведомости успешно загружены!']);
         return redirect()->route('order.show', $order)->with(['success' => 'Ведомости успешно загружены!']);
     }
     }
 
 
-    public function deleteStatement(Order $order, File $file)
+    public function deleteStatement(int $order, File $file)
     {
     {
+        $order = $this->findOrderWithoutYearScope($order);
+        abort_unless($order->statements()->whereKey($file->id)->exists(), 404);
+
         $order->statements()->detach($file);
         $order->statements()->detach($file);
         Storage::disk('public')->delete($file->path);
         Storage::disk('public')->delete($file->path);
         $file->delete();
         $file->delete();
         return redirect()->route('order.show', $order);
         return redirect()->route('order.show', $order);
     }
     }
 
 
-    public function deleteAllStatements(Order $order)
+    public function deleteAllStatements(int $order)
     {
     {
+        $order = $this->findOrderWithoutYearScope($order);
         $files = $order->statements;
         $files = $order->statements;
         $order->statements()->detach();
         $order->statements()->detach();
         foreach ($files as $file) {
         foreach ($files as $file) {
@@ -688,6 +700,13 @@ class OrderController extends Controller
         return redirect()->route('order.show', $order);
         return redirect()->route('order.show', $order);
     }
     }
 
 
+    private function findOrderWithoutYearScope(int $orderId): Order
+    {
+        return Order::query()
+            ->withoutGlobalScope(\App\Models\Scopes\YearScope::class)
+            ->findOrFail($orderId);
+    }
+
     public function generateInstallationPack(Order $order)
     public function generateInstallationPack(Order $order)
     {
     {
         $errors = $order->isAllMafConnected();
         $errors = $order->isAllMafConnected();