Completed
Push — master ( badfda...dd97a5 )
by Maxime
20s queued 10s
created

ModelBaseController   A

Complexity

Total Complexity 13

Size/Duplication

Total Lines 100
Duplicated Lines 0 %

Test Coverage

Coverage 93.02%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 13
eloc 40
c 1
b 0
f 0
dl 0
loc 100
ccs 40
cts 43
cp 0.9302
rs 10

6 Methods

Rating   Name   Duplication   Size   Complexity  
A getParams() 0 9 2
A postSearch() 0 17 3
A generateResultSearchByIds() 0 11 3
A __construct() 0 4 1
A putDestroy() 0 13 2
A generateResultSearch() 0 18 2
1
<?php namespace Distilleries\Expendable\Http\Controllers\Backend\Base;
2
3
use Distilleries\Expendable\Contracts\LayoutManagerContract;
4
use Distilleries\Expendable\Helpers\TranslationUtils;
5
use Distilleries\Expendable\Models\BaseModel;
6
use Illuminate\Http\Request;
7
8
class ModelBaseController extends BaseController {
9
10
    /**
11
     * @var \Distilleries\Expendable\Models\BaseModel $model
12
     * Injected by the constructor
13
     */
14
    protected $model;
15
16
17
    // ------------------------------------------------------------------------------------------------
18
19 112
    public function __construct(BaseModel $model, LayoutManagerContract $layoutManager)
20
    {
21 112
        parent::__construct($layoutManager);
22 112
        $this->model = $model;
23
    }
24
25
    // ------------------------------------------------------------------------------------------------
26
    // ------------------------------------------------------------------------------------------------
27
    // ------------------------------------------------------------------------------------------------
28
29 20
    public function putDestroy(Request $request)
30
    {
31 20
        $validation = \Validator::make($request->all(), [
32 10
            'id' => 'required'
33 10
        ]);
34 20
        if ($validation->fails()) {
35 10
            return redirect()->back()->withErrors($validation)->withInput($request->all());
36
        }
37
38 10
        $data = $this->model->where($this->model->getKeyName(), $request->get('id'))->get()->last();
39 10
        $data->delete();
40
41 10
        return redirect()->to(action('\\'.get_class($this).'@getIndex'));
42
    }
43
44
    // ------------------------------------------------------------------------------------------------
45 4
    public function postSearch(Request $request, $query = null)
46
    {
47
48 4
        $ids            = $request->get('ids');
49 4
        $local_override = $this->getParams($request, 'local_override', null);
50
51 4
        TranslationUtils::overrideLocal($local_override);
52
53 4
        if (empty($query)) {
54 2
            $query = $this->model;
55
        }
56
57 4
        if (!empty($ids)) {
58 4
            return response()->json($this->generateResultSearchByIds($request, $query, $ids));
59
        }
60
61 2
        return response()->json($this->generateResultSearch($request, $query));
62
63
    }
64
65 4
    protected function generateResultSearchByIds(Request $request, $query, $ids)
66
    {
67 4
        $no_edit = $request->get('no_edit');
68
69 4
        if (!empty($no_edit) && method_exists($this->model, 'withoutTranslation')) {
70
            $query = $query->withoutTranslation();
71
        }
72
73 4
        $data = $query->whereIn($this->model->getKeyName(), $ids)->get();
74
75 4
        return $data;
76
    }
77
78 2
    protected function generateResultSearch(Request $request, $query)
79
    {
80 2
        $term  = $request->get('term');
81 2
        $page  = $this->getParams($request, 'page', 1);
82 2
        $paged = $this->getParams($request, 'page_limit', 10);
83
84 2
        if (empty($term)) {
85 2
            $elements = array();
86 2
            $total    = 0;
87
        } else {
88
            $elements = $query->newQuery()->search($term)->take($paged)->skip(($page - 1) * $paged)->get();
89
            $total    = $query->newQuery()->search($term)->count();
90
91
        }
92
93
        return [
94 2
            'total'    => $total,
95 2
            'elements' => $elements
96
        ];
97
    }
98
99 4
    protected function getParams(Request $request, $key, $default_value)
100
    {
101 4
        $element = $request->get($key);
102
103 4
        if (empty($element)) {
104 4
            $element = $default_value;
105
        }
106
107 4
        return $element;
108
    }
109
110
}