count(); $max_submissions = 2000; $submissions_left = $max_submissions - $submitted_tool_count; return view('front.submit_tool_free', compact('submitted_tool_count', 'submissions_left', 'max_submissions')); } public function post(Request $request) { $submitted_tool_count = SubmitTool::whereIn('status', ['initial', 'queued_for_crawl', 'crawled'])->count(); $max_submissions = 2000; $submissions_left = $max_submissions - $submitted_tool_count; $submited_url = rtrim(trim($request->input('submitted_url')), '/\\'); if ($submissions_left <= 0) { return redirect()->back()->withInput()->with('error', (object) ['timeout' => 5000, 'message' => 'Unfortunately, all submission slots have been filled. Please check try again later to see if there are any slots released from rejected submissions.']); } if (filter_var($submited_url, FILTER_VALIDATE_URL) === false) { return redirect()->back()->withInput()->with('error', (object) ['timeout' => 5000, 'message' => 'Submitted URL is in invalid URL format. Please check your inputs and try again.']); } $submit_tool = SubmitTool::where('submitted_url', $submited_url)->first(); if (! is_null($submit_tool)) { return redirect()->back()->withInput()->with('error', (object) ['timeout' => 5000, 'message' => 'You have submitted this URL before. Submission ignored.']); } $ignore_url_keywords = ['play.google.com', 'apps.apple.com', 'https://chromewebstore.google.com']; $is_store_url = false; foreach ($ignore_url_keywords as $keyword) { if (str_contains($submited_url, $keyword)) { $is_store_url = true; break; } } $url_to_crawl = null; if ($is_store_url) { $url_to_crawl = UrlToCrawl::where('url', $submited_url)->first(); } else { $domain = get_domain_from_url($submited_url); $url_to_crawl = UrlToCrawl::where('domain', $domain)->first(); } if (! is_null($url_to_crawl)) { return redirect()->back()->withInput()->with('success', (object) ['timeout' => 5000, 'message' => 'Our AI crawler has already identified & pre-approved your submission. It has been scheduled for live submission and should appear in our pages soon.']); } $submit_tool = new SubmitTool; $submit_tool->submitted_url = $request->input('submitted_url'); $submit_tool->email = $request->input('email'); $submit_tool->social = $request->input('social'); $submit_tool->social_type = $request->input('social_type'); $submit_tool->source_type = $request->input('source_type'); $submit_tool->source = $request->input('source'); $submit_tool->comments = $request->input('comments'); if ($submit_tool->save()) { $submitted_tool_count = SubmitTool::whereIn('status', ['initial', 'queued_for_crawl', 'crawled'])->count(); $telegram_ids = get_notification_user_ids(); foreach ($telegram_ids as $telegram_id) { Notification::route(get_notification_channel(), $telegram_id)->notify(new AiToolSubmitted($submit_tool)); } return redirect()->back()->withInput()->with('success', (object) ['timeout' => 5000, 'message' => 'AI tool submittted successfully! You are #'.$submitted_tool_count.' in submission list.']); } return redirect()->back()->withInput()->with('error', (object) ['timeout' => 5000, 'message' => 'Something went wrong. Please try again later.']); } }