ContactController.php 1.3 KB

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