File: /var/www/admin.javaapp.co.uk/app/Services/AdminOrderHistoryService.php
<?php
namespace App\Services;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Auth;
use Yajra\DataTables\Facades\DataTables;
class AdminOrderHistoryService
{
private $model;
public function __construct($model)
{
$this->model = new $model();
}
public function data($request)
{
$orderFrom = $request->orderFrom != null ? Carbon::createFromFormat('Y-m-d H:i:s', $request->orderFrom . " 00:00:01")->timestamp : '';
$orderTo = $request->orderTo != null ? Carbon::createFromFormat('Y-m-d H:i:s', $request->orderTo . " 23:59:59")->timestamp : '';
$isCafe = $request->cafe != null ? $request->cafe : '';
$userId = $request->user != null ? decrypt($request->user) : '';
$today = $request->today != null ? $request->today : '';
$todayStart = Carbon::today()->startOfDay()->timestamp;
$todayEnd = Carbon::today()->endOfDay()->timestamp;
$data = $this->model->query()->join('users', 'users.id', 'orders.user_id')->join('cafes', 'cafes.id', 'orders.cafe_id')->select('orders.id', 'orders.order_number', 'orders.status', 'users.name', 'users.email as user_email', 'cafes.cafe_name' , 'cafes.address as cafe_address', 'users.address as user_address', 'orders.order_placed_at', 'orders.total_amount')->orderBy('orders.order_placed_at', 'desc');
if ($isCafe != "" && $isCafe != "false") {
$data->where('orders.cafe_id', Auth::user()->id);
}
if ($orderFrom != null) {
$data->where('orders.order_placed_at', '>=', $orderFrom);
}
if ($orderTo != null) {
$data->where('orders.order_placed_at', '<=', $orderTo);
}
if ($userId != null) {
$data->where('orders.user_id', $userId);
}
// if ($today != "" && $today != "false") {
// $data->whereBetween('orders.order_placed_at', [$todayStart, $todayEnd]);
// }
return DataTables::eloquent($data)
->addIndexColumn()
->addColumn('user_name', function ($row) {
if (empty($row->name)) {
return '-';
} else {
if (strlen($row->name) > 50) {
return substr($row->name, 0, 50) . '...';
} else {
return $row->name;
}
}
})
->addColumn('user_email', function ($row) {
if (empty($row->user_email)) {
return '-';
} else {
if (strlen($row->user_email) > 50) {
return substr($row->user_email, 0, 50) . '...';
} else {
return $row->user_email;
}
}
})
->addColumn('user_address', function ($row) {
if (empty($row->user_address)) {
return '-';
} else {
if (strlen($row->user_address) > 50) {
return substr($row->user_address, 0, 50) . '...';
} else {
return $row->user_address;
}
}
})
->addColumn('cafe_name', function ($row) {
if (empty($row->cafe_name)) {
return '-';
} else {
if (strlen($row->cafe_name) > 50) {
return substr($row->cafe_name, 0, 50) . '...';
} else {
return $row->cafe_name;
}
}
})
->addColumn('cafe_address', function ($row) {
if (empty($row->cafe_address)) {
return '-';
} else {
if (strlen($row->cafe_address) > 50) {
return substr($row->cafe_address, 0, 50) . '...';
} else {
return $row->cafe_address;
}
}
})
->editColumn('order_number', function ($row) {
if (empty($row->order_number)) {
return '-';
} else {
return $row->order_number;
}
})
->editColumn('order_amount', function ($row) {
if (empty($row->total_amount)) {
return '-';
} else {
return '£ ' . $row->total_amount;
}
})
->addColumn('order_time', function ($row) {
if (empty($row->order_placed_at)) {
return '-';
} else {
return Carbon::createFromTimestamp($row->order_placed_at)->timezone(session()->get('timezone'))->format('h:i A');
}
})
->addColumn('order_date', function ($row) {
if (empty($row->order_placed_at)) {
return '-';
} else {
return Carbon::createFromTimestamp($row->order_placed_at)->timezone(session()->get('timezone'))->format('d-m-Y');
}
})
->addColumn('status', function ($row) {
return view(
"partials.common",
[
'row' => $row,
'isOrderStatus' => 1,
]
)->render();
})
->addColumn('action', function ($row) {
return view(
"partials.action",
[
'currentRoute' => Auth::getDefaultDriver().'.order-history',
'row' => $row,
'isDelete' => 0,
'isView' => 1,
'isEdit' => 0,
]
)->render();
})
->rawColumns(['status', 'action'])
->toJson();
}
}