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');
}
}