172 lines
5.7 KiB
PHP
172 lines
5.7 KiB
PHP
<?php
|
|
|
|
namespace App\Console\Commands;
|
|
|
|
use App\Models\Setting;
|
|
use Illuminate\Console\Command;
|
|
use App\Cron\BusinessUsersStore;
|
|
use App\Cron\UserLevelUpdate;
|
|
use App\Cron\UserPaymentCredits;
|
|
|
|
class BusinessStore extends Command
|
|
{
|
|
/**
|
|
* ln -sfv /usr/bin/php73 /usr/bin/php
|
|
* php artisan business:store month year
|
|
* The name and signature of the console command.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $signature = 'business:store {month} {year}';
|
|
|
|
/**
|
|
* The console command description.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $description = 'Create Business Structur and UserDetails';
|
|
|
|
private $timeStart;
|
|
private $month;
|
|
private $year;
|
|
|
|
private $sendCreditMail = false;
|
|
private $sendUpdateMail = false;
|
|
|
|
|
|
|
|
/**
|
|
* Create a new command instance.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function __construct()
|
|
{
|
|
parent::__construct();
|
|
}
|
|
|
|
/**
|
|
* Execute the console command.
|
|
*
|
|
* @return int
|
|
*/
|
|
public function handle()
|
|
{
|
|
|
|
$executeDay = (int) Setting::getContentBySlug('day-exectute-business-structur');
|
|
$presentDay = (int) date('d');
|
|
|
|
$this->info('RUN Command BusinessStore on Day: '. $executeDay);
|
|
$this->info('RUN Command BusinessStore present Day: '. $presentDay);
|
|
|
|
if($executeDay !== $presentDay){
|
|
$this->info('NOT RUN Command BusinessStore is not present Day: '. $presentDay);
|
|
return 0;
|
|
}
|
|
|
|
$this->timeStart = microtime(true);
|
|
|
|
// Argumente mit Standardwerten für den Vormonat
|
|
$this->month = $this->argument('month') ?: (int) date("m", strtotime("-1 month"));
|
|
$this->year = $this->argument('year') ?: (int) date("Y", strtotime("-1 month"));
|
|
|
|
$this->info('RUN Command BusinessStore on month: '.$this->month.' | year: '.$this->year);
|
|
|
|
// Prozesse ausführen
|
|
$this->storeBusinessStructureUsersDetailMonth();
|
|
$this->userBusinessCommissionsToCredit();
|
|
|
|
// Auskommentierte Prozesse
|
|
// $this->userCreatePaymentCreditsPDF();
|
|
// $this->userLevelUpdate();
|
|
// $this->storeBusinessStructureUsersDetailPeriod(1, 6);
|
|
|
|
return 0;
|
|
}
|
|
|
|
private function storeBusinessStructureUsersDetailMonth(){
|
|
|
|
$this->info('storeBusinessStructureUsersDetailMonth month: '.$this->month.' year:'.$this->year);
|
|
$businessUsersStore = new BusinessUsersStore($this->month, $this->year);
|
|
$businessUsersStore->storeUserBusinessStructure();
|
|
$businessUsersStore->storeBusinessUsersDetail();
|
|
$bool = $businessUsersStore->storeBusinessCompleted();
|
|
|
|
$this->logExecutionTime('END Command storeBusinessStructureUsersDetailMonth: '.$bool);
|
|
|
|
}
|
|
|
|
private function userBusinessCommissionsToCredit(){
|
|
|
|
$this->info('userBusinessCommissionsToCredit month: '.$this->month.' year:'.$this->year);
|
|
$userPaymentCredits = new UserPaymentCredits($this->month, $this->year);
|
|
$userBusinesses = $userPaymentCredits->getUserBusinessByMonthYear();
|
|
|
|
foreach($userBusinesses as $userBusiness){
|
|
$ret = $userPaymentCredits->addUserCreditItem($userBusiness);
|
|
$this->info('userBusinessCredit: '.$ret->user_id.' : Team: '.$ret->commission_pp_total.' | Shop: '.$ret->commission_shop_sales);
|
|
}
|
|
$this->logExecutionTime('END Command userBusinessCommissionsToCredit:');
|
|
|
|
}
|
|
|
|
private function userCreatePaymentCreditsPDF(){
|
|
|
|
$this->info('userCreatePaymentCreditsPDF month: '.$this->month.' year:'.$this->year);
|
|
$userPaymentCredits = new UserPaymentCredits($this->month, $this->year);
|
|
$creditItemUsers = $userPaymentCredits->getUserCreditItemUsersByMonthYear();
|
|
|
|
foreach($creditItemUsers as $creditItemUser){
|
|
$bool = $userPaymentCredits->makeCreditPaymentPDF($creditItemUser->user_id, $this->sendCreditMail);
|
|
$this->info('creditsPDF: '.$bool.' user_id: '.$creditItemUser->user_id);
|
|
}
|
|
|
|
$this->logExecutionTime('END Command userCreatePaymentCreditsPDF:');
|
|
|
|
}
|
|
|
|
private function userLevelUpdate(){
|
|
|
|
$this->info('userLevelUpdate month: '.$this->month.' year:'.$this->year);
|
|
|
|
$userLevelUpdate = new UserLevelUpdate($this->month, $this->year);
|
|
$levelUpdateUsers = $userLevelUpdate->getUserBusinessByMonthYear();
|
|
|
|
foreach($levelUpdateUsers as $userBusiness){
|
|
$ret = $userLevelUpdate->makeUserLevelUpdate($userBusiness, $this->sendUpdateMail);
|
|
if($ret){
|
|
$this->info('updateLevel: '.$userBusiness->user->id.' | '.$userBusiness->user->email.' | '.
|
|
'from: '.$userBusiness->m_level_id.' '.$userBusiness->user_level_name.' | '.
|
|
'to: '.$ret);
|
|
}
|
|
|
|
}
|
|
$this->logExecutionTime('END Command userLevelUpdate:');
|
|
|
|
}
|
|
|
|
|
|
|
|
private function storeBusinessStructureUsersDetailPeriod($from, $to)
|
|
{
|
|
for($i = $from; $i <= $to; $i++){
|
|
$this->info('Store Business Structure Users Detail month: '.$i.' year:'.$this->year);
|
|
$businessUsersStore = new BusinessUsersStore($i, $this->year);
|
|
$businessUsersStore->storeUserBusinessStructure();
|
|
$businessUsersStore->storeBusinessUsersDetail();
|
|
$bool = $businessUsersStore->storeBusinessCompleted();
|
|
|
|
$this->logExecutionTime('Period BusinessStore: '.$bool);
|
|
}
|
|
}
|
|
|
|
private function logExecutionTime($message)
|
|
{
|
|
$diff = microtime(true) - $this->timeStart;
|
|
$sec = intval($diff);
|
|
$micro = $diff - $sec;
|
|
|
|
$this->info($message. ' | Time: '.$sec. 'sec :' . round($micro * 1000, 4) . " ms");
|
|
}
|
|
|
|
}
|