HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-10-0-8-47 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:31:58 UTC 2024 aarch64
User: ubuntu (1000)
PHP: 8.1.2-1ubuntu2.22
Disabled: NONE
Upload Files
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();
    }
}