#51 Festschreiben der Points, Gutschriftenmodul

This commit is contained in:
Kevin Adametz 2022-07-29 18:18:05 +02:00
parent dfd049aaa9
commit 3f2fbd6d5b
63 changed files with 4610 additions and 971 deletions

View file

@ -0,0 +1,133 @@
<?php
namespace App\Http\Controllers\User;
use Carbon;
use Request;
use App\User;
use App\Services\Credit;
use App\Models\UserCredit;
use App\Models\UserPayCredit;
use App\Models\UserCreditItem;
use App\Http\Controllers\Controller;
class PaymentController extends Controller
{
private $startYear;
private $endYear;
private $rangeYears;
private $activeYear;
public function __construct()
{
$this->middleware('auth');
/* $this->startYear = 2021;
$this->endYear = date('Y');
$this->rangeYears = range($this->startYear, $this->endYear);
$this->activeYear = $this->endYear;*/
}
public function credit()
{
$user = \Auth::user();
$data = [
'user' => $user,
];
return view('user.payment.credit', $data);
}
public function credit_datatable(){
$user = \Auth::user();
$query = UserCredit::with('user', 'user.account')->select('user_credits.*')->where('user_id', $user->id);
return \DataTables::eloquent($query)
->addColumn('view', function (UserCredit $UserCredit) {
$ret = "";
if(Credit::isCredit($UserCredit)){
$ret .= '<a href="'.route('storage_file', [$UserCredit->id, 'credit', 'download']).'" class="btn btn-primary btn-xs"><i class="fa fa-download"></i></a> ';
$ret .= '<a href="'.route('storage_file', [$UserCredit->id, 'credit', 'stream']).'" target="_blank" class="btn btn-warning btn-xs"><i class="fa fa-eye"></i></a>';
}else{
$ret = "-";
}
return $ret;
})
->addColumn('total', function (UserCredit $UserCredit) {
return $UserCredit->getFormattedTotal()."";
})
->addColumn('credits', function (UserCredit $UserCredit) {
$ret = "";
if($UserCredit->user_credit_items){
foreach($UserCredit->user_credit_items as $user_credit_item){
$ret .= nl2br($user_credit_item->message)." / ".$user_credit_item->created_at->format('d.m.Y')."<br>";
}
}
return $ret;
})
->addColumn('status', function (UserCredit $UserCredit) {
return '<span class="badge badge-pill badge-'.$UserCredit->getStatusColor().'">'.$UserCredit->getStatusType().' <span class="ion ion-md-cash"></span></span>';
})
->orderColumn('id', 'id $1')
->orderColumn('status', 'status $1')
->orderColumn('total', 'total $1')
->rawColumns(['total', 'credits', 'status', 'view'])
->make(true);
}
public function credit_item_datatable(){
$user = \Auth::user();
$query = UserCreditItem::select('user_credit_items.*')->where('user_id', $user->id);
return \DataTables::eloquent($query)
->addColumn('message', function (UserCreditItem $user_credit_item) {
return nl2br($user_credit_item->message);
})
->addColumn('credit', function (UserCreditItem $user_credit_item) {
return formatNumber($user_credit_item->credit)."";
})
->addColumn('created_at', function (UserCreditItem $user_credit_item) {
return formatDate($user_credit_item->created_at);
})
->addColumn('status', function (UserCreditItem $user_credit_item) {
return '<span class="badge badge-pill badge-'.$user_credit_item->getStatusColor().'">'.$user_credit_item->getStatusType().'</span> ';
})
->addColumn('paid', function (UserCreditItem $user_credit_item) {
return ($user_credit_item->paid && $user_credit_item->user_credit) ?
'<span class="badge badge-pill badge-success"><i class="fa fa-check"></i> '.$user_credit_item->user_credit->full_number.'</span>'
: '<span class="badge badge-pill badge-warning"><i class="fa fa-times"></i></span>';
})
->orderColumn('message', 'message $1')
->orderColumn('credit', 'credit $1')
->orderColumn('created_at', 'created_at $1')
->orderColumn('status', 'status $1')
->rawColumns(['message', 'status', 'paid'])
->make(true);
}
/*private function setActiveYears(){
if(Request::get('filter_year')){
$this->activeYear = Request::get('filter_year');
}
}
public function revenue()
{
$this->setActiveYears();
$user = \Auth::user();
$data = [
'user' => $user,
'years' => $this->rangeYears,
'active_year' => $this->activeYear,
'months' => range(1, 12),
];
return view('user.payment.revenue', $data);
}*/
}

View file

@ -2,13 +2,13 @@
namespace App\Http\Controllers\User;
use Request;
use App\User;
use App\Services\HTMLHelper;
use App\Models\UserSalesVolume;
use App\Http\Controllers\Controller;
use App\Services\BusinessPlan\TreeCalcBot;
use Request;
use Auth;
class TeamController extends Controller
{
@ -38,18 +38,32 @@ class TeamController extends Controller
$user = User::find(\Auth::user()->id);
$this->setFilterVars();
$TreeCalcBot = new TreeCalcBot(session('team_user_filter_month'), session('team_user_filter_year'), 'member');
$TreeCalcBot->initUser($user->id);
$TreeCalcBot->initStructureUser($user->id);
//for testing
//$TreeCalcBot->initUser(56);
$data = [
'filter_months' => HTMLHelper::$months,
'filter_years' => HTMLHelper::getYearRange(2022),
'filter_years' => HTMLHelper::getYearRange(date('Y')),
'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(date('Y')),
];
return view('user.team.points', $data);
}
private function setFilterVars(){
if(!session('team_user_filter_month')){
@ -58,13 +72,90 @@ class TeamController extends Controller
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_year')){
session(['team_user_points_filter_year' => Request::get('team_user_points_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).' &euro;';
})
->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>';
})
->orderColumn('id', 'id $1')
->orderColumn('order', 'order $1')
->orderColumn('status', 'status $1')
->orderColumn('message', 'message $1')
->rawColumns(['id', 'order', 'status', 'message', '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]);
}