<?php




namespace app\common\model\store\order;


use app\common\model\BaseModel;
use app\common\model\system\merchant\Merchant;
use app\common\model\user\User;
use app\common\repositories\store\order\PresellOrderRepository;

class PresellOrder extends BaseModel
{

    public static function tablePk(): ?string
    {
        return 'presell_order_id';
    }

    public static function tableName(): string
    {
        return 'presell_order';
    }

    public function user()
    {
        return $this->hasOne(User::class, 'uid', 'uid');
    }

    public function order()
    {
        return $this->hasOne(StoreOrder::class, 'order_id', 'order_id');
    }

    public function merchant()
    {
        return $this->hasOne(Merchant::class, 'mer_id', 'mer_id');
    }


    public function searchOrderIdAttr($query, $value)
    {
        $query->where('order_id', $value);
    }

    public function getActiveStatusAttr()
    {
        $status = 1;
        $now = time();
        if (strtotime($this->final_start_time) > $now) $status = 0;
        else if (strtotime($this->final_end_time) < $now) {
            if ($this->status && $this->presell_order_id)
                app()->make(PresellOrderRepository::class)->cancel($this->presell_order_id);
            $status = 2;
        }
        return $status;
    }

    public function getCombinePayParams()
    {
        return [
            'order_sn' => $this->presell_order_sn,
            'sub_orders' => [
                [
                    'pay_price' => $this->pay_price,
                    'order_sn' => $this->presell_order_sn,
                    'sub_mchid' => $this->merchant->sub_mchid,
                ]
            ],
            'attach' => 'presell',
            'body' => '尾款支付',
        ];
    }

    public function getPayParams($return_url = '')
    {
        $params = [
            'order_sn' => $this->presell_order_sn,
            'pay_price' => $this->pay_price,
            'attach' => 'presell',
            'body' => '尾款支付'
        ];
        if ($return_url) {
            $params['return_url'] = $return_url;
        }
        return $params;
    }
}
