FormController.php 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Support\Facades\File;
  5. use Carbon\Carbon;
  6. use App\Models\ContactMessage;
  7. use App\Models\Category;
  8. use App\Models\Status;
  9. class FormController extends Controller
  10. {
  11. private $path;
  12. public function __construct()
  13. {
  14. $this->path = storage_path('app/forms/contacts.json');
  15. }
  16. public function index()
  17. {
  18. $categories = Category::all();
  19. return view('form', compact('categories'));
  20. }
  21. public function submit(Request $request)
  22. {
  23. $validated = $request->validate([
  24. 'name' => 'required|string|min:3|max:15',
  25. 'email' => 'required|email|max:50',
  26. 'message' => 'required|string|min:10|max:100',
  27. 'category_id' => 'required|exists:categories,id',
  28. ]);
  29. $newStatus = Status::where('name', 'Новое')->first();
  30. if ($newStatus) {
  31. $validated['status_id'] = $newStatus->id;
  32. }
  33. ContactMessage::create($validated);
  34. return redirect()->back()->with('success', 'Данные сохранены!');
  35. }
  36. public function showData()
  37. {
  38. $submissions = ContactMessage::with('category', 'status')->new()->latest()->get();
  39. return view('admin.index', compact('submissions'));
  40. }
  41. public function show(ContactMessage $submission)
  42. {
  43. return view('admin.show', compact('submission'));
  44. }
  45. public function edit(ContactMessage $submission)
  46. {
  47. $categories = Category::all();
  48. $statuses = Status::all();
  49. return view('admin.edit', compact('submission', 'categories', 'statuses'));
  50. }
  51. public function update(Request $request , ContactMessage $submission)
  52. {
  53. $validated = $request->validate([
  54. 'name' => 'required|string|min:3|max:15',
  55. 'email' => 'required|email|max:50',
  56. 'message' => 'required|string|min:10|max:100',
  57. 'status_id' => 'required|exists:statuses,id',
  58. ]);
  59. $submission->update($validated);
  60. return redirect()->route('admin.index')->with('success', 'Данные обновлены!');
  61. }
  62. public function addNote(Request $request, ContactMessage $submission)
  63. {
  64. $request->validate(['body' => 'required|string']);
  65. $submission->notes()->create($request->only('body'));
  66. return back()->with('success', 'Заметка добавлена!');
  67. }
  68. public function delete(ContactMessage $submission)
  69. {
  70. $submission -> delete();
  71. return redirect()->route('admin.index')->with('success', 'Запись удалена!');
  72. }
  73. }