Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 6
CRAP
0.00% covered (danger)
0.00%
0 / 42
CompaniesController
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 6
156
0.00% covered (danger)
0.00%
0 / 42
 __construct
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
 index
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 6
 store
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 13
 show
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 update
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 13
 destroy
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 7
1<?php
2
3namespace Qmp\Laravel\Compta\Controllers;
4
5use App\Http\Controllers\Controller;
6use App\User;
7use Illuminate\Http\Response;
8use Illuminate\Http\Request;
9use Illuminate\Support\Facades\Redis;
10use Qmp\Laravel\Acls\Client\Client;
11use Qmp\Laravel\Acls\Exceptions\RolePermissionException;
12use Qmp\Laravel\Compta\Models\Company;
13use Qmp\Laravel\MicroService\Controllers\AbstractMicroServiceController;
14
15class CompaniesController extends AbstractMicroServiceController
16{
17    /**
18     * AccountLinesController constructor.
19     * @param Request $request
20     */
21    public function __construct(Request $request)
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        try {
34            Client::perm($this->userId, ['compta_manage']);
35            $company = Company::select()->with('users')->simplePaginate();
36        } catch (RolePermissionException $e) {
37            $user = User::find($this->userId);
38            $company = $user->comptabilityCompanies()->simplePaginate();
39        }
40
41        return response()->json($company);
42    }
43
44    /**
45     * Store a newly created resource in storage.
46     *
47     * @param  \Illuminate\Http\Request  $request
48     * @return \Illuminate\Http\Response
49     */
50    public function store(Request $request)
51    {
52        $request->validate([
53            'name' => 'required|max:255',
54            'fiscal_year_date_at' => 'required|max:255',
55            'users' => 'nullable|array'
56        ]);
57
58        try {
59            $company = new Company();
60            $company->name = $request->name;
61            $company->fiscal_year_date_at = $request->fiscal_year_date_at;
62            $company->save();
63
64            if ($request->users) {
65                $company->users()->sync($request->users);
66            } else {
67                $company->users()->sync([$this->userId]);
68            }
69
70        } catch(\Exception $e) {
71            return response()->json(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
72        }
73
74        Redis::publish('comptability', json_encode(['action' => 'update-company']));
75
76        return response(['status' => 'ok', 'company_id' => $company->id], Response::HTTP_CREATED);
77    }
78
79    /**
80     * Display the specified resource.
81     *
82     * @return \Illuminate\Http\Response
83     */
84    public function show($id)
85    {
86        return response(Company::find($id));
87    }
88
89    /**
90     * Update the specified resource in storage.
91     *
92     * @param  \Illuminate\Http\Request  $request
93     * @return \Illuminate\Http\Response
94     */
95    public function update(Request $request, $id)
96    {
97        $request->validate([
98            'name' => 'required|max:255',
99            'fiscal_year_date_at' => 'required|max:255',
100            'users' => 'nullable|array'
101        ]);
102
103        try {
104            // not need to update
105            $company = Company::findOrFail($id);
106            $company->name = $request->name;
107            $company->fiscal_year_date_at = $request->fiscal_year_date_at;
108            $company->save();
109
110            if ($request->users) {
111                $company->users()->sync($request->users);
112            } else {
113                $company->users()->sync([$this->userId]);
114            }
115        } catch (\Exception $e) {
116            return response()->json(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
117        }
118
119        Redis::publish('comptability', json_encode(['action' => 'update-company']));
120
121        return response(['status' => 'ok'], Response::HTTP_OK);
122    }
123
124    /**
125     * Remove the specified resource from storage.
126     *
127     * @return \Illuminate\Http\Response
128     */
129    public function destroy($id)
130    {
131        try {
132            $company = Company::find($id);
133            $company->users()->sync([]);
134            $company->delete();
135
136        } catch (\Exception $e) {
137            return response()->json(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
138        }
139
140        Redis::publish('comptability', json_encode(['action' => 'update-company']));
141
142        return response(['status' => 'ok'], Response::HTTP_OK);
143    }
144}