Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 47 |
|
0.00% |
0 / 8 |
CRAP | |
0.00% |
0 / 1 |
CompanyController | |
0.00% |
0 / 47 |
|
0.00% |
0 / 8 |
156 | |
0.00% |
0 / 1 |
__construct | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
licenses | |
0.00% |
0 / 6 |
|
0.00% |
0 / 1 |
2 | |||
companiesLicenses | |
0.00% |
0 / 5 |
|
0.00% |
0 / 1 |
2 | |||
update | |
0.00% |
0 / 7 |
|
0.00% |
0 / 1 |
2 | |||
info | |
0.00% |
0 / 5 |
|
0.00% |
0 / 1 |
6 | |||
group | |
0.00% |
0 / 6 |
|
0.00% |
0 / 1 |
6 | |||
delete | |
0.00% |
0 / 8 |
|
0.00% |
0 / 1 |
6 | |||
deleteCompanies | |
0.00% |
0 / 9 |
|
0.00% |
0 / 1 |
6 |
1 | <?php |
2 | |
3 | namespace App\Http\Controllers\v2\Company; |
4 | |
5 | use App\Http\Controllers\Controller; |
6 | use App\Http\Models\Admin\Company; |
7 | use App\Http\Requests\DeleteCompaniesRequest; |
8 | use App\Http\Requests\EditCompanyRequest; |
9 | use App\Http\Resources\CompanyInfo; |
10 | use App\Http\Resources\CompanyResource; |
11 | use App\Http\Services\Admin\Companies\CompanyLicensesService; |
12 | use App\Http\Services\Admin\Companies\CompanyService; |
13 | use App\Traits\AccountCenter\Reporting\ChartTrait; |
14 | use Illuminate\Foundation\Auth\SendsPasswordResetEmails; |
15 | use Illuminate\Http\JsonResponse; |
16 | use Illuminate\Http\Request; |
17 | use Symfony\Component\HttpKernel\Exception\UnprocessableEntityHttpException; |
18 | |
19 | class CompanyController extends Controller |
20 | { |
21 | use SendsPasswordResetEmails; |
22 | use ChartTrait; |
23 | |
24 | public function __construct( |
25 | private CompanyService $companyService, |
26 | private CompanyLicensesService $companyLicensesService, |
27 | ) {} |
28 | |
29 | public function licenses(Request $request) |
30 | { |
31 | $company_id = $request->company_id; |
32 | |
33 | $company_license = array_values($this->companyLicensesService->getCompanyLicenses($company_id)); |
34 | |
35 | return response()->json([ |
36 | 'success' => true, |
37 | 'licenses' => $company_license, |
38 | ], 200); |
39 | } |
40 | |
41 | public function companiesLicenses(): JsonResponse |
42 | { |
43 | $companies_licenses = $this->companyLicensesService->getAllCompaniesLicenses(); |
44 | |
45 | return response()->json([ |
46 | 'data' => $companies_licenses, |
47 | 'success' => true, |
48 | ]); |
49 | } |
50 | |
51 | public function update(EditCompanyRequest $request, Company $company): JsonResponse |
52 | { |
53 | $data = $request->validated(); |
54 | $result = $this->companyService->updateCompany($company, $data['company']); |
55 | |
56 | return response()->json([ |
57 | 'success' => true, |
58 | 'message' => "Company updated", |
59 | 'data' => new CompanyResource($result), |
60 | ]); |
61 | } |
62 | |
63 | public function info(Request $request): JsonResponse |
64 | { |
65 | $company = $this->companyService->getCompanyBySlug($request->slug); |
66 | |
67 | return response()->json([ |
68 | 'success' => true, |
69 | 'data' => filled($company) ? new CompanyInfo($company) : [], |
70 | ]); |
71 | } |
72 | |
73 | public function group(Request $request): JsonResponse |
74 | { |
75 | $company = $this->companyService->getCompanyBySlug($request->slug); |
76 | $group = $this->companyService->getGroupBySlug($company->id, $request->group_slug); |
77 | |
78 | return response()->json([ |
79 | 'success' => true, |
80 | 'data' => filled($group) ? $group : [], |
81 | ]); |
82 | } |
83 | |
84 | public function delete(Request $request, Company $company): JsonResponse |
85 | { |
86 | $admin = auth()->user(); |
87 | |
88 | if (!$admin instanceof \App\Http\Models\Auth\User) { |
89 | throw new UnprocessableEntityHttpException("User not authenticated"); |
90 | } |
91 | |
92 | $this->companyService->deleteCompany($company, $admin); |
93 | |
94 | return response()->json([ |
95 | 'success' => true, |
96 | 'message' => "Company deleted successfully", |
97 | ]); |
98 | } |
99 | |
100 | public function deleteCompanies(DeleteCompaniesRequest $request): JsonResponse |
101 | { |
102 | $admin = auth()->user(); |
103 | $data = $request->validated(); |
104 | |
105 | if (!$admin instanceof \App\Http\Models\Auth\User) { |
106 | throw new UnprocessableEntityHttpException("User not authenticated"); |
107 | } |
108 | |
109 | $this->companyService->deleteCompanies($data['companies'], $admin); |
110 | |
111 | return response()->json([ |
112 | 'success' => true, |
113 | 'message' => "Companies deleted successfully", |
114 | ]); |
115 | } |
116 | } |