ContactController.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use Auth;
  5. use App\Contact;
  6. class ContactController extends Controller
  7. {
  8. public function show(Request $request)
  9. {
  10. abort_if(!config('instance.contact.enabled'), 404);
  11. return view('site.contact');
  12. }
  13. public function store(Request $request)
  14. {
  15. abort_if(!config('instance.contact.enabled'), 404);
  16. abort_if(!Auth::check(), 403);
  17. $this->validate($request, [
  18. 'message' => 'required|string|min:5|max:500',
  19. 'request_response' => 'string|max:3'
  20. ]);
  21. $message = $request->input('message');
  22. $request_response = $request->input('request_response') == 'on' ? true : false;
  23. $user = Auth::user();
  24. $max = config('instance.contact.max_per_day');
  25. $contact = Contact::whereUserId($user->id)
  26. ->whereDate('created_at', '>', now()->subDays($max))
  27. ->count();
  28. if($contact >= 2) {
  29. return redirect()->back()->with('error', 'You have recently sent a message. Please try again later.');
  30. }
  31. $contact = new Contact;
  32. $contact->user_id = $user->id;
  33. $contact->response_requested = $request_response;
  34. $contact->message = $message;
  35. $contact->save();
  36. return redirect()->back()->with('status', 'Success - Your message has been sent to admins.');
  37. }
  38. }