Passed
Push — master ( 5c9089...a37889 )
by Georgi
05:25
created

DashboardCore   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Importance

Changes 4
Bugs 0 Features 1
Metric Value
eloc 28
c 4
b 0
f 1
dl 0
loc 51
rs 10
wmc 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A install() 0 10 1
A info() 0 7 1
A boot() 0 17 3
1
<?php
2
3
namespace Epesi\Base\Dashboard;
4
5
use Epesi\Core\System\Integration\Modules\ModuleCore;
6
use Epesi\Core\System\User\Database\Models\User;
7
use Epesi\Base\Dashboard\Database\Models\Dashboard;
8
9
class DashboardCore extends ModuleCore
10
{
11
	protected static $alias = 'dashboard';
12
	
13
	protected static $joints = [
14
			Integration\DashboardUserSettings::class,
15
			Integration\DashboardSystemSettings::class,
16
			Integration\DashboardNavMenu::class,
17
			Integration\DashboardHomePage::class
18
	];
19
	
20
	public function install()
21
	{
22
		// setup default dashboard
23
		Dashboard::create([
24
				'user_id' => 0,
25
				'name' => __('Admin Default')
26
		])->applets()->create([
27
				'class' => 'Epesi\\Applets\\Clock\\ClockApplet',
28
				'row' => 0,
29
				'column' => 3,
30
		]);
31
	}
32
	
33
	public static function info()
34
	{
35
		return [
36
				__('Author') => 'Georgi Hristov',
37
				__('Copyright') => 'X Systems Ltd',
38
				'',
39
				'Provides dashboard functionality'
40
		];
41
	}
42
	
43
	public static function boot()
44
	{
45
		// create user default dashboard as copy of the system default
46
		User::created(function(User $user) {
47
			if (! $defaultDashboard = Dashboard::where('user_id', 0)->first()) return;
48
			
49
			$userDefaultDashboard = $defaultDashboard->replicate();
50
			
51
			$userDefaultDashboard->name = __('Default');
52
			$userDefaultDashboard->user_id = $user->id;
53
			
54
			$userDefaultDashboard->save();
55
			
56
			foreach ($defaultDashboard->applets()->get() as $defaultApplet) {
57
				$userApplet = $defaultApplet->replicate();
58
				
59
				$userApplet->dashboard()->associate($userDefaultDashboard)->save();
60
			}
61
		});
62
	}
63
}
64