114 lines
4.1 KiB
PHP
114 lines
4.1 KiB
PHP
<?php
|
|
namespace App\Services\BusinessPlan;
|
|
|
|
use App\User;
|
|
use Carbon\Carbon;
|
|
|
|
|
|
class TreeUserItem
|
|
{
|
|
public $items = [];
|
|
private $date;
|
|
|
|
|
|
|
|
|
|
public function __construct($date)
|
|
{
|
|
$this->date = $date;
|
|
return $this;
|
|
}
|
|
|
|
public function makeUser(User $user){
|
|
|
|
$this->id = $user->id;
|
|
$this->m_level = $user->m_level;
|
|
$this->m_sponsor = $user->m_sponsor;
|
|
|
|
$this->user_level = $user->user_level ? $user->user_level->name : '';
|
|
$this->active_account = $user->payment_account ? Carbon::parse($user->payment_account)->gt(Carbon::parse($this->date->start_date)) : false;
|
|
$this->payment_account_date = $user->payment_account ? $user->getPaymentAccountDateFormat(false) : "-";
|
|
$this->active_date = $user->active_date ? $user->getActiveDateFormat() : "-";
|
|
|
|
$this->m_account = $user->account->m_account;
|
|
$this->email = $user->email;
|
|
$this->first_name = $user->account->first_name;
|
|
$this->last_name = $user->account->last_name;
|
|
$this->sales_volume_points = $user->getUserSalesVolumeBy($this->date->month, $this->date->year, 'sales_volume_points');
|
|
$this->sales_volume_points_shop = $user->getUserSalesVolumeBy($this->date->month, $this->date->year, 'sales_volume_points_shop');
|
|
$this->sales_volume_points_sum = $user->getUserSalesVolumeBy($this->date->month, $this->date->year, 'sales_volume_points_sum');
|
|
$this->sales_volume_total = $user->getUserSalesVolumeBy($this->date->month, $this->date->year, 'sales_volume_total');
|
|
$this->sales_volume_total_shop = $user->getUserSalesVolumeBy($this->date->month, $this->date->year, 'sales_volume_total_shop');
|
|
$this->sales_volume_total_sum = $user->getUserSalesVolumeBy($this->date->month, $this->date->year, 'sales_volume_total_sum');
|
|
|
|
if($user->user_level){
|
|
$this->margin = $user->user_level->margin;
|
|
$this->margin_shop = $user->user_level->margin_shop;
|
|
$this->qual_kp = $user->user_level->qual_kp;
|
|
$this->qual_tp = $user->user_level->qual_tp;
|
|
}else{
|
|
$this->margin = 0;
|
|
$this->margin_shop = 0;
|
|
$this->qual_kp = 0;
|
|
$this->qual_tp = 0;
|
|
}
|
|
}
|
|
|
|
public function addUserID(){
|
|
TreeCalcBot::addUserID($this->id);
|
|
}
|
|
|
|
public function isQualKP(){
|
|
return ($this->sales_volume_points_sum >= $this->qual_kp) ? true : false;
|
|
}
|
|
|
|
public function getRestQualKP(){
|
|
return $this->sales_volume_points_sum - $this->qual_kp;
|
|
}
|
|
|
|
public function checkSponsor(){
|
|
if($this->m_sponsor === null){
|
|
$this->m_sponsor_name = 'Keinen Sponsor zugewiesen';
|
|
return;
|
|
}
|
|
$user = User::find($this->m_sponsor);
|
|
if($user){
|
|
if($user->account){
|
|
$this->m_sponsor_name = 'Sponsor: '.$user->account->first_name.' '.$user->account->last_name.' | '.$user->email.' | '.$user->account->m_account;
|
|
}else{
|
|
$this->m_sponsor_name = 'Sponsor: '.$user->email;
|
|
}
|
|
return;
|
|
}
|
|
$this->m_sponsor_name = 'Sponsor wurde gelöscht.';
|
|
return;
|
|
}
|
|
|
|
public function readParentsUser(){
|
|
|
|
$users = User::with('account')->select('users.*')
|
|
->where('users.deleted_at', '=', null)
|
|
->where('users.id', '!=', 1)
|
|
->where('users.admin', "<", 4)
|
|
->where('users.m_level', "!=", null)
|
|
->where('users.m_sponsor', "=", $this->id) //<- need the id for parents / sponsors
|
|
->where('users.payment_account', "!=", null)
|
|
->where('users.active_date', "<=", $this->date->end_date)
|
|
->get();
|
|
|
|
if($users){
|
|
foreach($users as $user){
|
|
$TreeUserItem = new TreeUserItem($this->date);
|
|
$TreeUserItem->makeUser($user);
|
|
$TreeUserItem->addUserID();
|
|
$this->items[] = $TreeUserItem; }
|
|
}
|
|
|
|
foreach($this->items as $item){
|
|
$item->readParentsUser();
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|