|
@@ -0,0 +1,54 @@
|
|
|
|
|
+<?php
|
|
|
|
|
+
|
|
|
|
|
+namespace App\Http\Controllers;
|
|
|
|
|
+
|
|
|
|
|
+use Illuminate\Http\Request;
|
|
|
|
|
+use Illuminate\Support\Facades\Storage;
|
|
|
|
|
+use Illuminate\Support\Str;
|
|
|
|
|
+
|
|
|
|
|
+class FormController extends Controller
|
|
|
|
|
+{
|
|
|
|
|
+ public function showForm()
|
|
|
|
|
+ {
|
|
|
|
|
+ return view('form');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public function submitForm(Request $request)
|
|
|
|
|
+ {
|
|
|
|
|
+ $validated = $request->validate([
|
|
|
|
|
+ 'name' => 'required|min:2|max:100',
|
|
|
|
|
+ 'email' => 'required|email',
|
|
|
|
|
+ 'phone' => 'required|digits:11',
|
|
|
|
|
+ 'gender' => 'boolean',
|
|
|
|
|
+ 'message' => 'required|min:10|max:1000',
|
|
|
|
|
+ ]);
|
|
|
|
|
+ $filename = 'form-data-' . Str::uuid() . '.json';
|
|
|
|
|
+ Storage::put("form-data/{$filename}", json_encode([
|
|
|
|
|
+ 'id' => Str::uuid(),
|
|
|
|
|
+ 'name' => $validated['name'],
|
|
|
|
|
+ 'email' => $validated['email'],
|
|
|
|
|
+ 'phone' => $validated['phone'],
|
|
|
|
|
+ 'gender' => array_key_exists('gender', $validated) ? $validated['gender'] : 0,
|
|
|
|
|
+ 'message' => $validated['message'],
|
|
|
|
|
+ 'submitted_at' => now()->timezone('Asia/Irkutsk')->toDateISOString(),
|
|
|
|
|
+ ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
|
|
|
|
|
+
|
|
|
|
|
+ return redirect()->route('form.show')
|
|
|
|
|
+ ->with('success', 'Данные успешно сохранены!');
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public function showData()
|
|
|
|
|
+ {
|
|
|
|
|
+ $files = Storage::files('form-data');
|
|
|
|
|
+ $data = [];
|
|
|
|
|
+
|
|
|
|
|
+ foreach ($files as $file) {
|
|
|
|
|
+ if (pathinfo($file, PATHINFO_EXTENSION) === 'json') {
|
|
|
|
|
+ $content = Storage::get($file);
|
|
|
|
|
+ $data[] = json_decode($content, true);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return view('data', compact('data'));
|
|
|
|
|
+ }
|
|
|
|
|
+}
|