Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
66.67% covered (warning)
66.67%
6 / 9
CRAP
85.00% covered (success)
85.00%
34 / 40
SiteController
0.00% covered (danger)
0.00%
0 / 1
66.67% covered (warning)
66.67%
6 / 9
16.86
85.00% covered (success)
85.00%
34 / 40
 __construct
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 index
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 store
0.00% covered (danger)
0.00%
0 / 1
3.03
85.71% covered (success)
85.71%
6 / 7
 show
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 update
0.00% covered (danger)
0.00%
0 / 1
4.01
92.31% covered (success)
92.31%
12 / 13
 destroy
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
2 / 2
 validateData
100.00% covered (success)
100.00%
1 / 1
2
100.00% covered (success)
100.00%
6 / 6
 updateBrand
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
4 / 4
 updateCompany
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 4
1<?php
2
3namespace Qmp\Laravel\Site\Controllers;
4
5use App\Http\Controllers\Controller;
6use Illuminate\Http\Response;
7use Illuminate\Http\Request;
8use Illuminate\Support\Facades\Log;
9use Qmp\Laravel\MicroService\Controllers\AbstractMicroServiceController;
10use Illuminate\Validation\Rule;
11
12use Qmp\Laravel\Site\Models\Site;
13
14class SiteController extends AbstractMicroServiceController
15{
16    use BrandTrait;
17    use CompanyTrait;
18    
19    public function __construct(Request $request)
20    {
21        //$this->middleware('perm:xxx');
22
23        parent::__construct($request);
24    }
25
26    /**
27     * Display a listing of the resource.
28     *
29     * @return \Illuminate\Http\Response
30     */
31    public function index()
32    {
33        return Site::select(['_id', 'hash', 'siteName', 'siteUrl', 'brand', 'company'])->get();
34    }
35
36    /**
37     * Store a newly created resource in storage.
38     *
39     * @param  \Illuminate\Http\Request  $request
40     * @return \Illuminate\Http\Response
41     */
42    public function store(Request $request)
43    {
44        $validatedData = $this->validateData($request);
45
46        $site = Site::create($validatedData);
47
48        if ($site->brand) {
49            $this->addSiteToBrand($site->brand, $site->_id);
50        }
51
52        if ($site->company) {
53            $this->addSiteToCompany($site->company, $site->_id);
54        }
55
56        return $site;
57    }
58
59    /**
60     * Display the specified resource.
61     *
62     * @return \Illuminate\Http\Response
63     */
64    public function show($configId)
65    {
66        return Site::findOrFail($configId);
67    }
68
69    /**
70     * Update the specified resource in storage.
71     *
72     * @param  \Illuminate\Http\Request  $request
73     * @return \Illuminate\Http\Response
74     */
75    public function update(Request $request, $id)
76    {
77        $validatedData = $this->validateData($request, $id);
78        $model = Site::findOrFail($id);
79        $oldBrand = $model->brand;
80        $oldCompany = $model->company;
81
82        $result = $model->update($validatedData);
83
84        $model->refresh();
85
86        if ($model->brand) {
87            $this->addSiteToBrand($model->brand, $model->_id);
88        } else {
89            $this->removeSiteToBrand($oldBrand, $model->_id);
90        }
91
92        if ($model->company) {
93            $this->addSiteToCompany($model->company, $model->_id);
94        } else {
95            $this->removeSiteToCompany($oldCompany, $model->_id);
96        }
97        
98        return response()->json(['status' => $result ? 'ok' : 'ko']);
99    }
100
101    /**
102     * Remove the specified resource from storage.
103     *
104     * @return \Illuminate\Http\Response
105     */
106    public function destroy($id)
107    {
108        $result = Site::find($id)->delete();
109        
110        return response()->json(['status' => $result ? 'ok' : 'ko']);
111    }
112
113    protected function validateData(Request $request, $id = null)
114    {
115        $rules =[
116            'hash' => 'required|string',
117            'siteUrl' => 'required|string',
118            'siteName' => 'required|string',
119            'brand' => 'alpha_num|nullable',
120            'company' => 'alpha_num|nullable',
121            'tracker' => 'array|nullable'
122        ];
123
124        if ($id != null) {
125            $rules['_id'] = [
126                'required',
127                Rule::in([$id])
128            ];
129        }
130
131        return $request->validate($rules);
132    }
133
134    public function updateBrand(Request $request, $siteId) 
135    {
136        $site = Site::findOrFail($siteId);
137        $site->brand = $request->brand_id;
138        $site->save();
139
140        return response()->json(['status' => 'ok']);
141    }
142
143    public function updateCompany(Request $request, $siteId) 
144    {
145        $site = Site::findOrFail($siteId);
146        $site->company = $request->company_id;
147        $site->save();
148
149        return response()->json(['status' => 'ok']);
150    }
151}