diff --git a/app/Http/Controllers/Admin/SettingsControllers/InvoiceSettingsController.php b/app/Http/Controllers/Admin/SettingsControllers/InvoiceSettingsController.php new file mode 100644 index 00000000..7281709a --- /dev/null +++ b/app/Http/Controllers/Admin/SettingsControllers/InvoiceSettingsController.php @@ -0,0 +1,79 @@ +invoiceSettings = InvoiceSettings::first(); + } + + public function index() + { + return view('admin.settings.tabs.invoice', [ + 'invoiceSettings' => $this->invoiceSettings, + ]); + } + + public function updateInvoiceSettings(Request $request) + { + $request->validate([ + 'logo' => 'nullable|max:10000|mimes:jpg,png,jpeg', + ]); + + InvoiceSettings::updateOrCreate([ + 'id' => "1" + ], [ + 'company_name' => $request->get('company-name'), + 'company_adress' => $request->get('company-address'), + 'company_phone' => $request->get('company-phone'), + 'company_mail' => $request->get('company-mail'), + 'company_vat' => $request->get('company-vat'), + 'company_web' => $request->get('company-web'), + 'invoice_prefix' => $request->get('invoice-prefix'), + ]); + + if ($request->hasFile('logo')) { + $request->file('logo')->storeAs('public', 'logo.png'); + } + + + return redirect()->route('admin.settings.index')->with('success', 'Invoice settings updated!'); + } + + public function downloadAllInvoices() + { + $zip = new ZipArchive; + $zip_safe_path = storage_path('invoices.zip'); + $res = $zip->open($zip_safe_path, ZipArchive::CREATE | ZipArchive::OVERWRITE); + $result = $this::rglob(storage_path('app/invoice/*')); + if ($res === TRUE) { + $zip->addFromString("1. Info.txt", "This Archive contains all Invoices from all Users!\nIf there are no Invoices here, no Invoices have ever been created!"); + foreach ($result as $file) { + if (file_exists($file) && is_file($file)) { + $zip->addFile($file, basename($file)); + } + } + $zip->close(); + } + return response()->download($zip_safe_path); + } + + 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; + } +} diff --git a/app/Http/Controllers/Admin/SettingsController.php b/app/Http/Controllers/Admin/SettingsControllers/SettingsController.php similarity index 77% rename from app/Http/Controllers/Admin/SettingsController.php rename to app/Http/Controllers/Admin/SettingsControllers/SettingsController.php index aeabd3d5..b12d8416 100644 --- a/app/Http/Controllers/Admin/SettingsController.php +++ b/app/Http/Controllers/Admin/SettingsControllers/SettingsController.php @@ -1,6 +1,6 @@ toArray()); + // + + //Generate a html list item for each tab based on tabs file basename + $tabsListItem = []; + foreach ($tabs as $tab) { + $tabsListItem[] = ''; + } + + return view('admin.settings.index', [ + 'tabs' => $tabs, + ]);; } public function updateIcons(Request $request) @@ -96,5 +111,4 @@ class SettingsController extends Controller } return $files; } - }