diff --git a/config/uspdev-forms.php b/config/uspdev-forms.php index b7ee13d..d9d0638 100644 --- a/config/uspdev-forms.php +++ b/config/uspdev-forms.php @@ -23,4 +23,7 @@ # Quem pode realizar buscas: geralmente é o usuário logado 'findGate' => 'user', + + # Diretório para armazenamento dos arquivos .json que representam os formulários da aplicação + 'forms_storage_dir' => env('FORM_STORAGE_DIR','storage/app/formsJson'), ]; diff --git a/resources/views/definition/partials/exportdefinition-btn.blade.php b/resources/views/definition/partials/exportdefinition-btn.blade.php new file mode 100644 index 0000000..19d8a64 --- /dev/null +++ b/resources/views/definition/partials/exportdefinition-btn.blade.php @@ -0,0 +1,3 @@ + + Exportar + diff --git a/resources/views/definition/partials/globalexport-btn.blade.php b/resources/views/definition/partials/globalexport-btn.blade.php new file mode 100644 index 0000000..8b41db0 --- /dev/null +++ b/resources/views/definition/partials/globalexport-btn.blade.php @@ -0,0 +1,3 @@ + + Exportar formulários + diff --git a/routes/web.php b/routes/web.php index 345b8a6..ee66e90 100644 --- a/routes/web.php +++ b/routes/web.php @@ -10,6 +10,8 @@ Route::get('definitions', [DefinitionController::class, 'index'])->name('form-definitions.index'); Route::get('definitions/create', [DefinitionController::class, 'create'])->name('form-definitions.create'); Route::post('definitions', [DefinitionController::class, 'store'])->name('form-definitions.store'); + Route::get('definitions/export-all',[DefinitionController::class,'export_all'])->name('form-definitions.export-all'); + Route::get('definitions/{formDefinition}/export',[DefinitionController::class, 'export_definition'])->name('form-definitions.export-definition'); Route::get('definitions/{formDefinition}', [DefinitionController::class, 'show'])->name('form-definitions.show'); Route::get('definitions/{formDefinition}/edit', [DefinitionController::class, 'edit'])->name('form-definitions.edit'); Route::put('definitions/{formDefinition}', [DefinitionController::class, 'update'])->name('form-definitions.update'); diff --git a/src/Http/Controllers/DefinitionController.php b/src/Http/Controllers/DefinitionController.php index 22ec891..f3570fe 100644 --- a/src/Http/Controllers/DefinitionController.php +++ b/src/Http/Controllers/DefinitionController.php @@ -88,4 +88,35 @@ public function destroy(FormDefinition $formDefinition, Request $request) ->with('alert-danger', 'Não foi possível excluir: ' . $e->getMessage()); } } + + public function export_definition(FormDefinition $formDefinition) + { + + $file_dir = base_path(config("uspdev-forms.forms_storage_dir")); + if(!is_dir($file_dir)) + { + mkdir($file_dir,0777,true); + } + + $file_path = $file_dir . "/" . $formDefinition['name'] . ".json"; + $json_file = fopen($file_path, "w"); + + fwrite($json_file, json_encode($formDefinition,JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE)); + fclose($json_file); + + return redirect()->route('form-definitions.index')->with('alert-success','Definição de '. $formDefinition['name'] .' exportada com sucesso!'); + + } + + public function export_all() + { + $form_definitions = FormDefinition::all(); + + foreach($form_definitions as $form_definition) + { + $this->export_definition($form_definition); + } + + return redirect()->route('form-definitions.index')->with('alert-success','Formulários exportados com sucesso!'); + } }