
import { Service } from 'egg';
import { GMMailModel } from '@db/GMMail';
import { STATUS } from '@consts';
import { GMMailRecordModel } from '@db/GMMailRecord';
import { RewardInter } from '@pubUtils/interface';

export default class Mail extends Service {

    public async getGMMailList(page: number, pageSize: number, sortField: string, sortOrder: string, form: {}) {
        const { ctx } = this;
        const list = await GMMailModel.findByCondition(page, pageSize, sortField, sortOrder, form);
        const total = await GMMailModel.countByCondition( form )
        return ctx.service.utils.resResult(STATUS.SUCCESS, {
            list, total
        });
    }

    public async updateGMMail(_id: string, content: string, sendName: string, useTempTime: boolean, sendTime: number, endTime: number, continueHour: number, goods: RewardInter[]) {
        const { ctx } = this;
        if(_id == 'new') {
            await GMMailModel.addMail({ content, sendName, useTempTime, sendTime, endTime, continueHour, goods });
        } else {
            await GMMailModel.updateMailById(_id, { content, sendName, useTempTime, sendTime, endTime, continueHour, goods });
        }
        return ctx.service.utils.resResult(STATUS.SUCCESS);
    }

    public async getGMMailRecords(page: number, pageSize: number, sortField: string, sortOrder: string, form: {}) {
        const { ctx } = this;
        const list = await GMMailRecordModel.findByCondition(page, pageSize, sortField, sortOrder, form);
        return ctx.service.utils.resResult(STATUS.SUCCESS, {
            list
        });
    }
}