middleware(function (Request $request, \Closure $next) { $this->authorize('fo.showRe7'); return $next($request); }); } /** * Show Home page * * @return \Illuminate\Contracts\View\View */ public function home(): View { return view('theme::pages.home'); } /** * Show Teaser page * * @return \Illuminate\Contracts\View\View */ public function teaser(): View { return view('theme::pages.teaser'); } /** * Show Teaser page * * @return \Illuminate\Contracts\View\View */ public function endGame(): View { return view('theme::pages.end-game'); } /** * Show code input page * * @return \Illuminate\Contracts\View\View */ public function participate(): View { return view('theme::pages.participation.participate'); } // * -- Participation /** * Show prize page * * @param \App\Models\Prize $prize * @return \Illuminate\Contracts\View\View */ public function prize(Prize $prize): View { // * Fake participation model $participationModel = new Participation(); $participationModel = 9999999; return view('theme::pages.participation.won', [ 'prizeModel' => $prize, 'participationModel' => $participationModel ]); } /** * Show discount page * * @return \Illuminate\Contracts\View\View */ public function discount(): View { /** @var \App\Models\Settings */ $settings = app(Settings::class); /** @var \App\Lib\Discount */ $discount = Arr::get( $settings->web_coupons, $this->getRandomWeightedElementIndex($settings->web_coupons) ); if (!$settings->discounts_activated) { return abort(404); } $mesBrDiscount = new Discount(); return view('theme::pages.participation.won', compact('discount', 'mesBrDiscount')); } /** * Show loose page * * @return \Illuminate\Contracts\View\View */ public function loose(): View { return view('theme::pages.participation.loose'); } // * -- END Participation /** * View won prize mail * * @param \App\Models\Prize $prize * @return \Illuminate\Contracts\View\View */ public function mailPrize(Prize $prize): View { return view('back::pages.re7-preview-mail', [ 'render_url' => route('re7.mail-print', [ 'type' => 'prize', 'prize' => $prize ]) ]); } /** * View won discount mail * * @return \Illuminate\Contracts\View\View */ public function mailDiscount(): View { /** @var \App\Models\Settings */ $settings = app(Settings::class); if (!$settings->discounts_activated) { return abort(404); } return view('back::pages.re7-preview-mail', [ 'render_url' => route('re7.mail-print', [ 'type' => 'discount' ]) ]); } /** * View proof mail received mail * * @return \Illuminate\Contracts\View\View */ public function mailProofReceived(): View { return view('back::pages.re7-preview-mail', [ 'render_url' => route('re7.mail-print', [ 'type' => 'proof' ]) ]); } /** * View sent prize mail * * @return \Illuminate\Contracts\View\View */ public function mailPrizeSent(): View { return view('back::pages.re7-preview-mail', [ 'render_url' => route('re7.mail-print', [ 'type' => 'prize-sent' ]) ]); } /** * Print a specific mail * * @param string $type * @param \App\Models\Prize|null $prize * @return \Illuminate\Http\Response */ public function mailPrint(string $type, Prize|null $prize = null): Response { /** @var \App\Models\User */ $user = auth('backend')->user(); /** @var \App\Models\Settings */ $settings = app(Settings::class); switch ($type) { case 'discount': /** @var \App\Lib\Discount */ $discount = Arr::get( $settings->web_coupons, $this->getRandomWeightedElementIndex($settings->web_coupons) ); return response((new DiscountWonMail( new Address( $user->email, $user->first_name ), $settings->name, $discount, config('app.url') ))->render()); case 'prize': return response((new PrizeWonMail( new Address( $user->email, $user->first_name ), $settings->name, $prize, config('app.url') ))->render()); case 'prize-sent': return response((new PrizeIsSentMail( new Address( $user->email, $user->first_name ), $settings->name ))->render()); case 'proof': return response((new WinningProofSubmitedMail( new Address( $user->email, $user->first_name ), $settings->name ))->render()); default: return response('', 404); } //end switch } }