Passed
Push — master ( 997617...18f4dd )
by Davide
03:52
created

JumbotronImageController   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 156
Duplicated Lines 0 %

Test Coverage

Coverage 88.24%

Importance

Changes 0
Metric Value
eloc 47
dl 0
loc 156
ccs 45
cts 51
cp 0.8824
rs 10
c 0
b 0
f 0
wmc 9

8 Methods

Rating   Name   Duplication   Size   Complexity  
A destroy() 0 7 1
A create() 0 3 1
A store() 0 11 1
A update() 0 11 1
A edit() 0 5 1
A saveOnDb() 0 9 1
A show() 0 5 1
A index() 0 27 2
1
<?php
2
3
namespace DavideCasiraghi\LaravelJumbotronImages\Http\Controllers;
4
5
use Illuminate\Http\Request;
6
use Illuminate\Support\Facades\App;
7
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
8
use DavideCasiraghi\LaravelJumbotronImages\Models\JumbotronImage;
9
10
class JumbotronImageController
11
{
12
    /**
13
     * Display the specified resource.
14
     *
15
     * @param  \Illuminate\Http\Request  $request
16
     * @return \Illuminate\Http\Response
17
     */
18 3
    public function index(Request $request)
19
    {
20 3
        $searchKeywords = $request->input('keywords');
21
        //$searchCategory = $request->input('category_id');
22 3
        $countriesAvailableForTranslations = LaravelLocalization::getSupportedLocales();
23
24 3
        if ($searchKeywords) {
25
            $jumbotronImages = JumbotronImage::
26
                                select('jumbotron_image_translations.jumbotron_image_id AS id', 'title', 'body', 'button_text', 'image_file_name', 'button_url', 'locale')
27
                                ->join('jumbotron_image_translations', 'jumbotron_images.id', '=', 'jumbotron_image_translations.jumbotron_image_id')
28
                                ->orderBy('title')
29
                                ->where('title', 'like', '%'.$searchKeywords.'%')
30
                                ->where('locale', 'en')
31
                                ->paginate(20);
32
        } else {
33
            $jumbotronImages = JumbotronImage::
34 3
                                select('jumbotron_image_translations.jumbotron_image_id AS id', 'title', 'body', 'button_text', 'image_file_name', 'button_url', 'locale')
35 3
                                ->join('jumbotron_image_translations', 'jumbotron_images.id', '=', 'jumbotron_image_translations.jumbotron_image_id')
36 3
                                ->where('locale', 'en')
37 3
                                ->orderBy('title')
38 3
                                ->paginate(20);
39
        }
40
41 3
        return view('laravel-jumbotron-images::jumbotronImages.index', compact('jumbotronImages'))
42 3
                             ->with('i', (request()->input('page', 1) - 1) * 20)
43 3
                             ->with('searchKeywords', $searchKeywords)
44 3
                             ->with('countriesAvailableForTranslations', $countriesAvailableForTranslations);
45
    }
46
47
    /***************************************************************************/
48
49
    /**
50
     * Show the form for creating a new resource.
51
     *
52
     * @return \Illuminate\Http\Response
53
     */
54 1
    public function create()
55
    {
56 1
        return view('laravel-jumbotron-images::jumbotronImages.create');
57
    }
58
59
    /***************************************************************************/
60
61
    /**
62
     * Store a newly created resource in storage.
63
     *
64
     * @param  \Illuminate\Http\Request  $request
65
     * @return \Illuminate\Http\Response
66
     */
67 1
    public function store(Request $request)
68
    {
69 1
        $jumbotronImage = new JumbotronImage();
70
71
        // Set the default language to edit the quote in English
72 1
        App::setLocale('en');
73
74 1
        $this->saveOnDb($request, $jumbotronImage);
75
76 1
        return redirect()->route('jumbotron-images.index')
77 1
                            ->with('success', 'Jumbotron image added succesfully');
78
    }
79
80
    /***************************************************************************/
81
82
    /**
83
     * Display the specified resource.
84
     *
85
     * @param  int $jumbotronImageId
86
     * @return \Illuminate\Http\Response
87
     */
88 1
    public function show($jumbotronImageId = null)
89
    {
90 1
        $jumbotronImage = JumbotronImage::find($jumbotronImageId);
91
92 1
        return view('laravel-jumbotron-images::jumbotronImages.show', compact('jumbotronImage'));
93
    }
94
95
    /***************************************************************************/
96
97
    /**
98
     * Show the form for editing the specified resource.
99
     *
100
     * @param  int $jumbotronImageId
101
     * @return \Illuminate\Http\Response
102
     */
103 1
    public function edit($jumbotronImageId = null)
104
    {
105 1
        $jumbotronImage = JumbotronImage::find($jumbotronImageId);
106
107 1
        return view('laravel-jumbotron-images::jumbotronImages.edit', compact('jumbotronImage'));
108
    }
109
110
    /***************************************************************************/
111
112
    /**
113
     * Update the specified resource in storage.
114
     *
115
     * @param  \Illuminate\Http\Request  $request
116
     * @param  int  $jumbotronImageId
117
     * @return \Illuminate\Http\Response
118
     */
119 1
    public function update(Request $request, $jumbotronImageId)
120
    {
121 1
        $jumbotronImage = JumbotronImage::find($jumbotronImageId);
122
123
        // Set the default language to update the quote in English
124 1
        App::setLocale('en');
125
126 1
        $this->saveOnDb($request, $jumbotronImage);
127
128 1
        return redirect()->route('jumbotron-images.index')
129 1
                            ->with('success', 'Jumbotron image updated succesfully');
130
    }
131
132
    /***************************************************************************/
133
134
    /**
135
     * Remove the specified resource from storage.
136
     *
137
     * @param  int  $jumbotronImageId
138
     * @return \Illuminate\Http\Response
139
     */
140 1
    public function destroy($jumbotronImageId)
141
    {
142 1
        $jumbotronImage = JumbotronImage::find($jumbotronImageId);
143 1
        $jumbotronImage->delete();
144
145 1
        return redirect()->route('jumbotron-images.index')
146 1
                            ->with('success', 'Jumbotron image deleted succesfully');
147
    }
148
149
    /***************************************************************************/
150
151
    /**
152
     * Save the record on DB.
153
     * @param  \Illuminate\Http\Request  $request
154
     * @param  \DavideCasiraghi\LaravelJumbotronImages\Models\JumbotronImage  $jumbotronImage
155
     * @return void
156
     */
157 2
    public function saveOnDb($request, $jumbotronImage)
158
    {
159 2
        $jumbotronImage->translateOrNew('en')->title = $request->get('title');
160 2
        $jumbotronImage->translateOrNew('en')->body = $request->get('body');
161 2
        $jumbotronImage->translateOrNew('en')->button_text = $request->get('button_text');
162 2
        $jumbotronImage->image_file_name = $request->get('image_file_name');
163 2
        $jumbotronImage->button_url = $request->get('button_url');
164
165 2
        $jumbotronImage->save();
166 2
    }
167
168
    /***************************************************************************/
169
}
170