<?php

namespace App\Modules\Admin\Services;

use App\Base\BaseService;
use App\Models\Order\Order;
use App\Models\Order\OrderGoods;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Arr;

class OrderService extends BaseService
{
    public function paginate($params)
    {
        $p = Order::query()->when($params['status'], function (Builder $query) use ($params) {
            return $query->where("status", $params['status']);
        })->when($params['name'], function (Builder $query) use ($params) {
            return $query->where("name", "like", "%{$params['name']}%");
        })->orderByDesc("id")->paginate($params['page_size']);

        return [
            "total" => $p->total(),
            "page_total" => $p->lastPage(),
            "list" => array_map(function (Order $model) {
                /** @var OrderGoods $firstGoods */
                $firstGoods = $model->goods->first();
                return [
                    "id" => $model->id,
                    "no" => $model->goods->pluck("sn")->implode("\sn"),
                    "goods_name" => "",
                    "goods_sn" => "商品型号",
                    "user_id" => 123,
                    "thumb" => $model->goods->first(),
                    "email" => "user@example.com",
                    "created_at" => "2023-05-05 15:44:14",
                ];
            }, $p->items()),
        ];
    }
}