<?php
// +----------------------------------------------------------------------
// | 骑行打卡活动
// +----------------------------------------------------------------------
// | Author: 赖清涛 <laiqingtao@chinacpt.com>
// +----------------------------------------------------------------------
declare (strict_types=1);

namespace app\common\model;

use cores\BaseModel;
use think\model\relation\HasMany;

/**
 * 模型类：骑行打卡活动
 * Class SignAddress
 * @package app\common\model
 */
class SignAction extends BaseModel
{
    // 定义表名
    protected $name = 'sign_action';

    // 定义主键
    protected $pk = 'id';

    // MySQL DATETIME has no fractional part; retain real non-zero precision.
    public function getStartTimeAttr($value): string
    {
        return preg_replace('/^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\.0+$/D', '$1', (string)$value);
    }

    public function getEndTimeAttr($value): string
    {
        return preg_replace('/^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\.0+$/D', '$1', (string)$value);
    }

    /**
     * 活动详情
     * @param int $siginId 活动ID
     * @param array $with
     * @return static|array|null
     */
    public static function detail(int $siginId, array $with = [])
    {
        return self::get($siginId, $with);
    }

    /**
     * 删除记录 (软删除)
     * @return bool
     */
    public function setDelete(): bool
    {
        return $this->save(['is_delete' => 1]) !== false;
    }

    /**
     * 关联活动表
     * @return HasMany
     */
    public function addressList(): HasMany
    {
        return $this->hasMany("SignAddress", 'action_id')->where(['is_delete' => 0]);
    }
}
