import {ApiCall} from "tsrpc";
import {PlayerFun} from '../../../public/player';
import {ReqRec, ResRec} from "../../../shared/protocols/event/huobanzhaomu/PtlRec";
import {HongDianChange} from "../../hongdian/fun";
import {PayFun} from "../../../public/pay";

export default async function (call: ApiCall<ReqRec, ResRec>) {
    let conf = G.gc.huobanzhaomu[call.req.index];
    if (!conf) return call.error('', {code: -1});
    if (conf.gudKey && call.conn.gud[conf.gudKey] < conf.total) return call.error('', {code: -2});

    let db = await G.mongodb.cEvent('huobanzhaomu').findOne({uid: call.uid, type: 'huobanzhaomu'});
    if (db?.rec.includes(call.req.index)) return call.error('', {code: -3});

    if (conf.gudKey == "zhizunyueka") {
        let logs = await PayFun.getPayLog(call.uid, "zhizunyueka");
        if (!logs || logs.slice(-1)[0].eTime < G.time) {
            return call.error('', {code: -4});
        }
    } else {
        if (!conf.gudKey && (db?.rec?.length || 0) < G.gc.huobanzhaomu.length - 1) {
            return call.error('', {code: -4});
        }
    }

    await PlayerFun.sendPrize(call, conf.prize);

    if (db?.rec?.length + 1 >= G.gc.huobanzhaomu.length) {
        G.mongodb.collection('syncBtns').updateOne({uid: call.uid}, {$set: {'huobanzhaomu.active': false}}, {upsert: true});
    }

    G.mongodb.cEvent('huobanzhaomu').updateOne(
        {uid: call.uid, type: 'huobanzhaomu'},
        {$push: {rec: call.req.index}},
        {upsert: true}
    );

    HongDianChange.sendChangeKey(call.uid, ['huobanzhaomuhd'])

    call.succ({
        prize: conf.prize
    });
}