diff --git a/app/Console/Commands/BusinessStore.php b/app/Console/Commands/BusinessStore.php index 3670dc5..911c2c7 100644 --- a/app/Console/Commands/BusinessStore.php +++ b/app/Console/Commands/BusinessStore.php @@ -5,10 +5,13 @@ 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. * @@ -23,6 +26,15 @@ class BusinessStore extends Command */ protected $description = 'Create Business Structur and UserDetails'; + private $timeStart; + private $month; + private $year; + + private $sendCreditMail = false; + private $sendUpdateMail = true; + + + /** * Create a new command instance. * @@ -40,39 +52,139 @@ class BusinessStore extends Command */ public function handle() { - $day = (int) Setting::getContentBySlug('day-exectute-business-structur'); - $this->info('RUN Command BusinessStore on Day '. $day); + $executeDay = (int) Setting::getContentBySlug('day-exectute-business-structur'); + $this->info('RUN Command BusinessStore on Day: '. $executeDay); - $timeStart = microtime(true); - $this->info('RUN Command BusinessStore'); + $presentDay = (int) date('d'); + $this->info('RUN Command BusinessStore present Day: '. $presentDay); - $month = $this->argument('month'); - $year = $this->argument('year'); - if(!$month || !$year){ - $this->info('need arguments month & year'); + if($executeDay !== $presentDay){ + $this->info('NOT RUN Command BusinessStore is not present Day: '. $presentDay); return 0; } - //$this->info('month: '.$month.' year:'.$year); - for($i = 1; $i<=6; $i++){ + $this->timeStart = microtime(true); + //$this->info('RUN Command BusinessStore'); + $this->month = $this->argument('month'); + $this->year = $this->argument('year'); + + + if(!$this->month || !$this->year){ + $this->month = (int) date("m", strtotime("-1 month", time())); + $this->year = (int) date("Y", strtotime("-1 month", time())); + } + + $this->info('RUN Command BusinessStore on month: '.$this->month.' | year: '.$this->year); + + //erstellt die Business Struktur und die Details + $this->storeBusinessStructureUsersDetailMonth(); + + //Struktur und die Details für mehrere Montate for / to month + //$this->storeBusinessStructureUsersDetailPeriod(1, 6); + + //erstellt die Gutschriften + //$this->userBusinessCommissionsToCredit(); + + //erstellt aus den Gutschriften die PDFs + //$this->userCreatePaymentCreditsPDF(); + + //update user Level + //$this->userLevelUpdate(); + return 0; + + //\Log::info('Cron is running'); + //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(); + + $diff = microtime(true) - $this->timeStart; + $sec = intval($diff); + $micro = $diff - $sec; + + $this->info('END Command storeBusinessStructureUsersDetailMonth: '.$bool. ' | Time: '.$sec. 'sec :' . round($micro * 1000, 4) . " ms"); + } + + 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_team_total.' | Shop: '.$ret->commission_shop_sales); + } + $diff = microtime(true) - $this->timeStart; + $sec = intval($diff); + $micro = $diff - $sec; + + $this->info('END Command userBusinessCommissionsToCredit: | Time: '.$sec. 'sec :' . round($micro * 1000, 4) . " ms"); + } + + 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); + } + + $diff = microtime(true) - $this->timeStart; + $sec = intval($diff); + $micro = $diff - $sec; + + $this->info('END Command userCreatePaymentCreditsPDF: | Time: '.$sec. 'sec :' . round($micro * 1000, 4) . " ms"); + } + + 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); + } + + } + $diff = microtime(true) - $this->timeStart; + $sec = intval($diff); + $micro = $diff - $sec; + + $this->info('END Command userLevelUpdate: | Time: '.$sec. 'sec :' . round($micro * 1000, 4) . " ms"); + } + + + private function storeBusinessStructureUsersDetailPeriod($for, $to){ + for($i = $for; $i<=$to; $i++){ $month = $i; - $this->info('month: '.$month.' year:'.$year); - $businessUsersStore = new BusinessUsersStore($month, $year); + $this->info('Store Business Structure Users Detail month: '.$month.' year:'.$this->year); + $businessUsersStore = new BusinessUsersStore($month, $this->year); $businessUsersStore->storeUserBusinessStructure(); $businessUsersStore->storeBusinessUsersDetail(); $bool = $businessUsersStore->storeBusinessCompleted(); - $diff = microtime(true) - $timeStart; + $diff = microtime(true) - $this->timeStart; $sec = intval($diff); $micro = $diff - $sec; - $this->info('BusinessStore: '.$bool. ' | Time: '.$sec. 'sec :' . round($micro * 1000, 4) . " ms"); + $this->info('Period BusinessStore: '.$bool. ' | Time: '.$sec. 'sec :' . round($micro * 1000, 4) . " ms"); } - + } - //$this->info('END Command BusinessStore: '.$bool. ' | Time: '.$sec. 'sec :' . round($micro * 1000, 4) . " ms"); - - // \Log::info('Cron is running'); - //return 0; - } } diff --git a/app/Cron/UserLevelUpdate.php b/app/Cron/UserLevelUpdate.php new file mode 100644 index 0000000..71df4f1 --- /dev/null +++ b/app/Cron/UserLevelUpdate.php @@ -0,0 +1,68 @@ +month = $month; + $this->year = $year; + } + + + public function getUserBusinessByMonthYear(){ + return UserBusiness::select('user_businesses.*') + ->where('user_businesses.month', '=', $this->month) + ->where('user_businesses.year', '=', $this->year) + ->where('user_businesses.next_qual_user_level', '!=', NULL) + ->get(); + } + + public function makeUserLevelUpdate(UserBusiness $userBusiness, $send_update_mail){ + $ret = false; + $nextQualUserLevel = $userBusiness->next_qual_user_level; + if(!isset($nextQualUserLevel['hasUpdated']) && $userBusiness->user){ + $userBusiness->user->m_level = $nextQualUserLevel['id']; + $userBusiness->user->save(); + $nextQualUserLevel['hasUpdated'] = 1; + $userBusiness->next_qual_user_level = $nextQualUserLevel; + $userBusiness->save(); + $ret = $nextQualUserLevel['id'].' '.$nextQualUserLevel['name']; + if($send_update_mail){ + self::sendUpdateMail($userBusiness->user, $userBusiness->total_qual_tp, $nextQualUserLevel['name']); + } + + } + return $ret; + } + + + private function sendUpdateMail(User $user, $tp, $to){ + $bcc = []; + $email = $user->email; + if(!$email){ + if($user->mode === 'test'){ + }else{ + $email = config('app.checkout_mail'); + } + } + if($user->mode === 'test'){ + $bcc[] = config('app.checkout_test_mail'); + }else{ + $bcc[] = config('app.checkout_mail'); + } + Mail::to($email)->bcc($bcc)->send(new MailUserLevelUpdate($tp, $to)); + } +} diff --git a/app/Cron/UserPaymentCredits.php b/app/Cron/UserPaymentCredits.php new file mode 100644 index 0000000..90ec5a6 --- /dev/null +++ b/app/Cron/UserPaymentCredits.php @@ -0,0 +1,87 @@ +month = $month; + $this->year = $year; + } + + + public function getUserBusinessByMonthYear(){ + return UserBusiness::select('user_businesses.*') + ->where('user_businesses.month', '=', $this->month) + ->where('user_businesses.year', '=', $this->year) + ->where(function($q) { + return $q->where('user_businesses.commission_team_total', '>', 0) + ->orWhere('user_businesses.commission_shop_sales', '>', 0); + }) + ->get(); + } + + public function addUserCreditItem($userBusiness) + { + $date = HTMLHelper::getMonth($userBusiness->month).' '.$userBusiness->year; + + if($userBusiness->commission_shop_sales > 0){ + if($this->hasNotUserCreditItem($userBusiness, 1)){ + UserCreditItem::create([ + 'user_id' => $userBusiness->user_id, + 'user_business_id' => $userBusiness->id, + 'credit' => $userBusiness->commission_shop_sales, + 'message' => 'Provision Shop '.$date, + 'status' => 1, + ]); + } + } + if($userBusiness->commission_team_total > 0){ + if($this->hasNotUserCreditItem($userBusiness, 2)){ + UserCreditItem::create([ + 'user_id' => $userBusiness->user_id, + 'user_business_id' => $userBusiness->id, + 'credit' => $userBusiness->commission_team_total, + 'message' => 'Provision Team '.$date, + 'status' => 2, + ]); + } + } + return $userBusiness; + + } + + public function getUserCreditItemUsersByMonthYear(){ + return UserCreditItem::select('user_credit_items.*') + ->where('paid', '=', false) + ->groupBy('user_id') + ->get(); + } + + public function makeCreditPaymentPDF($user_id, $credit_send_mail) + { + //$user_id = 2; + $user = User::findOrFail($user_id); + $data = []; + if($credit_send_mail){ + $data['credit_send_mail'] = true; + } + $credit_repo = new CreditRepository($user); + return $credit_repo->create($data); + } + + private function hasNotUserCreditItem($userBusiness, $status){ + return (UserCreditItem::where('user_business_id', $userBusiness->id) + ->where('user_id', $userBusiness->user_id)->where('status', $status)->count() > 0) ? false : true; + } +} diff --git a/app/Http/Controllers/Api/KasController.php b/app/Http/Controllers/Api/KasController.php index fad930b..4a12020 100755 --- a/app/Http/Controllers/Api/KasController.php +++ b/app/Http/Controllers/Api/KasController.php @@ -78,8 +78,8 @@ class KasController extends Controller ]); $this->CredentialToken = $SoapLogon->KasAuth(json_encode(array( 'KasUser' => $this->kas_user, - 'KasAuthType' => 'sha1', - 'KasPassword' => sha1($this->kas_pass), + 'KasAuthType' => 'plain', + 'KasPassword' => $this->kas_pass, 'SessionLifeTime' => $this->session_lifetime, 'SessionUpdateLifeTime' => $this->session_update_lifetime ))); diff --git a/app/Http/Controllers/Api/KasSLLController.php b/app/Http/Controllers/Api/KasSLLController.php index 450a27e..67e1477 100755 --- a/app/Http/Controllers/Api/KasSLLController.php +++ b/app/Http/Controllers/Api/KasSLLController.php @@ -55,18 +55,18 @@ diQ860kC4h++erAa8dvB1DUG5oldYYPiEKOyyyn+tNU298QcEkLrG1JcLuUXpfTg 8dPIr+VpGomsvpwGTfJFjlE= -----END PRIVATE KEY-----"; private static $ssl_certificate_sni_crt = "-----BEGIN CERTIFICATE----- -MIIGLzCCBRegAwIBAgIRAJ6HzyfKXWCtRn3q9gGkgYEwDQYJKoZIhvcNAQELBQAw +MIIGMTCCBRmgAwIBAgIRANRDAE1KIec3seJ9ed+Qy4UwDQYJKoZIhvcNAQELBQAw gY8xCzAJBgNVBAYTAkdCMRswGQYDVQQIExJHcmVhdGVyIE1hbmNoZXN0ZXIxEDAO BgNVBAcTB1NhbGZvcmQxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDE3MDUGA1UE AxMuU2VjdGlnbyBSU0EgRG9tYWluIFZhbGlkYXRpb24gU2VjdXJlIFNlcnZlciBD -QTAeFw0yMTA3MjIwMDAwMDBaFw0yMjA3MjIyMzU5NTlaMBgxFjAUBgNVBAMMDSou +QTAeFw0yMjA3MTIwMDAwMDBaFw0yMzA4MTIyMzU5NTlaMBgxFjAUBgNVBAMMDSou bWl2aXRhLmNhcmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCVOhtO TJBn5V9SmHmo/EawNiO0VwHOVnnrfnaPD2A1DeKqHmAfMTaybHaCfi+mufV8veem fY1j6rXq7RFU46SMBbFlfZqKS/3zb2d3yRT7OBU83PV5P8JXHrqEArlmKiOZcPoj 86TTAbq5wwxjFXkePzJSdOdUN/Z1E1tI8ieUQC40tpMsRvf5XOzQZousXBT1P6F9 Q2FbUKEfiEBJ0wjnz74a73U7DebuYGEFPSjVjrkVB11+55y1MBkwg/6JIro+BlXo rW6Xaifb1PKFbTFQnlC4BAKyPHxNKWZCSHgw/C3A7fBQKHM1wVhZo2BZrumdE+X1 -FOScWlN+M/+TyUybAgMBAAGjggL6MIIC9jAfBgNVHSMEGDAWgBSNjF7EVK2K4Xfp +FOScWlN+M/+TyUybAgMBAAGjggL8MIIC+DAfBgNVHSMEGDAWgBSNjF7EVK2K4Xfp m/mbBeG4AY1h4TAdBgNVHQ4EFgQUCS0Y1v7p19isO7cTuP3YrKVr2OcwDgYDVR0P AQH/BAQDAgWgMAwGA1UdEwEB/wQCMAAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsG AQUFBwMCMEkGA1UdIARCMEAwNAYLKwYBBAGyMQECAgcwJTAjBggrBgEFBQcCARYX @@ -74,21 +74,21 @@ aHR0cHM6Ly9zZWN0aWdvLmNvbS9DUFMwCAYGZ4EMAQIBMIGEBggrBgEFBQcBAQR4 MHYwTwYIKwYBBQUHMAKGQ2h0dHA6Ly9jcnQuc2VjdGlnby5jb20vU2VjdGlnb1JT QURvbWFpblZhbGlkYXRpb25TZWN1cmVTZXJ2ZXJDQS5jcnQwIwYIKwYBBQUHMAGG F2h0dHA6Ly9vY3NwLnNlY3RpZ28uY29tMCUGA1UdEQQeMByCDSoubWl2aXRhLmNh -cmWCC21pdml0YS5jYXJlMIIBfAYKKwYBBAHWeQIEAgSCAWwEggFoAWYAdQBGpVXr -dfqRIDC1oolp9PN9ESxBdL79SbiFq/L8cP5tRwAAAXrNeYDBAAAEAwBGMEQCIFzd -+zLvEGolSmSaa7vaQxv63DuX5vHQggER6/Dh+jZGAiAcUn8AZjF7GQOd4LTzGMhU -KsGNyn6d3n4cJ9fy9BzRxAB1AEHIyrHfIkZKEMahOglCh15OMYsbA+vrS8do8JBi -lgb2AAABes15gIYAAAQDAEYwRAIgE0NFzvN7qEre8Bc1C8EsMHD+5PDyQHZRBJkN -OdxsH9MCIDBSFFZTheD2+nzbHm5WLvAI75xyUvyBx/LEy3XBtjulAHYAKXm+8J45 -OSHwVnOfY6V35b5XfZxgCvj5TV0mXCVdx4QAAAF6zXmAWwAABAMARzBFAiAbRPVk -w3AIzVF7gE0R3ZJgou7P4o9KL2yRgAaeGbbClgIhAPL86sD0GwPZ9ZsL31q07Y/S -1kq5ohBt907fOisMwI0HMA0GCSqGSIb3DQEBCwUAA4IBAQAaYeV2NtUM2HkxWbfd -3jVAs1PdBIYtktBpx7UwNphylqF4qlsZwV5XZxeD/K7mTW5tgNaHHrEjaOME/y1s -rWTIt1D+UUmDdiSgKfVF5gfajPFVepOcb5OC+ielevvnVJn/6Tqa/RNz0GstwMnB -3lBaoP7oGuBy2Ow3LG0+yO4Q0j82gIkOM15CsjY9ZK540HAXllxKGN29Yf+RDkqE -zRk4TE12MEW+Ugw6RxDSUCfKmev4iUAT9vq790OESAfOKY1zg/6hIF3noH1IFt1d -e0wVWz58KTXBqHsmxX3F1PUuT6NY+wRsVfnc8hR8mfJibJ0VL8wxjzScDXyHpZr/ -o3I7 +cmWCC21pdml0YS5jYXJlMIIBfgYKKwYBBAHWeQIEAgSCAW4EggFqAWgAdQCt9776 +fP8QyIudPZwePhhqtGcpXc+xDCTKhYY069yCigAAAYHxRovYAAAEAwBGMEQCIA3z +UR5BFV7bwBcdRhS8mru20uq36DNz3ILivZh9yl4CAiAUjDxqZBW0Po/0Rm0gumI1 +VBZfqMSDiA7Cr1peGN8B8wB3AHoyjFTYty22IOo44FIe6YQWcDIThU070ivBOlej +UutSAAABgfFGi6UAAAQDAEgwRgIhAN9s3/v2ygh1tfPQ8iX2dLZdOVxyuvC7bf15 +KP4NQyabAiEAz88hRBxRu3FifpLaYNjwxy1fRUc2luWfDdw+f31TOfoAdgDoPtDa +PvUGNTLnVyi8iWvJA9PL0RFr7Otp4Xd9bQa9bgAAAYHxRot7AAAEAwBHMEUCIQCQ +RYqkeiRlStQacqUjuw5435NqNDqDlydAVYgywX05pwIgdcFtcLMGevO/KRyUeuWw +8hYY6y1S7VYVdcFIuZVp5mswDQYJKoZIhvcNAQELBQADggEBAA0eEYSKcbgEPczo +ABXpVsfbmaZqPhAKqcqKeGUcmFo7JHVPRUyck8RAF+SravyaHhilygU727QG4oUt +riCewV39cKD2m7CO24WHe5+Fw8eslsJE+DBq/2WpLRJIGSWLl1r7WUELKQhqEYkr +DCpkDXpG+lsDIfc5DC4dPLSWc9ezObsS4KEMCMDw+bj5GMGV6dHQZxAnbyqi71+v +4+AOHpcYfe6v63w82M0YN5oTnaOukLVDgMXJ7WZP2op7atojB7DeM7k3+fj79kVJ +jUGlvHLdN9jsczEZGGxL3w5oIjC4HMK1U5kyzEFWpc8ZLg+YPvF8w15lbhIXG94l +JscmCFU= -----END CERTIFICATE-----"; private static $ssl_certificate_sni_bundle = "-----BEGIN CERTIFICATE----- MIIGEzCCA/ugAwIBAgIQfVtRJrR2uhHbdBYLvFMNpzANBgkqhkiG9w0BAQwFADCB diff --git a/app/Http/Controllers/BusinessCommissionController.php b/app/Http/Controllers/BusinessCommissionController.php new file mode 100644 index 0000000..cb4b89b --- /dev/null +++ b/app/Http/Controllers/BusinessCommissionController.php @@ -0,0 +1,169 @@ + 'nur Provisionen', 2 => 'alle']; + + + public function __construct() + { + $this->middleware('admin'); + } + + public function index() + { + + $filter_members = UserBusiness::join('users', 'user_id', '=', 'users.id') + ->groupBy('user_id')->join('user_accounts', 'account_id', '=', 'user_accounts.id') + ->select('users.id', 'users.email', 'user_accounts.first_name', 'user_accounts.last_name')->get(); + + + $this->setFilterVars(); + $data = [ + 'filter_months' => HTMLHelper::$months, + 'filter_years' => HTMLHelper::getYearRange(), + 'filter_members' => $filter_members, + 'filter_show' => $this->filter_show, + + ]; + return view('admin.business.commissions', $data); + } + + public function store(){ + $data = Request::all(); + + dd($data); + + return redirect(route('admin_business_commissions')); + } + + + private function setFilterVars(){ + + if(!session('commissions_filter_month')){ + session(['commissions_filter_month' => intval(date('m'))]); + } + if(!session('commissions_filter_year')){ + session(['commissions_filter_year' => intval(date('Y'))]); + } + if(!session('commissions_filter_show')){ + session(['commissions_filter_show' => 1]); + } + + session(['commissions_filter_member_id' => Request::get('commissions_filter_member_id')]); + + if(Request::get('commissions_filter_month')){ + session(['commissions_filter_month' => Request::get('commissions_filter_month')]); + } + if(Request::get('commissions_filter_year')){ + session(['commissions_filter_year' => Request::get('commissions_filter_year')]); + } + if(Request::get('commissions_filter_show')){ + session(['commissions_filter_show' => Request::get('commissions_filter_show')]); + } + } + + private function initSearch() + { + $this->setFilterVars(); + + $query = UserBusiness::select('user_businesses.*') + ->where('user_businesses.month', '=', Request::get('commissions_filter_month')) + ->where('user_businesses.year', '=', Request::get('commissions_filter_year')); + + if(intval(Request::get('commissions_filter_show')) === 1){ + $query->where(function($q) { + return $q->where('user_businesses.commission_team_total', '>', 0) + ->orWhere('user_businesses.commission_shop_sales', '>', 0); + }); + } + + if(Request::get('commissions_filter_member_id')){ + $query->where('user_businesses.user_id', '=', Request::get('commissions_filter_member_id')); + } + + return $query; + } + + public function datatable(){ + + $query = $this->initSearch(); + return \DataTables::eloquent($query) + /* ->addColumn('id', function (UserSalesVolume $UserSalesVolume) { + return ''; + })*/ + + + ->addColumn('commission_total', function (UserBusiness $UserBusiness) { + $commission_total = $UserBusiness->commission_team_total + $UserBusiness->commission_shop_sales; + return $commission_total > 0 ? + ''.formatNumber($commission_total).' €' + : $commission_total.' €'; + }) + ->addColumn('commission_team_total', function (UserBusiness $UserBusiness) { + return $UserBusiness->commission_team_total > 0 ? + ''.formatNumber($UserBusiness->commission_team_total).' €' + : $UserBusiness->commission_team_total.' €'; + }) + ->addColumn('commission_shop_sales', function (UserBusiness $UserBusiness) { + return $UserBusiness->commission_shop_sales > 0 ? + ''.formatNumber($UserBusiness->commission_shop_sales).' €' + : $UserBusiness->commission_shop_sales.' €'; + }) + ->addColumn('active_account', function (UserBusiness $userBusiness) { + return get_active_badge($userBusiness->active_account); + }) + ->addColumn('payment_account_date', function (UserBusiness $userBusiness) { + return $userBusiness->active_date ? formatDate($userBusiness->active_date) : "-"; + }) + + /* ->filterColumn('m_account', function($query, $keyword) { + if($keyword != ""){ + $query->whereRaw("m_account LIKE ?", '%'.$keyword.'%'); + } + }) + ->filterColumn('first_name', function($query, $keyword) { + if($keyword != ""){ + $query->whereRaw("first_name LIKE ?", '%'.$keyword.'%'); + } + }) + ->filterColumn('last_name', function($query, $keyword) { + if($keyword != ""){ + $query->whereRaw("last_name LIKE ?", '%'.$keyword.'%'); + } + }) + ->filterColumn('email', function($query, $keyword) { + if($keyword != ""){ + $query->whereRaw("email LIKE ?", '%'.$keyword.'%'); + } + })*/ + + ->orderColumn('id', 'id $1') + ->orderColumn('commission_team_total', 'commission_team_total $1') + ->orderColumn('commission_shop_sales', 'commission_shop_sales $1') + ->orderColumn('email', 'users.email $1') + ->orderColumn('m_account', 'm_account $1') + ->orderColumn('first_name', 'first_name $1') + ->orderColumn('last_name', 'last_name $1') + ->rawColumns(['id', 'commission_total', 'commission_team_total', 'commission_shop_sales', 'active_account']) + ->make(true); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/BusinessController.php b/app/Http/Controllers/BusinessController.php index a8bb9a1..add5231 100644 --- a/app/Http/Controllers/BusinessController.php +++ b/app/Http/Controllers/BusinessController.php @@ -15,6 +15,9 @@ class BusinessController extends Controller { private $filter_active = [1 => 'aktiv', 2 => 'nicht aktiv', 3 => 'alle']; + private $month; + private $year; + public function __construct() { $this->middleware('admin'); @@ -170,11 +173,11 @@ class BusinessController extends Controller }) ->addColumn('sales_volume_points', function (UserBusiness $userBusiness) { return '
'.$userBusiness->sales_volume_points_sum.'
'. - 'B: '.$userBusiness->sales_volume_points.' | S: '.$userBusiness->sales_volume_points_shop.''; + 'E: '.$userBusiness->sales_volume_points.' | S: '.$userBusiness->sales_volume_points_shop.''; }) ->addColumn('sales_volume_total', function (UserBusiness $userBusiness) { return '
'.formatNumber($userBusiness->sales_volume_total_sum).' €
'. - 'B: '.formatNumber($userBusiness->sales_volume_total).' | S: '.formatNumber($userBusiness->sales_volume_total_shop).''; + 'E: '.formatNumber($userBusiness->sales_volume_total).' | S: '.formatNumber($userBusiness->sales_volume_total_shop).''; }) ->addColumn('email', function (UserBusiness $userBusiness) { return $userBusiness->email; @@ -214,7 +217,34 @@ class BusinessController extends Controller ->addColumn('payment_account_date', function (UserBusiness $userBusiness) { return $userBusiness->active_date ? formatDate($userBusiness->active_date) : "-"; }) + + + ->filterColumn('m_account', function($query, $keyword) { + if($keyword != ""){ + $query->whereRaw("m_account LIKE ?", '%'.$keyword.'%'); + } + }) + ->filterColumn('first_name', function($query, $keyword) { + if($keyword != ""){ + $query->whereRaw("first_name LIKE ?", '%'.$keyword.'%'); + } + }) + ->filterColumn('last_name', function($query, $keyword) { + if($keyword != ""){ + $query->whereRaw("last_name LIKE ?", '%'.$keyword.'%'); + } + }) + ->filterColumn('email', function($query, $keyword) { + if($keyword != ""){ + $query->whereRaw("email LIKE ?", '%'.$keyword.'%'); + } + }) + ->orderColumn('id', 'id $1') + ->orderColumn('m_account', 'm_account $1') + ->orderColumn('email', 'email $1') + ->orderColumn('first_name', 'first_name $1') + ->orderColumn('last_name', 'last_name $1') ->orderColumn('active_account', 'payment_account $1') ->rawColumns(['id', 'is_qual_kp', 'sales_volume_points', 'sales_volume_total', 'sponsor', 'active_account']) ->make(true); @@ -224,13 +254,16 @@ class BusinessController extends Controller { $this->setFilterVars(); - $query = 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.payment_account', "!=", null); + $query = User::join('user_accounts', 'account_id', '=', 'user_accounts.id') + ->select('users.*', 'user_accounts.m_account', 'user_accounts.first_name', 'user_accounts.last_name') + ->where('users.deleted_at', '=', null) + ->where('users.id', '!=', 1) + ->where('users.admin', "<", 4) + ->where('users.m_level', "!=", null) + ->where('users.payment_account', "!=", null); + // $query = User::with('account')->select('users.*') + if(Request::get('business_user_filter_active')){ if(Request::get('business_user_filter_active') == 1){ $query->where('users.payment_account', ">=", now()); @@ -256,8 +289,8 @@ class BusinessController extends Controller data-back="" data-modal="modal-xl" data-init_from="admin" - data-route="'.route('modal_load').'">' - .''; + data-route="'.route('modal_load').'">'; + //.''; }) ->addColumn('m_account', function (User $user) { return $user->account ? $user->account->m_account : ''; @@ -276,11 +309,11 @@ class BusinessController extends Controller }) ->addColumn('sales_volume_points', function (User $user) { return '
'.$user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_points_sum').'
'. - 'B: '.$user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_points').' | S: '.$user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_points_shop').''; + 'E: '.$user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_points').' | S: '.$user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_points_shop').''; }) ->addColumn('sales_volume_total', function (User $user) { return '
'.formatNumber($user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_total_sum')).' €
'. - 'B: '.formatNumber($user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_total')).' | S: '.formatNumber($user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_total_shop')).''; + 'E: '.formatNumber($user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_total')).' | S: '.formatNumber($user->getUserSalesVolumeBy($this->month, $this->year, 'sales_volume_total_shop')).''; }) ->addColumn('email', function (User $user) { return $user->email; @@ -321,7 +354,32 @@ class BusinessController extends Controller ->addColumn('payment_account_date', function (User $user) { return $user->payment_account ? $user->getPaymentAccountDateFormat(false) : "-"; }) - ->orderColumn('id', 'id $1') + + ->filterColumn('m_account', function($query, $keyword) { + if($keyword != ""){ + $query->whereRaw("m_account LIKE ?", '%'.$keyword.'%'); + } + }) + ->filterColumn('first_name', function($query, $keyword) { + if($keyword != ""){ + $query->whereRaw("first_name LIKE ?", '%'.$keyword.'%'); + } + }) + ->filterColumn('last_name', function($query, $keyword) { + if($keyword != ""){ + $query->whereRaw("last_name LIKE ?", '%'.$keyword.'%'); + } + }) + ->filterColumn('email', function($query, $keyword) { + if($keyword != ""){ + $query->whereRaw("email LIKE ?", '%'.$keyword.'%'); + } + }) + ->orderColumn('id', 'm_account $1') + ->orderColumn('m_account', 'm_account $1') + ->orderColumn('first_name', 'first_name $1') + ->orderColumn('email', 'email $1') + ->orderColumn('last_name', 'last_name $1') ->orderColumn('active_account', 'payment_account $1') ->rawColumns(['id', 'is_qual_kp', 'sales_volume_points', 'sales_volume_total', 'sponsor', 'active_account']) ->make(true); diff --git a/app/Http/Controllers/BusinessPointsController.php b/app/Http/Controllers/BusinessPointsController.php index e345403..557f1ef 100644 --- a/app/Http/Controllers/BusinessPointsController.php +++ b/app/Http/Controllers/BusinessPointsController.php @@ -13,14 +13,9 @@ use App\Services\BusinessPlan\SalesPointsVolume; class BusinessPointsController extends Controller { - private $startYear; - private $endYear; - private $rangeYears; - private $activeYear; - public function __construct() { - $this->middleware('auth'); + $this->middleware('admin'); } public function index() @@ -68,34 +63,6 @@ class BusinessPointsController extends Controller dd($data); return redirect(route('admin_business_points')); - - // - - // - /* - $add_credit_error = false; - if(!isset($data['member_id']) || !$user = User::find($data['member_id'])){ - $add_credit_error = 'Vertriebspartner nicht gefunden'; - } - if(!isset($data['credit'])){ - $add_credit_error = 'Bitte Betrag eingeben'; - } - if(!isset($data['message'])){ - $add_credit_error = 'Bitte Mitteilung eingeben'; - } - if($add_credit_error){ - $data = $this->makeData(); - $data['add_credit_error'] = $add_credit_error; - return view('admin.payment.credit.index', $data); - } - - // $credit = Util::reFormatNumber($data['credit']); - //$credit = number_format($credit, 2, '.', ''); - - //Payment::addUserCreditMargin($user, $credit, 3, $data['message']); - \Session()->flash('alert-success', "Guthaben hinzugefügt"); - }*/ - } @@ -107,9 +74,9 @@ class BusinessPointsController extends Controller if(!session('points_filter_year')){ session(['points_filter_year' => intval(date('Y'))]); } - if(Request::get('points_filter_member_id')){ - session(['points_filter_member_id' => Request::get('points_filter_member_id')]); - } + + session(['points_filter_member_id' => Request::get('points_filter_member_id')]); + if(Request::get('points_filter_month')){ session(['points_filter_month' => Request::get('points_filter_month')]); } @@ -122,19 +89,15 @@ class BusinessPointsController extends Controller { $this->setFilterVars(); - $query = UserSalesVolume::with('user', 'user.account')->with('shopping_order')->select('user_sales_volumes.*') + //$query = UserSalesVolume::with('user', 'user.account')->with('shopping_order')->select('user_sales_volumes.*') + $query = UserSalesVolume::join('users', 'user_id', '=', 'users.id')->join('user_accounts', 'account_id', '=', 'user_accounts.id') + ->select('user_sales_volumes.*', 'users.email', 'user_accounts.m_account', 'user_accounts.first_name', 'user_accounts.last_name') ->where('user_sales_volumes.month', '=', Request::get('points_filter_month')) ->where('user_sales_volumes.year', '=', Request::get('points_filter_year')); if(Request::get('points_filter_member_id')){ $query->where('user_sales_volumes.user_id', '=', Request::get('points_filter_member_id')); } - - //->orderBy('created_at', 'DESC'); - /* $query = FlexHour::leftJoin("flex_hour_items", function($join) { - $join->on("flex_hour_items.flex_hour_id","=","flex_hours.id"); - $join->where("flex_hour_items.date","=", FlexHourItemBot::$date); - })*/ return $query; } @@ -165,28 +128,48 @@ class BusinessPointsController extends Controller ->addColumn('total_net', function (UserSalesVolume $UserSalesVolume) { return formatNumber($UserSalesVolume->total_net).' €'; }) - ->addColumn('first_name', function (UserSalesVolume $UserSalesVolume) { - return isset($UserSalesVolume->user) ? $UserSalesVolume->user->account->first_name : ''; - }) - ->addColumn('last_name', function (UserSalesVolume $UserSalesVolume) { - return isset($UserSalesVolume->user) ? $UserSalesVolume->user->account->last_name : ''; - }) - ->addColumn('email', function (UserSalesVolume $UserSalesVolume) { - return isset($UserSalesVolume->user) ? $UserSalesVolume->user->email : ''; - }) ->addColumn('status', function (UserSalesVolume $UserSalesVolume) { return ''.$UserSalesVolume->getStatusType().''; }) ->addColumn('message', function (UserSalesVolume $UserSalesVolume) { return ''.$UserSalesVolume->message.''; }) - + ->addColumn('info', function (UserSalesVolume $UserSalesVolume) { + return ''.$UserSalesVolume->info.''; + }) + + ->filterColumn('m_account', function($query, $keyword) { + if($keyword != ""){ + $query->whereRaw("m_account LIKE ?", '%'.$keyword.'%'); + } + }) + ->filterColumn('first_name', function($query, $keyword) { + if($keyword != ""){ + $query->whereRaw("first_name LIKE ?", '%'.$keyword.'%'); + } + }) + ->filterColumn('last_name', function($query, $keyword) { + if($keyword != ""){ + $query->whereRaw("last_name LIKE ?", '%'.$keyword.'%'); + } + }) + ->filterColumn('email', function($query, $keyword) { + if($keyword != ""){ + $query->whereRaw("email LIKE ?", '%'.$keyword.'%'); + } + }) + ->orderColumn('id', 'id $1') ->orderColumn('order', 'order $1') ->orderColumn('status', 'status $1') ->orderColumn('message', 'message $1') - - ->rawColumns(['id', 'order', 'status', 'message', 'total_net']) + ->orderColumn('info', 'info $1') + ->orderColumn('total_net', 'total_net $1') + ->orderColumn('email', 'email $1') + ->orderColumn('m_account', 'm_account $1') + ->orderColumn('first_name', 'first_name $1') + ->orderColumn('last_name', 'last_name $1') + ->rawColumns(['id', 'order', 'status', 'message', 'info', 'total_net']) ->make(true); } } \ No newline at end of file diff --git a/app/Http/Controllers/CronController.php b/app/Http/Controllers/CronController.php index 2a40d49..c34b719 100644 --- a/app/Http/Controllers/CronController.php +++ b/app/Http/Controllers/CronController.php @@ -41,7 +41,7 @@ class CronController extends Controller public function action($action = false, $key = false){ - if($key !== 'key'){ + if($key !== 'CqZHL79FwUCcy9pjvi'){ abort(404); } if($action === 'check_payments_account'){ @@ -269,4 +269,15 @@ class CronController extends Controller } + public function runCron($key) + { + if($key !== 'G8ZvEbnP8fEPfnWX4L'){ + abort(404); + } + exec("/bin/bash ../cron_script.sh 2>&1", $out, $result); + echo "Returncode: " .$result ."
"; + echo "Ausgabe des Scripts: " ."
"; + echo "
"; print_r($out);
+    }
+
 }
\ No newline at end of file
diff --git a/app/Http/Controllers/CustomerController.php b/app/Http/Controllers/CustomerController.php
index 6b0845c..71eced7 100755
--- a/app/Http/Controllers/CustomerController.php
+++ b/app/Http/Controllers/CustomerController.php
@@ -113,12 +113,15 @@ class CustomerController extends Controller
             }
 
             $shopping_user = ShoppingUser::findOrFail($id);
-            $data['has_buyed'] = true;
-            $data['subscribed'] = true;
-            if($shopping_user->auth_user_id > 0){
+            $data['has_buyed'] = isset($data['has_buyed']) ? true : false;
+            $data['subscribed'] = isset($data['subscribed']) ? true : false;
+                        //subscribed can only true when has_buyed ist active
+            $data['subscribed'] = $data['has_buyed'] ? $data['subscribed'] : false;
+
+          /*  if($shopping_user->auth_user_id > 0){
                 $data['has_buyed'] = true;
                 $data['subscribed'] = false;
-            }
+            }*/
             $data['same_as_billing'] = isset($data['same_as_billing']) ? true : false;
             $data['shipping_country_id'] = isset($data['shipping_country_id']) ? $data['shipping_country_id'] : $data['billing_country_id'];
             CustomerPriority::checkChangeOne($shopping_user, $data, true);
@@ -174,7 +177,7 @@ class CustomerController extends Controller
                                data-modal="modal-xl" 
                                data-route="'.route('modal_load').'"> Berater zuordnen';
                 }
-                if($ShoppingUser->member_id){
+                if($ShoppingUser->member){
                     return ''.$ShoppingUser->member->getFullName().'';
                 }
 
diff --git a/app/Http/Controllers/SalesController.php b/app/Http/Controllers/SalesController.php
index e0be060..1a4f776 100755
--- a/app/Http/Controllers/SalesController.php
+++ b/app/Http/Controllers/SalesController.php
@@ -279,7 +279,7 @@ class SalesController extends Controller
             })
             ->addColumn('member_id', function (ShoppingOrder $ShoppingOrder) {
                 if($ShoppingOrder->member_id) {
-                    return $ShoppingOrder->member_id ? '' . $ShoppingOrder->member->getFullName() . '' : '';
+                    return $ShoppingOrder->member ? '' . $ShoppingOrder->member->getFullName() . '' : 'gelöscht';
                 }
                 if($ShoppingOrder->shopping_user && $ShoppingOrder->shopping_user->is_like){
                     return '
+                            
+ + {!! Form::close() !!} + + @endif + + + + +
+ + @if(Yard::instance('shopping')->content()->count()) +

Warenkorb Summe

+ + +
+
+
+ +
+ {{ Yard::instance('shopping')->total() }} € + Zwischensumme: +
+
+ +
+ {{ Yard::instance('shopping')->getShippingCountryName() }} + Lieferland: +
+ + {{--
+ +
Lieferland:
+
+
+ +
+
+
--}} +
+ {{ Yard::instance('shopping')->shipping() }} € + Versandkosten: +
+
+ @if(Yard::instance('shopping')->getUserTaxFree()) +
+ {{ Yard::instance('shopping')->subtotalWithShipping() }} € + Summe netto: +
+ @else +
+ {{ Yard::instance('shopping')->subtotalWithShipping() }} € + Summe ohne MwSt: +
+
+ {{ Yard::instance('shopping')->taxWithShipping() }} € + zzgl. {{-- Yard::getTaxRate() --}} MwSt: +
+ @endif +
+ + {{ Yard::instance('shopping')->totalWithShipping() }} € + Gesamtsumme: + + zur Kasse +
+

Sie werden auf unseren checkout Server weitergeletet, die Verbindung ist mit SSL verschlüsselt.

+
+
+
+ @endif + +
+ +

+
+

Alle Preise inkl. gesetzl. Mehrwertsteuer zzgl. Versandkosten, wenn nicht anders beschrieben

+ + + + +@endsection \ No newline at end of file diff --git a/resources/views/web/templates/anforderungsprofil.blade.php b/resources/views/web/templates/anforderungsprofil.blade.php index b867160..e088b5f 100644 --- a/resources/views/web/templates/anforderungsprofil.blade.php +++ b/resources/views/web/templates/anforderungsprofil.blade.php @@ -45,12 +45,24 @@

-
+
+ @if(Request::get('youtube') === 'HScne8-4d60')
- +
+ @else +
+

Mit dem Laden des Youtube-Video akzeptieren Sie unsere Datenschutzerklärung / XII. Einbindung von Diensten und Inhalten Dritter

+ zur Datenschutzerklärung
+ akzeptieren und Youtube-Video laden +
+
+
+ +
+ @endif
+

@include('web.templates._content_contact') diff --git a/resources/views/web/templates/card.blade.php b/resources/views/web/templates/card.blade.php index c9f13d8..10b2d12 100644 --- a/resources/views/web/templates/card.blade.php +++ b/resources/views/web/templates/card.blade.php @@ -195,7 +195,9 @@

Du hast {{ Yard::instance('shopping')->count() }} Artikel in Deinem Warenkorb

- + @if(Yard::instance('shopping')->getShippingFree()) +
Versandkostenfrei ab {{ formatNumber(Yard::instance('shopping')->getShippingFree()) }} €**
+ @endif @if(Yard::instance('shopping')->content()->count()) @@ -269,6 +271,10 @@ @else * inkl. {{ number_format($row->taxRate, 0)}}% MwSt.% MwSt. @endif + @if(Yard::instance('shopping')->getShippingFree() && $row->options->no_free_shipping) +
**nicht versandkostenfrei + @endif +
diff --git a/resources/views/web/templates/versandkosten.blade.php b/resources/views/web/templates/versandkosten.blade.php index ebca744..56c5a49 100644 --- a/resources/views/web/templates/versandkosten.blade.php +++ b/resources/views/web/templates/versandkosten.blade.php @@ -7,8 +7,14 @@

Versandarten & Versandkosten


- -
+ @if(Yard::instance('shopping')->getShippingFree()) +
+
+

** Versandkostenfrei ab {{ formatNumber(Yard::instance('shopping')->getShippingFree()) }} €. Ausgenommen sind große, sperrige Artikel oder Artikel die eine spezielle Verpackung benötigen.

+
+
+ @endif + diff --git a/resources/views/web/user/layouts/application.blade.php b/resources/views/web/user/layouts/application.blade.php index 4b2fe50..f52520e 100644 --- a/resources/views/web/user/layouts/application.blade.php +++ b/resources/views/web/user/layouts/application.blade.php @@ -10,7 +10,7 @@ - + diff --git a/resources/views/web/user/layouts/includes/footer.blade.php b/resources/views/web/user/layouts/includes/footer.blade.php index 149d096..8f8e44a 100644 --- a/resources/views/web/user/layouts/includes/footer.blade.php +++ b/resources/views/web/user/layouts/includes/footer.blade.php @@ -108,6 +108,14 @@ @endif + @if(Yard::instance('shopping')->getShippingFree()) +
+
+

** Versandkostenfrei ab {{ formatNumber(Yard::instance('shopping')->getShippingFree()) }} €. Ausgenommen sind große, sperrige Artikel oder Artikel die eine spezielle Verpackung benötigen.

+
+
+ @endif + zum Warenkorb diff --git a/resources/views/web/user/start.blade.php b/resources/views/web/user/start.blade.php index 4e05507..58747ec 100644 --- a/resources/views/web/user/start.blade.php +++ b/resources/views/web/user/start.blade.php @@ -355,13 +355,22 @@ -
- +
+ @if(Request::get('youtube') === 'ChHAxy6SbkM')
- +
- + @else +
+

Mit dem Laden des Youtube-Video akzeptieren Sie unsere Datenschutzerklärung / XII. Einbindung von Diensten und Inhalten Dritter

+ zur Datenschutzerklärung
+ akzeptieren und Youtube-Video laden +
+
+
+ +
+ @endif
diff --git a/routes/web.php b/routes/web.php index 4f42905..7d7bd31 100755 --- a/routes/web.php +++ b/routes/web.php @@ -109,6 +109,8 @@ Route::domain(config('app.pre_url_main').config('app.domain').config('app.tld_ca Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_care'))->group(function () { Route::get('/cron/jobs/action/{action}/{key}', 'CronController@action')->name('cron_jobs_action'); + Route::get('/cron/jobs/run/{key}', 'CronController@runCron')->name('cron_jobs_run'); + Auth::routes(); Route::get('/logout', function(){ @@ -418,7 +420,6 @@ Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_car Route::get('/admin/business/user/detail/{id}', 'BusinessController@userDetail')->name('admin_business_user_detail'); Route::post('/admin/business/user/detail/{id}', 'BusinessController@userStore')->name('admin_business_user_detail'); - Route::get('/admin/business/user/datatable', 'BusinessController@userDatatable')->name('admin_business_user_datatable'); //payments points // Gutschreiben @@ -426,9 +427,11 @@ Route::domain(config('app.pre_url_crm').config('app.domain').config('app.tld_car Route::post('/admin/business/points/store', 'BusinessPointsController@store')->name('admin_business_points_store'); Route::get('/admin/business/points/datatable', 'BusinessPointsController@datatable')->name('admin_business_points_datatable'); + Route::get('/admin/business/commissions', 'BusinessCommissionController@index')->name('admin_business_commissions'); + Route::post('/admin/business/commissions', 'BusinessCommissionController@index')->name('admin_business_commissions'); - - + Route::post('/admin/business/commissions/store', 'BusinessCommissionController@store')->name('admin_business_commissions_store'); + Route::get('/admin/business/commissions/datatable', 'BusinessCommissionController@datatable')->name('admin_business_commissions_datatable'); });