Kaynağa Gözat

download all invoices button

WBLKLeipe 3 yıl önce
ebeveyn
işleme
86716961f3

+ 2 - 1
.gitignore

@@ -17,4 +17,5 @@ npm-debug.log
 yarn-error.log
 .gitignore
 .env.dev
-.env.testing
+.env.testing
+storage/invoices.zip

+ 25 - 0
app/Http/Controllers/Admin/SettingsController.php

@@ -9,6 +9,7 @@ use Illuminate\Contracts\View\Factory;
 use Illuminate\Contracts\View\View;
 use Illuminate\Http\Request;
 use Illuminate\Http\Response;
+use ZipArchive;
 
 class SettingsController extends Controller
 {
@@ -69,4 +70,28 @@ class SettingsController extends Controller
         return redirect()->route('admin.settings.index')->with('success', 'Invoice settings updated!');
     }
 
+    public function rglob($pattern, $flags = 0) {
+        $files = glob($pattern, $flags);
+        foreach (glob(dirname($pattern).'/*', GLOB_ONLYDIR|GLOB_NOSORT) as $dir) {
+            $files = array_merge($files, $this::rglob($dir.'/'.basename($pattern), $flags));
+        }
+        return $files;
+    }
+
+    public function downloadAllInvoices(){
+        $zip = new ZipArchive;
+        $zip_safe_path = storage_path('invoices.zip');
+        $res = $zip->open($zip_safe_path, ZipArchive::CREATE);
+        $result = $this::rglob(storage_path('app/invoice/*'));
+        if ($res === TRUE) {
+            foreach($result as $file){
+                if (file_exists($file) && is_file($file)) {
+                    $zip->addFile($file,basename($file));
+                }
+            }
+            $zip->close();
+        }
+        return response()->download($zip_safe_path);
+    }
+
 }

+ 4 - 1
resources/views/admin/settings/index.blade.php

@@ -93,6 +93,10 @@
                         </div>
 
                         <div class="tab-pane mt-3" id="invoice-settings">
+                            <div class="float-right">
+                                <a href="{{route('admin.settings.downloadAllInvoices')}}"><button class="btn btn-success">Download all Invoices</button></a>
+                            </div>
+
                             <form method="POST" enctype="multipart/form-data" class="mb-3"
                                   action="{{route('admin.settings.update.invoicesettings')}}">
                                 @csrf
@@ -186,7 +190,6 @@
 
                     </form>
 
-
                 </div>
             </div>
 

+ 1 - 0
routes/web.php

@@ -124,6 +124,7 @@ Route::middleware(['auth', 'checkSuspended'])->group(function () {
 
         Route::patch('settings/update/icons', [SettingsController::class, 'updateIcons'])->name('settings.update.icons');
         Route::patch('settings/update/invoice-settings', [SettingsController::class, 'updateInvoiceSettings'])->name('settings.update.invoicesettings');
+        Route::get('settings/download-invoices', [SettingsController::class, 'downloadAllInvoices'])->name('settings.downloadAllInvoices');;
         Route::resource('settings', SettingsController::class)->only('index');
 
         Route::get('usefullinks/datatable', [UsefulLinkController::class, 'datatable'])->name('usefullinks.datatable');