download all invoices button

This commit is contained in:
WBLKLeipe 2021-12-02 09:54:30 +01:00
parent 9fff368662
commit 86716961f3
4 changed files with 32 additions and 2 deletions

3
.gitignore vendored
View file

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

View file

@ -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);
}
}

View file

@ -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>

View file

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