package com.softwarebr.nunu.service.train;

import com.brframework.commonweb.json.PageParam;
import com.softwarebr.nunu.dto.train.ActivityParamDTO;
import com.softwarebr.nunu.entity.train.Activity;
import com.brframework.commondb.core.EntityService;
import com.softwarebr.nunu.json.admin.train.ActivityQueryParam;
import com.softwarebr.nunu.json.admin.train.ActivityResult;
import org.springframework.data.domain.Page;

import java.util.Map;

/**
 * @date 2020-02-26 11:02:46
 * @author lilin
 */

public interface ActivityService extends EntityService<Activity, Long, Object> {

    /**
     * 活动状态处理Api
     * @param activity
     * @return
     */
    Map<Integer, String> activityStatusApi(Activity activity);

    /**
     * 活动状态处理Admin
     * @param activity
     * @return
     */
    String activityStatusAdmin(Activity activity);

    /**
     * 活动类型
     * @param category 活动类别 1.创新活动 2.培训活动
     * @return
     */
    Map<Integer, String> activityType(Integer category);

    /**
     * 活动名称查询活动Id
     * @param name
     * @return
     */
    Long getActivityByName(String name);

    /**
     * 分页
     * @param page
     * @param param
     * @return
     */
    Page<Activity> pageV1(PageParam page, ActivityQueryParam param);

    /**
     * 数据统计
     * @param param
     * @return
     */
    Integer countV1(ActivityQueryParam param);

    /**
     * 更新活动报名人数
     * @param activityId 活动id
     * @param amount 本次报名人数
     */
    void activityEnrolment(Long activityId, Integer amount);

    /**
     * 活动审核
     * @param id
     * @param verify 审核结果
     * @param verifyRemark 审核备注
     */
    void activityVerify(Long id, Integer verify, String verifyRemark);

    /**
     * 保存活动
     * @param publisher 发布者 -1为平台
     * @param activityParamDTO 参数数据
     * @return
     */
    Activity saveActivity(Long publisher, ActivityParamDTO activityParamDTO);

    /**
     * 修改活动
     * @param activityId 活动id
     * @param activityParamDTO 参数数据
     */
    void updateActivity(Long activityId, ActivityParamDTO activityParamDTO);

    /**
     * 活动上架
     * @param activityId 活动id
     */
    void activityUpperShelf(Long activityId);

    /**
     * 活动下架
     * @param activityId 活动id
     */
    void activityLowerShelf(Long activityId);

    /**
     * 活动首页推荐
     * @param activityId 活动id
     */
    void activityIndexYes(Long activityId);

    /**
     * 活动取消首页推荐
     * @param activityId 活动id
     */
    void activityIndexNo(Long activityId);

}