package com.softwarebr.nunu.service.train;

import com.softwarebr.nunu.entity.train.ActivityLog;
import com.brframework.commondb.core.EntityService;
import com.softwarebr.nunu.json.admin.visual.VisualActivityResult;
import com.softwarebr.nunu.json.api.train.ActivityLogResult;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

/**
 * @date 2020/03/11 15:30:46
 * @author lilin
 */

public interface ActivityLogService extends EntityService<ActivityLog, Long, Object> {

    /**
     * 添加活动报名记录
     * @param log
     * @return
     */
    ActivityLogResult activityLogSave(ActivityLog log);

    /**
     * 订单号查询入场码信息
     * @param orderNo 订单号
     * @return
     */
    ActivityLogResult activityVoucherCode(String orderNo);

    /**
     * 活动回执单下载
     * @param response
     * @param id
     * @throws IOException
     */
    void activityReceiptDownload(HttpServletResponse response, Long id) throws IOException;


    /**
     * 活动报名信息下载
     * @param response
     * @param activityId
     */
    void activityExcelDownload(HttpServletResponse response, Long activityId);

    /**
     * 更新报名入场码
     * @param orderNo 订单号
     */
    void voucherCodeUpdate(String orderNo);

    /**
     * 更新入场码状态为失效
     * @param orderNo
     */
    void failureStatusUpdate(String orderNo);

    /**
     * 更新报名人数
     * @param orderNo 订单号
     * @param enrolment 报名人数
     */
    void enrolmentUpdate(String orderNo, Integer enrolment);

    /**
     * 活动报名统计
     * @param minDateTime 时间区间最小
     * @param maxDateTime 时间区间最大
     * @return
     */
    List<VisualActivityResult> getActivityApplyTotal(String minDateTime, String maxDateTime);

}