<?php namespace App\Http\Controllers\Admin; use App\Exceptions\GeneralException; use App\Http\Requests\Settings\EmailTemplateRequest; use App\Models\EmailTemplates; use Illuminate\Auth\Access\AuthorizationException; use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\View\Factory; use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\View\View; class EmailTemplateController extends AdminBaseController { /** * view all email templates * * @return Application|Factory|View * @throws AuthorizationException */ public function index(): Factory|View|Application { $this->authorize('view email_templates'); $breadcrumbs = [ ['link' => url(config('app.admin_path')."/dashboard"), 'name' => __('locale.menu.Dashboard')], ['link' => url(config('app.admin_path')."/dashboard"), 'name' => __('locale.menu.Settings')], ['name' => __('locale.menu.Email Templates')], ]; $email_templates = EmailTemplates::all(); return \view('admin.settings.EmailTemplates.index', compact('email_templates', 'breadcrumbs')); } /** * manage payment gateway * * @param EmailTemplates $template * * @return Application|Factory|View * @throws AuthorizationException */ public function show(EmailTemplates $template): Factory|View|Application { $this->authorize('update payment_gateways'); $breadcrumbs = [ ['link' => url(config('app.admin_path')."/dashboard"), 'name' => __('locale.menu.Dashboard')], ['link' => url(config('app.admin_path')."/email-templates"), 'name' => __('locale.menu.Email Templates')], ['name' => $template->name], ]; return \view('admin.settings.EmailTemplates.show', compact('template', 'breadcrumbs')); } /** * * change status * * @param EmailTemplates $template * * @return JsonResponse * @throws AuthorizationException * @throws GeneralException */ public function activeToggle(EmailTemplates $template): JsonResponse { if (config('app.stage') == 'demo') { return response()->json([ 'status' => 'error', 'message' => 'Sorry! This option is not available in demo mode', ]); } try { $this->authorize('view email_templates'); if ($template->update(['status' => ! $template->status])) { return response()->json([ 'status' => 'success', 'message' => __('locale.settings.status_successfully_change'), ]); } throw new GeneralException(__('locale.exceptions.something_went_wrong')); } catch (ModelNotFoundException $exception) { return response()->json([ 'status' => 'error', 'message' => $exception->getMessage(), ]); } } /** * update email template * * @param EmailTemplates $email_template * @param EmailTemplateRequest $request * * @return RedirectResponse */ public function update(EmailTemplates $email_template, EmailTemplateRequest $request): RedirectResponse { if (config('app.stage') == 'demo') { return redirect()->route('admin.email-templates.show', $email_template->uid)->with([ 'status' => 'error', 'message' => 'Sorry! This option is not available in demo mode', ]); } $email_template->update([ 'subject' => $request->input('subject'), 'content' => $request->input('content'), ]); return redirect()->route('admin.email-templates.show', $email_template->uid)->with([ 'status' => 'success', 'message' => __('locale.email_template.template_was_updated'), ]); } }