package cn.fateverse.common.core.bo;

import cn.hutool.core.util.ObjectUtil;
import lombok.Data;

import java.util.Optional;

@Data
public abstract class BaseQueryBO {

    /**
     * 创建时间
     */
    private DateIntervalBO createTimeInterval;

    /**
     * 更新时间
     */
    private DateIntervalBO updateTimeInterval;

    /**
     * 创建用户名称
     */
    private String createUserName;

    /**
     * 更新用户名称
     */
    private String updateUserName;

    /**
     * 获取创建时间间隔
     *
     * @return 基准日期间隔
     */
    public DateIntervalBO getCreateTimeInterval() {
        return Optional.ofNullable(createTimeInterval).orElse(new DateIntervalBO());
    }

    /**
     * 获取更新时间间隔
     *
     * @return 基准日期间隔
     */
    public DateIntervalBO getUpdateTimeInterval() {
        return Optional.ofNullable(updateTimeInterval).orElse(new DateIntervalBO());
    }

    /**
     * 创建时间 区间非空校验
     *
     * @return boolean true = 起止非空
     */
    public boolean createTimeBetweenIsNotEmpty() {
        return Optional.ofNullable(createTimeInterval).map(item -> ObjectUtil.isAllNotEmpty(item.getStartTime(), item.getEndTime())).orElse(false);
    }

    /**
     * 更新时间 区间非空校验
     *
     * @return boolean true = 起止非空
     */
    public boolean updateTimeBetweenIsNotEmpty() {
        return Optional.ofNullable(updateTimeInterval).map(item -> ObjectUtil.isAllNotEmpty(item.getStartTime(), item.getEndTime())).orElse(false);
    }

}