package com.tuoheng.admin.service.inspection.query.handle;

import com.tuoheng.admin.entity.Dept;
import com.tuoheng.admin.entity.User;
import com.tuoheng.admin.enums.InspectionStatusEnum;
import com.tuoheng.admin.vo.inspection.InspectionVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

@Slf4j
@Service("deleteHandle")
public class DeleteHandle implements GenerateInspectionFieldHander {

    private GenerateInspectionFieldHander handler;

    @Override
    public void setNextHandler(GenerateInspectionFieldHander handler) {
        this.handler = handler;
    }

    /**
     *
     * 判断是否有删除权限
     *  1)、 用户权限在前端判断
     *  2）、任务处于飞行中时无法删除
     *  3）、管理员只能删除本部门的任务，因此将用户所在部门id与任务部门id对比，
     *      3.1）、一致，则有删除权限
     *      3.2）、不一致，则没有删除权限
     *
     *
     * @param user
     * @param dept
     * @param inspectionVo
     */
    @Override
    public void handler(User user, Dept dept, InspectionVo inspectionVo) {
//        log.info("处理删除字段");
        if (InspectionStatusEnum.IN_FLIGHT.getCode() == inspectionVo.getStatus()) {
            if (null != handler) {
                handler.handler(user, dept, inspectionVo);
            }
            return;
        }
        if (user.getDeptId().equals(inspectionVo.getDeptId())) {
            inspectionVo.setDelete(true);
        }
        if (null != handler) {
            handler.handler(user, dept, inspectionVo);
            return;
        }
    }

}
