Issues (11)

src/Http/Controllers/ColumnGroupController.php (3 issues)

Labels
Severity
1
<?php
2
3
namespace DavideCasiraghi\LaravelColumns\Http\Controllers;
4
5
use DavideCasiraghi\LaravelColumns\Facades\LaravelColumns;
6
use DavideCasiraghi\LaravelColumns\Models\Column;
7
use DavideCasiraghi\LaravelColumns\Models\ColumnGroup;
8
use DavideCasiraghi\LaravelFormPartials\Facades\LaravelFormPartials;
9
use Illuminate\Http\Request;
10
use Illuminate\Support\Facades\App;
11
use Intervention\Image\ImageManagerStatic as Image;
12
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
13
use Validator;
14
15
class ColumnGroupController extends Controller
16
{
17
    /* Restrict the access to this resource just to logged in users */
18 10
    public function __construct()
19
    {
20 10
        $this->middleware('auth', ['except' => ['show']]);
21 10
    }
22
23
    /**
24
     * Display the specified resource.
25
     *
26
     * @param  \Illuminate\Http\Request  $request
27
     * @return \Illuminate\Http\Response
28
     */
29 5
    public function index(Request $request)
30
    {
31 5
        $searchKeywords = $request->input('keywords');
32
        //$searchCategory = $request->input('category_id');
33 5
        $countriesAvailableForTranslations = LaravelLocalization::getSupportedLocales();
34
35 5
        if ($searchKeywords) {
36
            $columnGroups = ColumnGroup::
37
                        select('column_group_translations.column_group_id AS id', 'title', 'description', 'button_text', 'background_image', 'button_url', 'locale')
38
                        ->join('column_group_translations', 'column_groups.id', '=', 'column_group_translations.column_group_id')
39
                        ->orderBy('title')
40
                        ->where('title', 'like', '%'.$searchKeywords.'%')
41
                        ->where('locale', 'en')
42
                        ->paginate(20);
43
        } else {
44
            $columnGroups = ColumnGroup::
45 5
                        select('column_group_translations.column_group_id AS id', 'title', 'description', 'button_text', 'background_image', 'button_url', 'locale')
46 5
                        ->join('column_group_translations', 'column_groups.id', '=', 'column_group_translations.column_group_id')
47 5
                        ->where('locale', 'en')
48 5
                        ->orderBy('title')
49 5
                        ->paginate(20);
50
        }
51
52 5
        return view('laravel-columns::columnGroups.index', compact('columnGroups'))
53 5
                     ->with('i', (request()->input('page', 1) - 1) * 20)
54 5
                     ->with('searchKeywords', $searchKeywords)
55 5
                     ->with('countriesAvailableForTranslations', $countriesAvailableForTranslations);
56
    }
57
58
    /***************************************************************************/
59
60
    /**
61
     * Show the form for creating a new resource.
62
     *
63
     * @return \Illuminate\Http\Response
64
     */
65 1
    public function create()
66
    {
67 1
        return view('laravel-columns::columnGroups.create')
68 1
                    ->with('buttonColorArray', $this->getButtonColorArray());
69
    }
70
71
    /***************************************************************************/
72
73
    /**
74
     * Store a newly created resource in storage.
75
     *
76
     * @param  \Illuminate\Http\Request  $request
77
     * @return \Illuminate\Http\Response
78
     */
79 2
    public function store(Request $request)
80
    {
81
        // Validate form datas
82 2
        $validator = Validator::make($request->all(), [
83 2
            'title' => 'required',
84
        ]);
85 2
        if ($validator->fails()) {
86 1
            return back()->withErrors($validator)->withInput();
87
        }
88
89 1
        $columnGroup = new ColumnGroup();
90
91
        // Set the default language to edit the quote in English
92 1
        App::setLocale('en');
93
94 1
        $this->saveOnDb($request, $columnGroup);
95
96 1
        return redirect()->route('columnGroups.index')
97 1
                            ->with('success', 'Column group added succesfully');
98
    }
99
100
    /***************************************************************************/
101
102
    /**
103
     * Display the specified resource.
104
     *
105
     * @param  int $columnId
106
     * @return \Illuminate\Http\Response
107
     */
108
    public function show($columnGroupId = null)
109
    {
110
        $columnGroup = Laravelcolumns::getColumnGroup($columnGroupId);
0 ignored issues
show
The method getColumnGroup() does not exist on DavideCasiraghi\LaravelC...\Facades\LaravelColumns. Since you implemented __callStatic, consider adding a @method annotation. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

110
        /** @scrutinizer ignore-call */ 
111
        $columnGroup = Laravelcolumns::getColumnGroup($columnGroupId);
Loading history...
111
        $columnGroupParameters = ($columnGroup) ? (Laravelcolumns::getParametersArray($columnGroup)) : null;
0 ignored issues
show
The method getParametersArray() does not exist on DavideCasiraghi\LaravelC...\Facades\LaravelColumns. Since you implemented __callStatic, consider adding a @method annotation. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

111
        $columnGroupParameters = ($columnGroup) ? (Laravelcolumns::/** @scrutinizer ignore-call */ getParametersArray($columnGroup)) : null;
Loading history...
112
        $columns = Laravelcolumns::getColumnsByGroup($columnGroupId);
0 ignored issues
show
The method getColumnsByGroup() does not exist on DavideCasiraghi\LaravelC...\Facades\LaravelColumns. Since you implemented __callStatic, consider adding a @method annotation. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

112
        /** @scrutinizer ignore-call */ 
113
        $columns = Laravelcolumns::getColumnsByGroup($columnGroupId);
Loading history...
113
        //dd($columnGroup);
114
        return view('laravel-columns::columnGroups.show', compact('columnGroup'))
115
                ->with('columnGroup', $columnGroup)
116
                ->with('columnGroupParameters', $columnGroupParameters)
117
                ->with('columns', $columns);
118
    }
119
120
    /***************************************************************************/
121
122
    /**
123
     * Show the form for editing the specified resource.
124
     *
125
     * @param  int $columnId
126
     * @return \Illuminate\Http\Response
127
     */
128 1
    public function edit($columnGroupId = null)
129
    {
130 1
        $columnGroup = ColumnGroup::find($columnGroupId);
131
132 1
        return view('laravel-columns::columnGroups.edit', compact('columnGroup'))
133 1
                    ->with('buttonColorArray', $this->getButtonColorArray());
134
    }
135
136
    /***************************************************************************/
137
138
    /**
139
     * Update the specified resource in storage.
140
     *
141
     * @param  \Illuminate\Http\Request  $request
142
     * @param  int  $columnGroupId
143
     * @return \Illuminate\Http\Response
144
     */
145 2
    public function update(Request $request, $columnGroupId)
146
    {
147
        // Validate form datas
148 2
        $validator = Validator::make($request->all(), [
149 2
            'title' => 'required',
150
        ]);
151 2
        if ($validator->fails()) {
152 1
            return back()->withErrors($validator)->withInput();
153
        }
154
155 1
        $columnGroup = ColumnGroup::find($columnGroupId);
156
157
        // Set the default language to update the quote in English
158 1
        App::setLocale('en');
159
160 1
        $this->saveOnDb($request, $columnGroup);
161
162 1
        return redirect()->route('columnGroups.index')
163 1
                            ->with('success', 'Column image updated succesfully');
164
    }
165
166
    /***************************************************************************/
167
168
    /**
169
     * Remove the specified resource from storage.
170
     *
171
     * @param  int  $columnGroupId
172
     * @return \Illuminate\Http\Response
173
     */
174 1
    public function destroy($columnGroupId)
175
    {
176 1
        $columnGroup = ColumnGroup::find($columnGroupId);
177 1
        $columnGroup->delete();
178
179 1
        return redirect()->route('columnGroups.index')
180 1
                            ->with('success', 'Column image deleted succesfully');
181
    }
182
183
    /***************************************************************************/
184
185
    /**
186
     * Save the record on DB.
187
     * @param  \Illuminate\Http\Request  $request
188
     * @param  \DavideCasiraghi\Laravelcolumns\Models\ColumnGroup  $column
189
     * @return void
190
     */
191 2
    public function saveOnDb($request, $columnGroup)
192
    {
193 2
        $columnGroup->translateOrNew('en')->title = $request->get('title');
194 2
        $columnGroup->translateOrNew('en')->description = $request->get('description');
195 2
        $columnGroup->translateOrNew('en')->button_text = $request->get('button_text');
196 2
        $columnGroup->translateOrNew('en')->image_alt = $request->get('image_alt');
197
198 2
        $columnGroup->bkg_color = $request->get('bkg_color');
199 2
        $columnGroup->text_alignment = $request->get('text_alignment');
200 2
        $columnGroup->group_title_color = $request->get('group_title_color');
201 2
        $columnGroup->group_title_font_size = $request->get('group_title_font_size');
202 2
        $columnGroup->column_title_color = $request->get('column_title_color');
203 2
        $columnGroup->column_title_font_size = $request->get('column_title_font_size');
204 2
        $columnGroup->description_font_size = $request->get('description_font_size');
205 2
        $columnGroup->link_style = $request->get('link_style');
206 2
        $columnGroup->button_url = $request->get('button_url');
207 2
        $columnGroup->button_color = $request->get('button_color');
208 2
        $columnGroup->button_corners = $request->get('button_corners');
209 2
        $columnGroup->background_type = $request->get('background_type');
210 2
        $columnGroup->background_image = $request->get('background_image');
211 2
        $columnGroup->background_image_position = $request->get('background_image_position');
212 2
        $columnGroup->opacity = $request->get('opacity');
213 2
        $columnGroup->justify_content = $request->get('justify_content');
214 2
        $columnGroup->flex_wrap = $request->get('flex_wrap');
215 2
        $columnGroup->flex_flow = $request->get('flex_flow');
216 2
        $columnGroup->columns_flex = $request->get('columns_flex');
217 2
        $columnGroup->columns_padding = $request->get('columns_padding');
218 2
        $columnGroup->columns_box_sizing = $request->get('columns_box_sizing');
219 2
        $columnGroup->columns_round_images = $request->get('columns_round_images');
220 2
        $columnGroup->columns_images_width = $request->get('columns_images_width');
221 2
        $columnGroup->columns_images_hide_mobile = $request->get('columns_images_hide_mobile');
222
        $columnGroup->icons_size = $request->get('icons_size');
223
224
        //dd($columnGroup);
225
226 2
        // Column group image upload
227 2
        $imageSubdir = 'column_groups';
228 2
        $imageWidth = '1067';
229 2
        $thumbWidth = '690';
230
        $columnGroup->background_image = LaravelFormPartials::uploadImageOnServer($request->file('background_image'), $request->background_image, $imageSubdir, $imageWidth, $thumbWidth);
231 2
232 2
        $columnGroup->save();
233
    }
234
235
    /***************************************************************************/
236
237
    /**
238
     * Return and array with the button possible color options.
239
     *
240
     * @return array
241 2
     */
242
    public static function getButtonColorArray()
243
    {
244 2
        $ret = [
245
            'press-red' => 'Red',
246
            'press-pink' => 'Pink',
247
            'press-purple' => 'Purple',
248
            'press-deeppurple' => 'Deep purple',
249
            'press-indigo' => 'Indigo',
250
            'press-blue' => 'Blue',
251
            'press-lightblue' => 'Light blue',
252
            'press-cyan' => 'Cyan',
253
            'press-teal' => 'Teal',
254
            'press-green' => 'Green',
255
            'press-lightgreen' => 'Light green',
256
            'press-lime' => 'Lime',
257
            'press-yellow' => 'Yellow',
258
            'press-amber' => 'Amber',
259
            'press-orange' => 'Orange',
260
            'press-deeporange' => 'Deeporange',
261
            'press-brown' => 'Brown',
262
            'press-grey' => 'Grey',
263
            'press-bluegrey' => 'Blue grey',
264
            'press-black' => 'Black',
265
        ];
266 2
267
        return $ret;
268
    }
269
}
270