'bitte wählen', 'order' => 'markierte bezahlen', 'remove' => 'markierte entfernen', 'reset' => 'markierte zurücksetzen/bestellt'];
private $filter_show = [10 => 'alle anzeigen', 1 => 'bestellt', 2 => 'bezahlt', 5 => 'entfernt'];
protected $shopApiRepository;
public function __construct(ShopApiRepository $shopApiRepository)
{
$this->middleware('active.shop');
$this->shopApiRepository = $shopApiRepository;
}
public function orders()
{
$this->setFilterVars();
$data = [
'api_action' => $this->api_action,
'filter_show' => $this->filter_show,
];
return view('user.shop.sales.api_orders', $data);
}
public function action(){
$data = Request::all();
if(isset($data['user_shop_api_orders_action'])){
switch($data['user_shop_api_orders_action']){
case 'order':
$shopApiOrderCart = $this->shopApiRepository->order($data);
return view('user.shop.sales.api_order_list', compact('shopApiOrderCart', 'data'));
break;
case 'remove':
$this->shopApiRepository->remove($data);
break;
case 'reset':
$this->shopApiRepository->reset($data);
break;
}
}
return redirect(route('user_shop_api_orders'));
}
public function checkout(){
$data = Request::all();
return $this->shopApiRepository->checkout($data);
}
private function setFilterVars(){
if(!session('user_shop_api_orders_filter')){
session(['user_shop_api_orders_filter' => 1]);
}
if(Request::get('user_shop_api_orders_filter')){
session(['user_shop_api_orders_filter' => Request::get('user_shop_api_orders_filter')]);
}
}
private function initSearch($archive = false, $request = true)
{
$this->setFilterVars();
$user = User::find(\Auth::user()->id);
$query = ShoppingOrder::with('shopping_user')->select('shopping_orders.*')
->where('shopping_orders.member_id', $user->id)
->where('shopping_orders.payment_for', 7); //7 payment for extern
if(Request::get('user_shop_api_orders_filter')){
if(Request::get('user_shop_api_orders_filter') < 10){
if(Request::get('user_shop_api_orders_filter') == 1){
$query->where(function($query) {
return $query->where('shopping_orders.api_status', 0)
->orWhere('shopping_orders.api_status', 1)
->orWhereNull('shopping_orders.api_status');
});
}else{
$query->where('shopping_orders.api_status', Request::get('user_shop_api_orders_filter'));
}
}
}
return $query;
}
public function ordersDatatable(){
$query = $this->initSearch();
return \DataTables::eloquent($query)
->addColumn('id', function (ShoppingOrder $ShoppingOrder) {
return '';
})
->addColumn('api_status', function (ShoppingOrder $ShoppingOrder) {
if($ShoppingOrder->api_status === 2){
$shopping_oder_id = isset($ShoppingOrder->api_notice['shopping_order_id']) ? $ShoppingOrder->api_notice['shopping_order_id'] : null;
if($shopping_oder_id){
return ' '.$shopping_oder_id.'';
}
}
return ''.$ShoppingOrder->getAPIStatusType().'';
})
->addColumn('created_at', function (ShoppingOrder $ShoppingOrder) {
return $ShoppingOrder->created_at->format("d.m.Y");
})
->addColumn('txaction', function (ShoppingOrder $ShoppingOrder) {
return Payment::getShoppingOrderBadge($ShoppingOrder);
})
->addColumn('api_action', function (ShoppingOrder $ShoppingOrder) {
return '';
})
->addColumn('total_shipping', function (ShoppingOrder $ShoppingOrder) {
return ''.$ShoppingOrder->getFormattedTotalShipping()." €";
})
->addColumn('orders', function (ShoppingOrder $ShoppingOrder) {
return $ShoppingOrder->shopping_user ? $ShoppingOrder->shopping_user->orders : '';
})
->addColumn('user_shop_id', function (ShoppingOrder $ShoppingOrder) {
return $ShoppingOrder->user_shop ? ''.$ShoppingOrder->user_shop->getSubdomain(false).'' : '';
})
->addColumn('payment_for', function (ShoppingOrder $ShoppingOrder) {
return ''.$ShoppingOrder->getPaymentForType().'';
})
->addColumn('shipped', function (ShoppingOrder $ShoppingOrder) {
return ''.$ShoppingOrder->getShippedType().'
';
})
->orderColumn('payment_for', 'payment_for $1')
->orderColumn('id', 'id $1')
->orderColumn('api_action', 'id $1')
->orderColumn('txaction', 'txaction $1')
->orderColumn('user_shop_id', 'user_shop_id $1')
->orderColumn('total_shipping', 'total_shipping $1')
->rawColumns(['id', 'api_status', 'txaction', 'user_shop_id', 'api_action', 'shipped', 'total_shipping', 'payment_for'])
->make(true);
}
}