Ngiler SH3LL 360
Home
Information
Create File
Create Folder
:
/
home
/
tbf
/
cursbackend
/
database
/
seeds
/
Information Server
MySQL :
OFF
Perl :
OFF
CURL :
ON
WGET :
OFF
PKEXEC :
OFF
Directive
Local Value
IP Address
89.40.16.97
System
Linux server.atelieruldeit.ro 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64
User
tbf
PHP Version
7.3.33
Software
Apache
Doc root
Writable
close
Edit File :
DemoDataSeeder.php
| Size :
8.42
KB
Copy
<?php use Illuminate\Database\Seeder; use App\Models\Instance; use Webpatser\Uuid\Uuid; use Carbon\Carbon; use App\Models\Role; use App\Models\User; use App\Models\MasterGoal; use App\Models\Objective; use App\Models\KeyResult; use App\Models\KeyResultLog; class DemoDataSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { $json = config('demo_data'); $startDate = Carbon::now()->firstOfQuarter(); $endDate = Carbon::now()->lastOfQuarter(); // get or create instance $instance = Instance::find($json['instance']['id']); if(!$instance){ $json['instance']['created_at'] = $startDate; $instance = Instance::create($json['instance']); } // required in order to add promises and key result logs Session::put('instance_id', $instance->id); // create users foreach($json['users'] as $key => $user){ $existUser = User::where('email', $user['email'])->first(); if(!$existUser){ $user['slug'] = Str::slug($user['first_name'].' '.$user['last_name'], '-'); $user['password'] = bcrypt($user['password']); $user['role_id'] = $key == 0 ? Role::ROLE_ADMIN : 2; $user['working_days'] = "monday,tuesday,wednesday,thursday,friday"; $user['promise_time'] = "08:00"; $user['created_at'] = $startDate; $user['instance_id'] = $instance->id; User::insert($user); $createdUser = User::where('email', $user['email'])->first(); $createdUser->tags()->sync([$instance->tags->first()->id]); } } // get or create master goal parent $parentMasterGoal = MasterGoal::where('name', $json['master_goal_parent'])->where('instance_id',$instance->id)->first(); if(!$parentMasterGoal){ $json['master_goal_parent']['slug'] = Str::slug($json['master_goal_parent']['name'], '-'); $json['master_goal_parent']['uuid'] = (string) Uuid::generate(4); $json['master_goal_parent']['instance_id'] = $instance->id; $json['master_goal_parent']['created_at'] = $startDate; MasterGoal::insert($json['master_goal_parent']); $parentMasterGoal = MasterGoal::where('name', $json['master_goal_parent'])->first(); } // store all data from json structure foreach($json['data'] as $data){ // get or create master goal $masterGoal = MasterGoal::where('name', $data['master_goal']['name'])->where('instance_id',$instance->id)->first(); if(!$masterGoal){ $data['master_goal']['slug'] = Str::slug($data['master_goal']['name'], '-'); $data['master_goal']['uuid'] = (string) Uuid::generate(4); $data['master_goal']['instance_id'] = $instance->id; $data['master_goal']['master_goal_id'] = $parentMasterGoal->id; $data['master_goal']['created_at'] = $startDate; MasterGoal::insert($data['master_goal']); $masterGoal = MasterGoal::where('name', $data['master_goal']['name'])->first(); } // get or create objective $objective = Objective::where('name', $data['obiectiv']['name'])->where('instance_id',$instance->id)->first(); $responsibleId = User::where('email', $data['user_email'])->first()->id; if(!$objective){ $data['obiectiv']['slug'] = Str::slug($data['obiectiv']['name'], '-'); $data['obiectiv']['instance_id'] = $instance->id; $data['obiectiv']['master_goal_id'] = $masterGoal->id; $data['obiectiv']['created_at'] = $startDate; $data['obiectiv']['start_date'] = $startDate; $data['obiectiv']['end_date'] = $endDate; $data['obiectiv']['status'] = Objective::STATUS_ACTIVE; $data['obiectiv']['user_id'] = $responsibleId; Objective::insert($data['obiectiv']); $objective = Objective::where('name', $data['obiectiv']['name'])->first(); } // get or create key results foreach($data['key_results'] as $keyResultData){ $keyResult = KeyResult::where('name', $keyResultData['name'])->where('instance_id',$instance->id)->first(); if(!$keyResult){ $keyResult['created_at'] = $startDate; $keyResult['user_id'] = $responsibleId; $keyResult['instance_id'] = $instance->id; $keyResult['objective_id'] = $objective->id; $keyResult['description'] = $keyResultData['name']; $keyResult['start_date'] = $startDate; $keyResult['end_date'] = $endDate; $keyResult['status'] = KeyResult::STATUS_ACTIVE; $keyResult['measurement'] = '7'; $keyResult['progress_type'] = KeyResult::TYPE_GROW; $keyResult['uuid'] = (string) Uuid::generate(4); $keyResult['name'] = $keyResultData['name']; $keyResult['unity'] = $keyResultData['unity']; $keyResult['start_value'] = $keyResultData['start_value']; $keyResult['target'] = $keyResultData['target']; KeyResult::insert($keyResult); $keyResult = KeyResult::where('name', $keyResultData['name'])->where('instance_id',$instance->id)->first(); $keyResult->objective->update(['percent' => calculateObjectivePercentage($keyResult->objective)]); } // create key result logs foreach($keyResultData['key_result_logs'] as $key => $keyResultLog){ $keyResultLog['created_at'] = Carbon::parse($startDate)->addWeeks($key); $keyResultLog['key_result_id'] = $keyResult->id; $keyResultLog['user_id'] = $responsibleId; $keyResultLog['instance_id'] = $instance->id; $keyResultLog['state'] = $this->keyResultLogState($keyResult, $keyResultLog['value']); $keyResultLog['updated_on_date'] = $keyResult->checkIfNeedsUpdate() == $keyResult::TODAY_UPDATE ? 1 : 0; $lastKeyResultPercent = $keyResult->percent; // must be interogated before and with closure for 'diff_last_value' $lastKeyResultLog = $keyResult->lastKeyResultLog(); $lastKeyResultLogValue = $lastKeyResultLog ? $lastKeyResultLog->value : 0; $calculateKeyResultPercentage = calculateKeyResultPercentage($keyResultLog['value'], $keyResult); $keyResultLog['key_result_percent'] = $calculateKeyResultPercentage; $keyResultLog['objective_percent'] = calculateObjectivePercentage($keyResult->objective); $keyResultLog['diff_last_key_result_percent'] = $calculateKeyResultPercentage - $lastKeyResultPercent; $keyResultLog['diff_last_value'] = $keyResultLog['value'] - $lastKeyResultLogValue; KeyResultLog::insert($keyResultLog); $keyResult->update(['percent' => calculateKeyResultPercentage($keyResultLog['value'], $keyResult)]); } } } // must be at the end of promises or key result logs actions Session::forget('instance_id'); } public function keyResultLogState($keyResult, $keyResultLogValue){ $lastKeyResultLog = $keyResult->lastKeyResultLog(); if($keyResult->progress_type == $keyResult::TYPE_DECREASE){ if($lastKeyResultLog){ $state = $keyResultLogValue < $lastKeyResultLog->value ? KeyResultLog::STATE_ASCENDING : KeyResultLog::STATE_DESCENDING; }else{ $state = $keyResultLogValue < $keyResult->start_value ? KeyResultLog::STATE_ASCENDING : KeyResultLog::STATE_DESCENDING; } }else{ if($lastKeyResultLog){ $state = $lastKeyResultLog->value < $keyResultLogValue ? KeyResultLog::STATE_ASCENDING : KeyResultLog::STATE_DESCENDING; }else{ $state = $keyResult->start_value < $keyResultLogValue ? KeyResultLog::STATE_ASCENDING : KeyResultLog::STATE_DESCENDING; } } return $state; } }
Back