-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
/
SettingFieldUpdated.php
83 lines (61 loc) · 1.94 KB
/
SettingFieldUpdated.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
<?php
namespace App\Listeners\Document;
use App\Events\Document\DocumentUpdated as Event;
use App\Models\Common\Company;
use App\Traits\Uploads;
use App\Traits\Documents;
use Illuminate\Support\Arr;
use Illuminate\Support\Str;
class SettingFieldUpdated
{
use Documents, Uploads;
/**
* Handle the event.
*
* @param $event
* @return void
*/
public function handle(Event $event)
{
$request = $event->request;
$document = $event->document;
if (! $request->has('setting')) {
return;
}
$type = $request->get('type');
$fields = $request->get('setting', []);
// remove company logo
if (Arr::exists($fields, 'company_logo') && ! Arr::has($fields['company_logo'], 'dropzone')) {
setting()->forget('company.logo');
}
foreach ($fields as $key => $value) {
if ($key == 'company_logo') {
if (Arr::has($value, 'dropzone')) {
continue;
}
setting()->set('company.logo', $value);
continue;
}
$real_key = $type . '.' . $key;
setting()->set($real_key, $value);
}
$files = $request->file('setting', []);
if ($files) {
$company = Company::find($document->company_id);
foreach ($files as $key => $value) {
// Upload attachment
$media = $this->getMedia($value, 'settings');
$real_key = $type . '.' . $key;
$company->attachMedia($media, Str::snake($real_key));
$value = $media->id;
if ($key == 'company_logo') {
setting()->set('company.logo', $value);
continue;
}
setting()->set($real_key, $value);
}
}
// Save all settings
setting()->save();
}
}