session()->get('status'); $type = $type ?? ContactFormType::none(); $username = $request->username ?? ''; $staticPageType = StaticPageType::contactComplain(); switch ($type) { case ContactFormType::abuse(): $staticPageType = StaticPageType::contactAbuse(); break; case ContactFormType::recipe(): $staticPageType = StaticPageType::contactRecipe(); break; case ContactFormType::none(): case ContactFormType::complain(): $staticPageType = StaticPageType::contactComplain(); break; default: throw new \RuntimeException("Unhandled contact form type {$type}"); } $staticPageModel = StaticPage::query()->where('type', $staticPageType->value)->firstOrFail(); return view('front.contact.contact', compact( 'type', 'user', 'status', 'staticPageModel', 'username' )); } /** * Submit contact Form * * @param \App\Http\Requests\ContactFormRequest $request * @return \Illuminate\Http\RedirectResponse */ public function contactSubmit(ContactFormRequest $request) { return DB::transaction(function () use ($request) { try { $data = new MailContactData($request->all()); if ($request->type == ContactFormType::onepage()->value) { SendNLMail::dispatchAfterResponse($data); } else { SendArcadiaMail::dispatchAfterResponse($data); } Contact::incrementStat($data->type); return back()->with('status', true); } catch (AbortContactMailer $e) { Log::error('Fail to build mail from contact page ', ['exception' => $e]); } return back()->withInput()->with('status', false); }); } /** * Show complain form * * @param \Illuminate\Http\Request $request * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory */ public function complain(Request $request) { return $this->contact($request, ContactFormType::complain()); } /** * Submit complain form * * @param \App\Http\Requests\ContactFormRequest $request * @return \Illuminate\Http\RedirectResponse */ public function complainSubmit(ContactFormRequest $request) { return DB::transaction(function () use ($request) { try { $data = new MailContactData($request->all()); SendPasserelleMail::dispatchAfterResponse($data); Contact::incrementStat($data->type); return back()->with('status', true); } catch (AbortContactMailer $e) { Log::error('Fail to build mail from complain page ', ['exception' => $e]); } return back()->withInput()->with('status', false); }); } /** * Report customer from Club magnet exchange * * @param \Illuminate\Http\Request $request * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory */ public function reportCustomer(Request $request) { return $this->contact($request, ContactFormType::abuse()); } /** * Propose meal recipe * * @param \Illuminate\Http\Request $request * @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory */ public function proposeRecipe(Request $request) { return $this->contact($request, ContactFormType::recipe()); } }