<?php

namespace App\Models;

// use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
use Illuminate\Database\Eloquent\SoftDeletes;
use Dcat\Admin\Traits\HasDateTimeFormatter;

class User extends Authenticatable
{
    use HasApiTokens, HasFactory, Notifiable;
    use HasDateTimeFormatter;
    use SoftDeletes;


    public const USER_STATUS = [
        0 => '审核中',
        1 => '正常',
        2 => '驳回'
    ];

    //分享人信息
    public function shuser()
    {
        return $this->belongsTo(User::class, 'spuid');
    }

    //获取指定天数注册数
    public static function getNumDayData($dayNum)
    {
        $days = [date('Y-m-d')];
        for ($i = 1; $i < $dayNum; $i++) {
            $days[] = date("Y-m-d", strtotime("-$i day"));
        }
        $days = array_reverse($days);
        $data = [
            'total' => 0,
            'list' => []
        ];
        foreach ($days as $day) {
            $startTime = $day . ' 00:00:00';
            $endTime = $day . ' 23:59:59';
            $count = self::whereBetween('created_at', [$startTime, $endTime])->count();
            $data['list'][$day] = $count;
            $data['total'] += $count;
        }
        return $data;
    }


    //获取最近一年的注册人数
    public static function getYearData()
    {
        $y = date('Y');
        $m = date('m');

        for ($i = 1; $i <= $m; $i++) {
            $days[] = $y . '-' . $i;
        }
        $data = [
            'total' => 0,
            'list' => []
        ];

        foreach ($days as $day) {
            $startTime = $day . '-01 00:00:00';
            $m_max_day = date('t', strtotime($startTime));
            $endTime = $day . '-' . $m_max_day . ' 23:59:59';
            $count = self::whereBetween('created_at', [$startTime, $endTime])->count();
            $data['list'][$day] = $count;
            $data['total'] += $count;
        }
        return $data;
    }

    public function getCustomFieldOptionsAttribute()
    {
        // 这里你可以自定义查询来获取你想要的option值
        // 例如从关联表或者缓存中获取
        return [
            'option1' => '显示值1',
            'option2' => '显示值2',
            // 更多选项...
        ];
    }
}