<?php

declare(strict_types=1);

namespace app\admin\model;

use app\common\model\traits\TimestampInteger;
use support\think\Model;
use think\model\relation\BelongsTo;

class User extends Model
{
    use TimestampInteger;

    protected string $table = 'user';
    protected string $pk = 'id';
    protected bool $autoWriteTimestamp = true;

    public function getAvatarAttr($value): string
    {
        return full_url($value ?? '', false, config('buildadmin.default_avatar'));
    }

    public function setAvatarAttr($value): string
    {
        return $value === full_url('', false, config('buildadmin.default_avatar')) ? '' : $value;
    }

    public function getMoneyAttr($value): string
    {
        return bcdiv((string) $value, '100', 2);
    }

    public function setMoneyAttr($value): string
    {
        return bcmul((string) $value, '100', 2);
    }

    public function userGroup(): BelongsTo
    {
        return $this->belongsTo(UserGroup::class, 'group_id');
    }

    public function resetPassword(int|string $uid, string $newPassword): int
    {
        return $this->where(['id' => $uid])->update(['password' => hash_password($newPassword), 'salt' => '']);
    }
}
