171 lines
No EOL
7 KiB
PHP
171 lines
No EOL
7 KiB
PHP
<?php
|
|
|
|
|
|
namespace App\Http\Controllers\User;
|
|
use Request;
|
|
use App\User;
|
|
use App\Services\Payment;
|
|
use App\Models\ShoppingOrder;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Repositories\ShopApiRepository;
|
|
|
|
|
|
|
|
|
|
class ShopApiController extends Controller
|
|
{
|
|
|
|
private $api_action = [0 => '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 '<button type="button" class="btn icon-btn btn-sm btn-secondary" data-toggle="modal" data-target="#modals-load-content"
|
|
data-id="'.$ShoppingOrder->id.'"
|
|
data-action="shop-user-order-detail"
|
|
data-back=""
|
|
data-modal="modal-xl"
|
|
data-init_from="user"
|
|
data-route="'.route('modal_load').'"><span class="fa fa-eye"></span></button>';
|
|
})
|
|
->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 '<a class="btn btn-sm btn-secondary btn-round" href="'.route('user_order_detail', [$shopping_oder_id]).'"><i class="fa fa-check fa-check-circle-o"> '.$shopping_oder_id.'</a>';
|
|
}
|
|
}
|
|
return '<span class="badge badge-pill badge-'.$ShoppingOrder->getAPIStatusColor().'">'.$ShoppingOrder->getAPIStatusType().'</span>';
|
|
})
|
|
->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 '<label class="custom-control custom-checkbox m-0">
|
|
<input type="checkbox" class="custom-control-input" name="api_action_list['.$ShoppingOrder->id.']" id="api_action_list_'.$ShoppingOrder->id.'">
|
|
<span class="custom-control-label"></span>
|
|
</label>';
|
|
})
|
|
->addColumn('total_shipping', function (ShoppingOrder $ShoppingOrder) {
|
|
return '<span class="no-line-break">'.$ShoppingOrder->getFormattedTotalShipping()." €</span>";
|
|
})
|
|
->addColumn('orders', function (ShoppingOrder $ShoppingOrder) {
|
|
return $ShoppingOrder->shopping_user ? $ShoppingOrder->shopping_user->orders : '';
|
|
})
|
|
->addColumn('user_shop_id', function (ShoppingOrder $ShoppingOrder) {
|
|
return $ShoppingOrder->user_shop ? '<a href="'.$ShoppingOrder->user_shop->getSubdomain(false).'" target="_blank">'.$ShoppingOrder->user_shop->getSubdomain(false).'</span>' : '';
|
|
})
|
|
->addColumn('payment_for', function (ShoppingOrder $ShoppingOrder) {
|
|
return Payment::getPaymentForBadge($ShoppingOrder);
|
|
})
|
|
->addColumn('shipped', function (ShoppingOrder $ShoppingOrder) {
|
|
return '<span class="badge badge-pill badge-'.$ShoppingOrder->getShippedColor().'">'.$ShoppingOrder->getShippedType().'</span>
|
|
';
|
|
})
|
|
|
|
->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);
|
|
}
|
|
|
|
|
|
|
|
} |