230 lines
No EOL
8.8 KiB
PHP
Executable file
230 lines
No EOL
8.8 KiB
PHP
Executable file
<?php
|
|
|
|
|
|
namespace App\Http\Controllers\User;
|
|
use Auth;
|
|
use Request;
|
|
use App\User;
|
|
use App\Services\HTMLHelper;
|
|
use App\Exports\UserTeamExport;
|
|
use App\Models\UserSalesVolume;
|
|
use App\Http\Controllers\Controller;
|
|
use Maatwebsite\Excel\Facades\Excel;
|
|
use App\Services\BusinessPlan\ExportBot;
|
|
use App\Services\BusinessPlan\TreeCalcBot;
|
|
|
|
class TeamController extends Controller
|
|
{
|
|
|
|
public function __construct()
|
|
{
|
|
$this->middleware('active.account');
|
|
}
|
|
|
|
public function members()
|
|
{
|
|
$user = User::find(\Auth::user()->id);
|
|
if($user->isActiveShop() && $user->shop){
|
|
$shop_register_link = $user->shop->getSubdomain(false)."/reg";
|
|
}else{
|
|
$member_id = 'm'.($user->id + config('mivita.add_number_id'));
|
|
$shop_register_link = config('app.protocol').config('app.domain').config('app.tld_care').'/reg/'.$member_id;
|
|
}
|
|
$data = [
|
|
'shop_register_link' => $shop_register_link
|
|
];
|
|
return view('user.team.members', $data);
|
|
}
|
|
|
|
public function structure()
|
|
{
|
|
$user = User::find(\Auth::user()->id);
|
|
$this->setFilterVars();
|
|
$TreeCalcBot = new TreeCalcBot(session('team_user_filter_month'), session('team_user_filter_year'), 'member');
|
|
$TreeCalcBot->initStructureUser($user->id);
|
|
//for testing
|
|
//$TreeCalcBot->initUser(56);
|
|
$data = [
|
|
'filter_months' => HTMLHelper::$months,
|
|
'filter_years' => HTMLHelper::getYearRange(2022),
|
|
'TreeCalcBot' => $TreeCalcBot,
|
|
];
|
|
return view('user.team.structure', $data);
|
|
}
|
|
|
|
public function points()
|
|
{
|
|
$this->setFilterVars();
|
|
$user = User::find(\Auth::user()->id);
|
|
$userSalesVolume = $user->getUserSalesVolume(intval(session('team_user_points_filter_month')), intval(session('team_user_points_filter_year')), 'first');
|
|
$data = [
|
|
'userSalesVolume' => $userSalesVolume,
|
|
'filter_months' => HTMLHelper::$months,
|
|
'filter_years' => HTMLHelper::getYearRange(2022),
|
|
];
|
|
return view('user.team.points', $data);
|
|
}
|
|
|
|
public function export()
|
|
{
|
|
|
|
$user = User::find(\Auth::user()->id);
|
|
$ExportBot = new ExportBot('member');
|
|
$ExportBot->initStructureUser($user, 'list'); //tree or list
|
|
$data = [
|
|
'ExportBot' => $ExportBot,
|
|
];
|
|
return view('user.team.export', $data);
|
|
}
|
|
|
|
public function userTeamExport(){
|
|
|
|
if(Request::get('action') === "export"){
|
|
$user = User::find(\Auth::user()->id);
|
|
$ExportBot = new ExportBot('member');
|
|
$ExportBot->initStructureUser($user, 'list'); //tree or list
|
|
$columns = [];
|
|
$filename = "mivita-mein-team-export-".date('Y-m-d-H-i-s');
|
|
$headers = array(
|
|
'Line',
|
|
'Level',
|
|
'E-Mail',
|
|
'Vorname',
|
|
'Nachname',
|
|
'Adresse',
|
|
'Zusatz',
|
|
'PLZ',
|
|
'Ort',
|
|
'Land',
|
|
'Tel',
|
|
'Mobil',
|
|
'Geburtstag',
|
|
'Account',
|
|
'Account bis',
|
|
'Sponsor',
|
|
);
|
|
if(isset($ExportBot->user_list->childs)){
|
|
foreach ($ExportBot->user_list->childs as $child){
|
|
$columns[] = array(
|
|
'Line' => $child->line,
|
|
'Level' => $child->level_name,
|
|
'E-Mail' => $child->email,
|
|
'Vorname' => $child->first_name,
|
|
'Nachname' => $child->last_name,
|
|
'Adresse' => $child->address,
|
|
'Zusatz' => $child->address_2,
|
|
'PLZ' => $child->zipcode,
|
|
'Ort' => $child->city,
|
|
'Land' => $child->country_id,
|
|
'Tel' => $child->phone,
|
|
'Mobil' => $child->mobil,
|
|
'Geburtstag' => $child->birthday,
|
|
'Account' => ($child->active_account == 1 ? 'JA' : 'NEIN'),
|
|
'Account bis' => $child->payment_account_date,
|
|
'Sponsor' => $child->sponsor_name,
|
|
);
|
|
}
|
|
}
|
|
return Excel::download(new UserTeamExport($columns, $headers), $filename.'.xls');
|
|
}
|
|
}
|
|
|
|
private function setFilterVars(){
|
|
|
|
if(!session('team_user_filter_month')){
|
|
session(['team_user_filter_month' => intval(date('m'))]);
|
|
}
|
|
if(!session('team_user_filter_year')){
|
|
session(['team_user_filter_year' => intval(date('Y'))]);
|
|
}
|
|
if(!session('team_user_points_filter_month')){
|
|
session(['team_user_points_filter_month' => intval(date('m'))]);
|
|
}
|
|
if(!session('team_user_points_filter_year')){
|
|
session(['team_user_points_filter_year' => intval(date('Y'))]);
|
|
}
|
|
|
|
if(Request::get('team_user_filter_month')){
|
|
session(['team_user_filter_month' => Request::get('team_user_filter_month')]);
|
|
}
|
|
if(Request::get('team_user_filter_year')){
|
|
session(['team_user_filter_year' => Request::get('team_user_filter_year')]);
|
|
}
|
|
|
|
if(Request::get('team_user_points_filter_month')){
|
|
session(['team_user_points_filter_month' => Request::get('team_user_points_filter_month')]);
|
|
}
|
|
if(Request::get('team_user_points_filter_year')){
|
|
session(['team_user_points_filter_year' => Request::get('team_user_points_filter_year')]);
|
|
}
|
|
}
|
|
|
|
private function initSearchPoints()
|
|
{
|
|
$this->setFilterVars();
|
|
|
|
$user_id = \Auth::user()->id;
|
|
$query = UserSalesVolume::with('user', 'user.account')->with('shopping_order')->select('user_sales_volumes.*')
|
|
->where('user_sales_volumes.user_id', '=', $user_id)
|
|
->where('user_sales_volumes.month', '=', Request::get('team_user_points_filter_month'))
|
|
->where('user_sales_volumes.year', '=', Request::get('team_user_points_filter_year'));
|
|
|
|
return $query;
|
|
}
|
|
|
|
|
|
public function datatablePoints(){
|
|
|
|
$query = $this->initSearchPoints();
|
|
return \DataTables::eloquent($query)
|
|
|
|
->addColumn('order', function (UserSalesVolume $UserSalesVolume) {
|
|
if($UserSalesVolume->shopping_order){
|
|
if($UserSalesVolume->status === 1 && $UserSalesVolume->shopping_order->auth_user_id === $UserSalesVolume->user_id){
|
|
return '<a href="' . route('user_order_detail', [$UserSalesVolume->shopping_order->id]) . '" class="btn btn-xs btn-primary">'.$UserSalesVolume->shopping_order->id.'</a>';
|
|
}
|
|
if(($UserSalesVolume->status === 2 || $UserSalesVolume->status === 3) && $UserSalesVolume->shopping_order->member_id === $UserSalesVolume->user_id){
|
|
return '<a href="' . route('user_shop_order_detail', [$UserSalesVolume->shopping_order->id]) . '" class="btn btn-xs btn-secondary">'.$UserSalesVolume->shopping_order->id.'</a>';
|
|
}
|
|
}
|
|
return '';
|
|
})
|
|
->addColumn('total_net', function (UserSalesVolume $UserSalesVolume) {
|
|
return formatNumber($UserSalesVolume->total_net).' €';
|
|
})
|
|
|
|
->addColumn('status', function (UserSalesVolume $UserSalesVolume) {
|
|
return '<span class="badge badge-pill badge-'.$UserSalesVolume->getStatusColor().'">'.$UserSalesVolume->getStatusType().'</span>';
|
|
})
|
|
->addColumn('message', function (UserSalesVolume $UserSalesVolume) {
|
|
return '<span class="no-line-break">'.$UserSalesVolume->message.'</span>';
|
|
})
|
|
->addColumn('info', function (UserSalesVolume $UserSalesVolume) {
|
|
return '<span class="no-line-break">'.$UserSalesVolume->info.'</span>';
|
|
})
|
|
|
|
->orderColumn('id', 'id $1')
|
|
->orderColumn('order', 'order $1')
|
|
->orderColumn('status', 'status $1')
|
|
->orderColumn('message', 'message $1')
|
|
->orderColumn('info', 'info $1')
|
|
|
|
->rawColumns(['id', 'order', 'status', 'message', 'info', 'total_net'])
|
|
->make(true);
|
|
}
|
|
|
|
public function load(){
|
|
|
|
$user = User::find(\Auth::user()->id);
|
|
$userSalesVolume = $user->getUserSalesVolume(intval(session('team_user_points_filter_month')), intval(session('team_user_points_filter_year')), 'first');
|
|
|
|
$data = [
|
|
'userSalesVolume' => $userSalesVolume,
|
|
];
|
|
$html = view('user.team._points_sum', $data)->render();
|
|
return response()->json(['response' => true, 'data'=>$data, 'html'=>$html]);
|
|
|
|
}
|
|
|
|
|
|
} |