Browse Source

delete all photos, documents and statements in order

Alexander Musikhin 1 week ago
parent
commit
52d3db83e9
3 changed files with 66 additions and 0 deletions
  1. 33 0
      app/Http/Controllers/OrderController.php
  2. 30 0
      resources/views/orders/show.blade.php
  3. 3 0
      routes/web.php

+ 33 - 0
app/Http/Controllers/OrderController.php

@@ -308,6 +308,17 @@ class OrderController extends Controller
         return redirect()->route('order.show', $order);
     }
 
+    public function deleteAllPhotos(Order $order)
+    {
+        $files = $order->photos;
+        $order->photos()->detach();
+        foreach ($files as $file) {
+            Storage::disk('public')->delete($file->path);
+            $file->delete();
+        }
+        return redirect()->route('order.show', $order);
+    }
+
     public function uploadDocument(Request $request, Order $order, FileService $fileService)
     {
         $data = $request->validate([
@@ -332,6 +343,17 @@ class OrderController extends Controller
         return redirect()->route('order.show', $order);
     }
 
+    public function deleteAllDocuments(Order $order)
+    {
+        $files = $order->documents;
+        $order->documents()->detach();
+        foreach ($files as $file) {
+            Storage::disk('public')->delete($file->path);
+            $file->delete();
+        }
+        return redirect()->route('order.show', $order);
+    }
+
     public function uploadStatement(Request $request, Order $order, FileService $fileService)
     {
         $data = $request->validate([
@@ -356,6 +378,17 @@ class OrderController extends Controller
         return redirect()->route('order.show', $order);
     }
 
+    public function deleteAllStatements(Order $order)
+    {
+        $files = $order->statements;
+        $order->statements()->detach();
+        foreach ($files as $file) {
+            Storage::disk('public')->delete($file->path);
+            $file->delete();
+        }
+        return redirect()->route('order.show', $order);
+    }
+
     public function generateInstallationPack(Order $order)
     {
         $errors = [];

+ 30 - 0
resources/views/orders/show.blade.php

@@ -92,6 +92,16 @@
                             <input required type="file" id="upl-documents" onchange="$(this).parent().submit()" multiple
                                    name="document[]" class="form-control form-control-sm">
                         </form>
+                        @if(hasRole('admin'))
+                            <button class="btn btn-sm text-danger" onclick="if(confirm('Удалить все документы?')) { $('#delete-all-documents').submit(); }"><i
+                                        class="bi bi-file-minus-fill"></i> Удалить все
+                            </button>
+                            <form action="{{ route('order.delete-all-documents', $order) }}" enctype="multipart/form-data" id="delete-all-documents"
+                                  method="post" class="visually-hidden">
+                                @csrf
+                                @method('DELETE')
+                            </form>
+                        @endif
                         <div class="row my-2 g-1">
                             @foreach($order->documents as $document)
                                 <div class="col-12">
@@ -124,6 +134,16 @@
                             <input required type="file" id="upl-statements" onchange="$(this).parent().submit()" multiple
                                    name="statement[]" class="form-control form-control-sm">
                         </form>
+                        @if(hasRole('admin'))
+                            <button class="btn btn-sm text-danger" onclick="if(confirm('Удалить все ведомости?')) { $('#delete-all-statements').submit(); }"><i
+                                        class="bi bi-file-minus-fill"></i> Удалить все
+                            </button>
+                            <form action="{{ route('order.delete-all-statements', $order) }}" enctype="multipart/form-data" id="delete-all-statements"
+                                  method="post" class="visually-hidden">
+                                @csrf
+                                @method('DELETE')
+                            </form>
+                        @endif
                         <div class="row my-2 g-1">
                             @foreach($order->statements as $statement)
                                 <div class="col-12">
@@ -165,6 +185,16 @@
                         <input required type="file" id="upl-photo" onchange="$(this).parent().submit()" multiple
                                name="photo[]" class="form-control form-control-sm" accept=".jpg,.jpeg,.png">
                     </form>
+                    @if(hasRole('admin'))
+                        <button class="btn btn-sm text-danger" onclick="if(confirm('Удалить все фотографии?')) { $('#delete-all-photos').submit(); }"><i
+                                    class="bi bi-file-minus-fill"></i> Удалить все
+                        </button>
+                        <form action="{{ route('order.delete-all-photos', $order) }}" enctype="multipart/form-data" id="delete-all-photos"
+                              method="post" class="visually-hidden">
+                            @csrf
+                            @method('DELETE')
+                        </form>
+                    @endif
                     <div class="row my-2 g-1 collapse" id="photos">
                         @foreach($order->photos as $photo)
                             <div class="col-4">

+ 3 - 0
routes/web.php

@@ -170,6 +170,9 @@ Route::middleware('auth:web')->group(function () {
         Route::delete('order/delete-photo/{order}/{file}', [OrderController::class, 'deletePhoto'])->name('order.delete-photo');
         Route::delete('order/delete-document/{order}/{file}', [OrderController::class, 'deleteDocument'])->name('order.delete-document');
         Route::delete('order/delete-statement/{order}/{file}', [OrderController::class, 'deleteStatement'])->name('order.delete-statement');
+        Route::delete('order/delete-all-photos/{order}', [OrderController::class, 'deleteAllPhotos'])->name('order.delete-all-photos');
+        Route::delete('order/delete-all-documents/{order}', [OrderController::class, 'deleteAllDocuments'])->name('order.delete-all-documents');
+        Route::delete('order/delete-all-statements/{order}', [OrderController::class, 'deleteAllStatements'])->name('order.delete-all-statements');
         Route::delete('catalog/delete-certificate/{product}/{file}', [ProductController::class, 'deleteCertificate'])->name('catalog.delete-certificate');
         Route::delete('product_sku/delete-passport/{product_sku}/{file}', [ProductSKUController::class, 'deletePassport'])->name('product-sku.delete-passport');