<?php

namespace App\Exports;

use App\Base\Utils;
use App\Models\User\User;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Arr;
use Maatwebsite\Excel\Concerns\FromCollection;

class AdminUserExport implements FromCollection
{
    public $params;

    /**
     * @param $params
     */
    public function __construct($params)
    {
        $this->params = $params;
    }

    public function collection()
    {
        $data = \App\Models\User\User::query()->with(["group", "company"])->when($this->params['status'], function (Builder $query) {
            return $query->where("status", $this->params['status']);
        })->when($this->params['userinfo'], function (Builder $query) {
            return $query->where(function (Builder $query) {
                return $query->where("phone", $this->params['userinfo'])->orWhere("email", $this->params['userinfo'])->orWhere("id", $this->params['userinfo']);
            });
        })->orderByDesc("id")->get()->map(function (User $u) {
            return [
                "id" => Utils::idNo4($u->id),
                "phone" => $u->phone,
                "email" => $u->email,
                "company" => optional($u->company)->name,
                "status" => $u->status == User::STATUS_OK ? "正常" : "禁用",
                "group_name" => optional($u->group)->name ?? "",
                "created_at" => $u->created_at->format("Y-m-d"),
            ];
        });
        $data->prepend(["用户ID", "用户手机号", "用户邮箱", "企业用户", "用户状态", "当前身份", "注册时间"]);
        return $data;
    }
}