FormController.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Support\Facades\Storage;
  5. use Illuminate\Support\Str;
  6. use App\Models\FormData;
  7. use App\Models\Category;
  8. use App\Models\Comments;
  9. class FormController extends Controller
  10. {
  11. public function showForm()
  12. {
  13. $categories = Category::active()->get();
  14. return view('form', compact('categories'));
  15. }
  16. public function submitForm(Request $request)
  17. {
  18. $validated = $request->validate([
  19. 'name' => 'required|min:2|max:100',
  20. 'email' => 'required|email',
  21. 'phone' => 'required|digits:11',
  22. 'gender' => 'boolean',
  23. 'message' => 'required|min:10|max:1000',
  24. 'category_id' => 'nullable|exists:categories,id',
  25. ]);
  26. $formData = FormData::create([
  27. 'uuid' => Str::uuid(),
  28. 'name' => $validated['name'],
  29. 'email' => $validated['email'],
  30. 'phone' => $validated['phone'],
  31. 'gender' => $validated['gender'] ?? false,
  32. 'message' => $validated['message'],
  33. 'category_id' => $validated['category_id'] ?? null,
  34. ]);
  35. if ($request->has('comment') && !empty($request->comment)) {
  36. $formData->comments()->create([
  37. 'content' => $request->comment,
  38. 'user_id' => auth()->id() ?? null,
  39. ]);
  40. }
  41. return redirect()->route('form.show')
  42. ->with('success', 'Данные успешно сохранены в базе данных! ID: ' . $formData->id);
  43. }
  44. public function showData(Request $request)
  45. {
  46. $query = FormData::with(['category', 'comments']);
  47. if ($request->has('gender') && in_array($request->gender, ['male', 'female'])) {
  48. if ($request->gender === 'male') {
  49. $query->male();
  50. } else {
  51. $query->female();
  52. }
  53. }
  54. if ($request->has('today') && $request->boolean('today')) {
  55. $query->today();
  56. }
  57. $data = $query->latest()->paginate(10);
  58. $categories = Category::all();
  59. return view('data', compact('data', 'categories'));
  60. }
  61. public function show($id)
  62. {
  63. $formData = FormData::with(['category', 'comments.user'])
  64. ->findOrFail($id);
  65. return view('form-data.show', compact('formData'));
  66. }
  67. public function edit($id)
  68. {
  69. $formData = FormData::findOrFail($id);
  70. $categories = Category::active()->get();
  71. return view('form-data.edit', compact('formData', 'categories'));
  72. }
  73. public function update(Request $request, $id)
  74. {
  75. $formData = FormData::findOrFail($id);
  76. $validated = $request->validate([
  77. 'name' => 'required|min:2|max:100',
  78. 'email' => 'required|email',
  79. 'phone' => 'required|digits:11',
  80. 'gender' => 'boolean',
  81. 'message' => 'required|min:10|max:1000',
  82. 'category_id' => 'nullable|exists:categories,id',
  83. ]);
  84. $formData->update($validated);
  85. return redirect()->route('data.show')
  86. ->with('success', 'Данные успешно обновлены!');
  87. }
  88. public function destroy($id)
  89. {
  90. $formData = FormData::findOrFail($id);
  91. $formData->delete();
  92. return redirect()->route('data.show')
  93. ->with('success', 'Данные перемещены в корзину!');
  94. }
  95. public function addComment(Request $request, $id)
  96. {
  97. $formData = FormData::findOrFail($id);
  98. $validated = $request->validate([
  99. 'content' => 'required|min:5|max:500',
  100. ]);
  101. $formData->comments()->create([
  102. 'content' => $validated['content'],
  103. 'user_id' => auth()->id() ?? null,
  104. ]);
  105. return back()->with('success', 'Комментарий добавлен!');
  106. }
  107. }