Completed
Push — master ( 53484b...77477e )
by Davide
05:07 queued 37s
created

JumbotronImageController   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 154
Duplicated Lines 0 %

Test Coverage

Coverage 89.8%

Importance

Changes 0
Metric Value
wmc 9
eloc 45
dl 0
loc 154
ccs 44
cts 49
cp 0.898
rs 10
c 0
b 0
f 0

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