package cn.exploring.engine.server.db.service;

import cn.exploring.engine.server.db.dao.ClassInfoMapper;
import cn.exploring.engine.server.db.domain.ClassInfo;
import cn.exploring.engine.server.db.domain.ClassInfoExample;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;

@Service
public class ClassService {

    @Resource
    ClassInfoMapper classInfoMapper;

    public List<ClassInfo> selectClass(String className) {
        ClassInfoExample example = new ClassInfoExample();
        ClassInfoExample.Criteria criteria = example.createCriteria();

        criteria.andDeletedEqualTo(false);
        criteria.andClassNameEqualTo(className);
        return classInfoMapper.selectByExample(example);
    }

    public List<ClassInfo> webSelectClass(String className, List<Integer> idList) {
        ClassInfoExample example = new ClassInfoExample();
        ClassInfoExample.Criteria criteria = example.createCriteria();

        criteria.andDeletedEqualTo(false);
        if (!StringUtils.isEmpty(className)) {
            criteria.andClassNameLike("%" + className + "%");
        }
        if (idList != null && idList.size() > 0) {
            criteria.andIdIn(idList);
        }
        criteria.andClassNameEqualTo(className);
        return classInfoMapper.selectByExample(example);
    }

    /**
     * 添加班级信息
     * @param className
     * @return
     */
    public Object addClassInfo(String className) {
        List<ClassInfo> classInfoList = selectClass(className);
        if (classInfoList != null && classInfoList.size() != 0) {
            return "当前已存在该班级";
        }
        ClassInfo classInfo = new ClassInfo();
        LocalDateTime now = LocalDateTime.now();
        classInfo.setAddTime(now);
        classInfo.setUpdateTime(now);
        classInfo.setDeleted(false);
        classInfo.setClassName(className);
        classInfoMapper.insertSelective(classInfo);
        return "添加班级成功";
    }

    public void updateClassInfo(ClassInfo classInfo) {
        LocalDateTime now = LocalDateTime.now();
        classInfo.setUpdateTime(now);
        classInfoMapper.updateByPrimaryKey(classInfo);
    }

    public Object batchDeletedData(List<Integer> idList) {
        List<ClassInfo> classInfoList = webSelectClass(null, idList);
        classInfoList.forEach(x -> {
            x.setDeleted(null);
            updateClassInfo(x);
        });
        return "batch deleted  OK";
    }


}
