Companies.php
3.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<?php
namespace App\Http\Controllers\Api\Common;
use App\Http\Controllers\ApiController;
use App\Http\Requests\Common\Company as Request;
use App\Models\Common\Company;
use App\Transformers\Common\Company as Transformer;
use Dingo\Api\Routing\Helpers;
class Companies extends ApiController
{
use Helpers;
/**
* Display a listing of the resource.
*
* @return \Dingo\Api\Http\Response
*/
public function index()
{
$companies = app('Dingo\Api\Auth\Auth')->user()->companies()->get()->sortBy('name');
foreach ($companies as $company) {
$company->setSettings();
}
return $this->response->collection($companies, new Transformer());
}
/**
* Display the specified resource.
*
* @param Company $company
* @return \Dingo\Api\Http\Response
*/
public function show(Company $company)
{
// Check if user can access company
$companies = app('Dingo\Api\Auth\Auth')->user()->companies()->pluck('id')->toArray();
if (!in_array($company->id, $companies)) {
$this->response->errorUnauthorized();
}
$company->setSettings();
return $this->response->item($company, new Transformer());
}
/**
* Store a newly created resource in storage.
*
* @param $request
* @return \Dingo\Api\Http\Response
*/
public function store(Request $request)
{
// Clear settings
setting()->forgetAll();
$company = Company::create($request->all());
// Create settings
setting()->set([
'general.company_name' => $request->get('company_name'),
'general.company_email' => $request->get('company_email'),
'general.company_address' => $request->get('company_address'),
'general.default_currency' => $request->get('default_currency'),
'general.default_locale' => $request->get('default_locale', 'en-GB'),
]);
setting()->setExtraColumns(['company_id' => $company->id]);
setting()->save();
return $this->response->created(url('api/companies/'.$company->id));
}
/**
* Update the specified resource in storage.
*
* @param $company
* @param $request
* @return \Dingo\Api\Http\Response
*/
public function update(Company $company, Request $request)
{
// Check if user can access company
$companies = app('Dingo\Api\Auth\Auth')->user()->companies()->pluck('id')->toArray();
if (!in_array($company->id, $companies)) {
$this->response->errorUnauthorized();
}
// Update company
$company->update(['domain' => $request->get('domain')]);
// Update settings
setting()->forgetAll();
setting()->setExtraColumns(['company_id' => $company->id]);
setting()->load(true);
setting()->set([
'general.company_name' => $request->get('company_name'),
'general.company_email' => $request->get('company_email'),
'general.company_address' => $request->get('company_address'),
'general.default_currency' => $request->get('default_currency'),
'general.default_locale' => $request->get('default_locale', 'en-GB'),
]);
setting()->save();
return $this->response->item($company->fresh(), new Transformer());
}
/**
* Remove the specified resource from storage.
*
* @param Company $company
* @return \Dingo\Api\Http\Response
*/
public function destroy(Company $company)
{
// Check if user can access company
$companies = app('Dingo\Api\Auth\Auth')->user()->companies()->pluck('id')->toArray();
if (!in_array($company->id, $companies)) {
$this->response->errorUnauthorized();
}
$company->delete();
return $this->response->noContent();
}
}