178 lines
No EOL
7.3 KiB
PHP
178 lines
No EOL
7.3 KiB
PHP
<?php
|
|
|
|
|
|
namespace App\Http\Controllers;
|
|
use Carbon;
|
|
use Request;
|
|
use App\Services\Payment;
|
|
use App\Models\UserInvoice;
|
|
use App\Services\HTMLHelper;
|
|
use App\Models\UserSalesVolume;
|
|
use App\Services\BusinessPlan\SalesPointsVolume;
|
|
|
|
class BusinessPointsController extends Controller
|
|
{
|
|
|
|
public function __construct()
|
|
{
|
|
$this->middleware('admin');
|
|
}
|
|
|
|
public function index()
|
|
{
|
|
|
|
$filter_members = UserSalesVolume::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,
|
|
|
|
];
|
|
return view('admin.business.points', $data);
|
|
}
|
|
|
|
public function store(){
|
|
$data = Request::all();
|
|
if(!isset($data['action'])){
|
|
return back();
|
|
}
|
|
if(!isset($data['change_member_key']) || $data['change_member_key'] !== config('mivita.edit_data_pass')){
|
|
\Session()->flash('alert-error', 'Das Passwort ist falsch.');
|
|
return back();
|
|
}
|
|
if(!isset($data['is_checked_action'])){
|
|
\Session()->flash('alert-error', 'Änderung nicht bestätigt');
|
|
return back();
|
|
}
|
|
|
|
if($data['action'] === 'add_user_sales_volume'){
|
|
SalesPointsVolume::addSalesPointsVolume($data);
|
|
return back(); }
|
|
|
|
if($data['action'] === 'edit_user_sales_volume'){
|
|
SalesPointsVolume::editSalesPointsVolume($data);
|
|
return back();
|
|
|
|
}
|
|
|
|
dd($data);
|
|
|
|
return redirect(route('admin_business_points'));
|
|
}
|
|
|
|
|
|
private function setFilterVars(){
|
|
|
|
if(!session('points_filter_month')){
|
|
session(['points_filter_month' => intval(date('m'))]);
|
|
}
|
|
if(!session('points_filter_year')){
|
|
session(['points_filter_year' => intval(date('Y'))]);
|
|
}
|
|
|
|
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')]);
|
|
}
|
|
if(Request::get('points_filter_year')){
|
|
session(['points_filter_year' => Request::get('points_filter_year')]);
|
|
}
|
|
}
|
|
|
|
private function initSearch()
|
|
{
|
|
$this->setFilterVars();
|
|
|
|
//$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'));
|
|
}
|
|
return $query;
|
|
}
|
|
|
|
public function datatable(){
|
|
|
|
$query = $this->initSearch();
|
|
return \DataTables::eloquent($query)
|
|
->addColumn('id', function (UserSalesVolume $UserSalesVolume) {
|
|
return '<button type="button" class="btn btn-xs btn-secondary" data-toggle="modal" data-target="#modals-load-content"
|
|
data-id="'.$UserSalesVolume->id.'"
|
|
data-action="edit_user_sales_volume"
|
|
data-back=""
|
|
data-modal="modal-xl"
|
|
data-init_from="user"
|
|
data-route="'.route('modal_load').'"><span class="far fa-eye"></span></button>';
|
|
})
|
|
->addColumn('order', function (UserSalesVolume $UserSalesVolume) {
|
|
if($UserSalesVolume->shopping_order){
|
|
if($UserSalesVolume->status === 1){
|
|
return '<a href="' . route('admin_sales_users_detail', [$UserSalesVolume->shopping_order->id]) . '" class="btn btn-xs btn-primary">'.$UserSalesVolume->shopping_order->id.'</a>';
|
|
}
|
|
if($UserSalesVolume->status === 2 || $UserSalesVolume->status === 3){
|
|
return '<a href="' . route('admin_sales_customers_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('status_points', function (UserSalesVolume $UserSalesVolume) {
|
|
return '<span class="badge badge-pill badge-'.$UserSalesVolume->getStatusPointsColor().'">'.$UserSalesVolume->getStatusPointsType().'</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>';
|
|
})
|
|
|
|
->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')
|
|
->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', 'status_points', 'message', 'info', 'total_net'])
|
|
->make(true);
|
|
}
|
|
} |