HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/xedaptot/ai.naniguide.com/app/Http/Controllers/Admin/SystemEmailTemplateController.php
<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Model\SystemEmailTemplate;
use App\Model\Setting;
use App;
use PHPUnit\Event\Telemetry\System;

class SystemEmailTemplateController extends Controller
{
    public function index(Request $request)
    {
        if (!$request->user()->can('list', new \App\Model\SystemEmailTemplate())) {
            return $this->notAuthorized();
        }

        return view('admin.system_email_templates.index');
    }

    public function list(Request $request)
    {
        if (!$request->user()->can('list', new \App\Model\SystemEmailTemplate())) {
            return $this->notAuthorized();
        }

        // view
        $view = $request->view ? $request->view : 'grid';

        $systemEmailTemplates = SystemEmailTemplate::query();

        if (!empty($request->category_uid)) {
            $systemEmailTemplates = $systemEmailTemplates->categoryUid($request->category_uid);
        }

        $systemEmailTemplates = $systemEmailTemplates->search($request->keyword)
            ->orderBy($request->sort_order, $request->sort_direction)
            ->paginate($request->per_page ? $request->per_page : 12);

        return view('admin.system_email_templates._list_' . $view, [
            'systemEmailTemplates' => $systemEmailTemplates,
        ]);
    }

    public function add(Request $request)
    {
        $systemEmailTemplate = SystemEmailTemplate::newDefault();
        $systemEmailTemplate->name = trans('messages.untitled_template');

        // authorize
        if (!$request->user()->can('create', SystemEmailTemplate::class)) {
            return $this->notAuthorized();
        }

        // validate and save posted data
        if ($request->isMethod('post')) {
            $currentSystemEmailTemplate = SystemEmailTemplate::findByUid($request->template);

            // add
            $systemEmailTemplate->addSystemEmailTemplate($request->name, $currentSystemEmailTemplate->template);

            return redirect()->action('Admin\SystemEmailTemplateController@builder', $systemEmailTemplate->uid);
        }

        return view('admin.system_email_templates.add', [
            'systemEmailTemplate' => $systemEmailTemplate,
        ]);
    }

    public function templates(Request $request)
    {
        // authorize
        if (!$request->user()->can('create', SystemEmailTemplate::class)) {
            return $this->notAuthorized();
        }

        //
        $systemEmailTemplates = SystemEmailTemplate::query();

        // filter by category
        if (!empty($request->category_uid)) {
            $systemEmailTemplates = $systemEmailTemplates->categoryUid($request->category_uid);
        }

        // sort, pagination
        $systemEmailTemplates = $systemEmailTemplates->search($request->keyword)
            ->orderBy($request->sort_order, $request->sort_direction)
            ->paginate($request->per_page);

        return view('admin.system_email_templates.templates', [
            'systemEmailTemplates' => $systemEmailTemplates,
        ]);
    }

    public function builder(Request $request, $uid)
    {
        // Generate info
        $systemEmailTemplate = SystemEmailTemplate::findByUid($uid);

        // authorize
        if (!$request->user()->can('update', $systemEmailTemplate)) {
            return $this->notAuthorized();
        }

        // validate and save posted data
        if ($request->isMethod('post')) {
            //
            $validator = $systemEmailTemplate->updateContent($request->json, $request->content);

            //
            if ($validator->fails()) {
                return response()->json($validator->errors(), 400);
            }

            //
            return response()->json([
                'status' => 'success',
            ]);
        }

        return view('admin.system_email_templates.builder', [
            'systemEmailTemplate' => $systemEmailTemplate,
        ]);
    }

    public function changeName(Request $request)
    {
        $systemEmailTemplate = SystemEmailTemplate::findByUid($request->uid);

        // authorize
        if (!$request->user()->can('update', $systemEmailTemplate)) {
            return $this->notAuthorized();
        }

        if ($request->isMethod('post')) {
            // change name
            $validator = $systemEmailTemplate->changeName($request->name);

            if ($validator->fails()) {
                return response()->view('admin.system_email_templates.changeName', [
                    'systemEmailTemplate' => $systemEmailTemplate,
                    'errors' => $validator->errors(),
                ], 400);
            }

            return response()->json([
                'status' => 'success',
                'message' => trans('messages.template.name.changed'),
            ], 201);
        }

        return view('admin.system_email_templates.changeName', [
            'systemEmailTemplate' => $systemEmailTemplate,
        ]);
    }

    public function preview(Request $request, $uid)
    {
        $systemEmailTemplate = SystemEmailTemplate::findByUid($uid);

        // authorize
        if (!$request->user()->can('read', $systemEmailTemplate)) {
            return $this->notAuthorized();
        }

        return $systemEmailTemplate->template->getPreviewContent();
    }

    public function copy(Request $request)
    {
        $systemEmailTemplate = SystemEmailTemplate::findByUid($request->uid);

        if ($request->isMethod('post')) {
            // authorize
            if (!$request->user()->can('copy', $systemEmailTemplate)) {
                return $this->notAuthorized();
            }

            // copy
            $systemEmailTemplate->copy($request->name);

            echo trans('messages.template.copied');
            return;
        }

        return view('admin.system_email_templates.copy', [
            'systemEmailTemplate' => $systemEmailTemplate,
        ]);
    }

    public function delete(Request $request)
    {
        $systemEmailTemplates = SystemEmailTemplate::whereIn('uid', is_array($request->uids) ? $request->uids : explode(',', $request->uids))->get();

        //
        foreach ($systemEmailTemplates as $systemEmailTemplate) {
            if (!$request->user()->can('delete', $systemEmailTemplate)) {
                return $this->notAuthorized();
            }

            // delete
            $systemEmailTemplate->deleteAndCleanup();
        }

        //
        echo trans('messages.template.deleted');
    }
}