This repository was archived by the owner on Oct 14, 2024. It is now read-only.
forked from crater-invoice-inc/crater
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCompanyController.php
143 lines (116 loc) · 4.19 KB
/
CompanyController.php
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
134
135
136
137
138
139
140
141
142
143
<?php
namespace Crater\Http\Controllers\V1\Admin\Settings;
use Crater\Http\Controllers\Controller;
use Crater\Http\Requests\AvatarRequest;
use Crater\Http\Requests\CompanyLogoRequest;
use Crater\Http\Requests\CompanyRequest;
use Crater\Http\Requests\ProfileRequest;
use Crater\Http\Resources\CompanyResource;
use Crater\Http\Resources\UserResource;
use Crater\Models\Company;
use Illuminate\Http\Request;
class CompanyController extends Controller
{
/**
* Retrive the Admin account.
* @return \Illuminate\Http\JsonResponse
*/
public function getUser(Request $request)
{
return new UserResource($request->user());
}
/**
* Update the Admin profile.
* Includes name, email and (or) password
*
* @param \Crater\Http\Requests\ProfileRequest $request
* @return \Illuminate\Http\JsonResponse
*/
public function updateProfile(ProfileRequest $request)
{
$user = $request->user();
$user->update($request->validated());
return new UserResource($user);
}
/**
* Update Admin Company Details
* @param \Crater\Http\Requests\CompanyRequest $request
* @return \Illuminate\Http\JsonResponse
*/
public function updateCompany(CompanyRequest $request)
{
$company = Company::find($request->header('company'));
$this->authorize('manage company', $company);
$company->update($request->getCompanyPayload());
$company->address()->updateOrCreate(['company_id' => $company->id], $request->address);
return new CompanyResource($company);
}
/**
* Upload the company logo to storage.
*
* @param \Crater\Http\Requests\CompanyLogoRequest $request
* @return \Illuminate\Http\JsonResponse
*/
public function uploadCompanyLogo(CompanyLogoRequest $request)
{
$company = Company::find($request->header('company'));
$this->authorize('manage company', $company);
$data = json_decode($request->company_logo);
if (isset($request->is_company_logo_removed) && (bool) $request->is_company_logo_removed) {
$company->clearMediaCollection('logo');
}
if ($data) {
$company = Company::find($request->header('company'));
if ($company) {
// Extract the file extension from the filename
$fileExtension = pathinfo($data->name, PATHINFO_EXTENSION);
// Define an array of allowed extensions
$allowedExtensions = ['gif', 'png', 'jpeg'];
// Check if the file extension is allowed
if (in_array($fileExtension, $allowedExtensions)) {
$company->clearMediaCollection('logo');
$company->addMediaFromBase64($data->data)
->usingFileName($data->name)
->toMediaCollection('logo');
return response()->json([
'success' => true,
]);
} else {
// File extension is not allowed
return response()->json([
'error' => 'Only .gif, .png, and .jpeg file extensions are allowed.',
], 400);
}
}
}
return response()->json([
'success' => true,
]);
}
/**
* Upload the Admin Avatar to public storage.
*
* @param \Crater\Http\Requests\AvatarRequest $request
* @return \Illuminate\Http\JsonResponse
*/
public function uploadAvatar(AvatarRequest $request)
{
$user = auth()->user();
if (isset($request->is_admin_avatar_removed) && (bool) $request->is_admin_avatar_removed) {
$user->clearMediaCollection('admin_avatar');
}
if ($user && $request->hasFile('admin_avatar')) {
$user->clearMediaCollection('admin_avatar');
$user->addMediaFromRequest('admin_avatar')
->toMediaCollection('admin_avatar');
}
if ($user && $request->has('avatar')) {
$data = json_decode($request->avatar);
$user->clearMediaCollection('admin_avatar');
$user->addMediaFromBase64($data->data)
->usingFileName($data->name)
->toMediaCollection('admin_avatar');
}
return new UserResource($user);
}
}