Completed
Push — master ( 96b827...e9016c )
by ARCANEDEV
15:51
created

PagesController::transNotification()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 10
ccs 0
cts 0
cp 0
rs 9.4285
cc 1
eloc 6
nc 1
nop 3
crap 2
1
<?php namespace Arcanesoft\Seo\Http\Controllers\Admin;
2
3
use Arcanedev\LaravelApiHelper\Traits\JsonResponses;
4
use Arcanesoft\Seo\Entities\Locales;
5
use Arcanesoft\Seo\Http\Requests\Admin\Pages\CreatePageRequest;
6
use Arcanesoft\Seo\Http\Requests\Admin\Pages\UpdatePageRequest;
7
use Arcanesoft\Seo\Models\Page;
8
use Arcanesoft\Seo\Policies;
9
use Illuminate\Support\Facades\Log;
10
11
/**
12
 * Class     PagesController
13
 *
14
 * @package  Arcanesoft\Seo\Http\Controllers\Admin
15
 * @author   ARCANEDEV <[email protected]>
16
 */
17
class PagesController extends Controller
18
{
19
    /* -----------------------------------------------------------------
20
     |  Traits
21
     | -----------------------------------------------------------------
22
     */
23
24
    use JsonResponses;
25
26
    /* -----------------------------------------------------------------
27
     |  Constructor
28
     | -----------------------------------------------------------------
29
     */
30
    /**
31
     * PagesController constructor.
32
     */
33
    public function __construct()
34
    {
35
        parent::__construct();
36
37
        $this->setCurrentPage('seo-pages');
38
        $this->addBreadcrumbRoute(trans('seo::pages.titles.pages'), 'admin::seo.pages.index');
39
    }
40
41
    /* -----------------------------------------------------------------
42
     |  Main Methods
43
     | -----------------------------------------------------------------
44
     */
45
    public function index()
46
    {
47
        $this->authorize(Policies\PagesPolicy::PERMISSION_LIST);
48
49
        $pages = Page::with(['footers'])->paginate(50);
50
51
        $this->setTitle($title = trans('seo::pages.titles.pages-list'));
52
        $this->addBreadcrumb($title);
53
54
        return $this->view('admin.pages.index', compact('pages'));
55
    }
56
57
    public function create()
58
    {
59
        $this->authorize(Policies\PagesPolicy::PERMISSION_CREATE);
60
61
        $locales = Locales::all();
62
63
        $this->setTitle($title = trans('seo::pages.titles.new-page'));
64
        $this->addBreadcrumb($title);
65
66
        return $this->view('admin.pages.create', compact('locales'));
67
    }
68
69
    public function store(CreatePageRequest $request)
70
    {
71
        $this->authorize(Policies\PagesPolicy::PERMISSION_CREATE);
72
73
        $page = Page::createOne(
74
            $request->only(['name', 'locale', 'content'])
75
        );
76
77
        $this->transNotification('created', ['name' => $page->name], $page->toArray());
78
79
        return redirect()->route('admin::seo.pages.show', [$page]);
80
    }
81
82
    public function show(Page $page)
83
    {
84
        $this->authorize(Policies\PagesPolicy::PERMISSION_SHOW);
85
86
        $page->load(['footers.seo']);
87
88
        $this->setTitle($title = trans('seo::pages.titles.page-details'));
89
        $this->addBreadcrumb($title);
90
91
        return $this->view('admin.pages.show', compact('page'));
92
    }
93
94
    public function edit(Page $page)
95
    {
96
        $this->authorize(Policies\PagesPolicy::PERMISSION_UPDATE);
97
98
        $locales = Locales::all();
99
100
        $this->setTitle($title = trans('seo::pages.titles.edit-page'));
101
        $this->addBreadcrumb($title);
102
103
        return $this->view('admin.pages.edit', compact('page', 'locales'));
104
    }
105
106
    public function update(Page $page, UpdatePageRequest $request)
107
    {
108
        $this->authorize(Policies\PagesPolicy::PERMISSION_UPDATE);
109
110
        $page->updateOne(
111
            $request->only(['name', 'locale', 'content'])
112
        );
113
114
        $this->transNotification('updated', ['name' => $page->name], $page->toArray());
115
116
        return redirect()->route('admin::seo.pages.show', [$page]);
117
    }
118
119
    public function delete(Page $page)
120
    {
121
        $this->authorize(Policies\PagesPolicy::PERMISSION_DELETE);
122
123
        $page->delete();
124
125
        return $this->jsonResponseSuccess([
126
            'message' => $this->transNotification('deleted', ['name' => $page->name], $page->toArray())
127
        ]);
128
    }
129
130
    /* -----------------------------------------------------------------
131
     |  Other Methods
132
     | -----------------------------------------------------------------
133
     */
134
135
    /**
136
     * Notify with translation.
137
     *
138
     * @param  string  $action
139
     * @param  array   $replace
140
     * @param  array   $context
141
     *
142
     * @return string
143
     */
144
    protected function transNotification($action, array $replace = [], array $context = [])
145
    {
146
        $title   = trans("seo::pages.messages.{$action}.title");
147
        $message = trans("seo::pages.messages.{$action}.message", $replace);
148
149
        Log::info($message, $context);
150
        $this->notifySuccess($message, $title);
151
152
        return $message;
153
    }
154
}
155