download all invoices button
This commit is contained in:
parent
9fff368662
commit
86716961f3
4 changed files with 32 additions and 2 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -17,4 +17,5 @@ npm-debug.log
|
||||||
yarn-error.log
|
yarn-error.log
|
||||||
.gitignore
|
.gitignore
|
||||||
.env.dev
|
.env.dev
|
||||||
.env.testing
|
.env.testing
|
||||||
|
storage/invoices.zip
|
||||||
|
|
|
@ -9,6 +9,7 @@ use Illuminate\Contracts\View\Factory;
|
||||||
use Illuminate\Contracts\View\View;
|
use Illuminate\Contracts\View\View;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Http\Response;
|
use Illuminate\Http\Response;
|
||||||
|
use ZipArchive;
|
||||||
|
|
||||||
class SettingsController extends Controller
|
class SettingsController extends Controller
|
||||||
{
|
{
|
||||||
|
@ -69,4 +70,28 @@ class SettingsController extends Controller
|
||||||
return redirect()->route('admin.settings.index')->with('success', 'Invoice settings updated!');
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,6 +93,10 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="tab-pane mt-3" id="invoice-settings">
|
<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"
|
<form method="POST" enctype="multipart/form-data" class="mb-3"
|
||||||
action="{{route('admin.settings.update.invoicesettings')}}">
|
action="{{route('admin.settings.update.invoicesettings')}}">
|
||||||
@csrf
|
@csrf
|
||||||
|
@ -186,7 +190,6 @@
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -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/icons', [SettingsController::class, 'updateIcons'])->name('settings.update.icons');
|
||||||
Route::patch('settings/update/invoice-settings', [SettingsController::class, 'updateInvoiceSettings'])->name('settings.update.invoicesettings');
|
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::resource('settings', SettingsController::class)->only('index');
|
||||||
|
|
||||||
Route::get('usefullinks/datatable', [UsefulLinkController::class, 'datatable'])->name('usefullinks.datatable');
|
Route::get('usefullinks/datatable', [UsefulLinkController::class, 'datatable'])->name('usefullinks.datatable');
|
||||||
|
|
Loading…
Reference in a new issue