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!');
+ }
}