package com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.newProject;

import com.yeejoin.amos.boot.module.jg.api.dto.FieldChangeMeta;
import com.yeejoin.amos.boot.module.jg.api.enums.BusinessTypeEnum;
import com.yeejoin.amos.boot.module.jg.biz.edit.core.RouterEventPublisher;
import com.yeejoin.amos.boot.module.jg.biz.edit.event.BaseBizDataChangeEvent;
import com.yeejoin.amos.boot.module.jg.biz.edit.process.biz.DefaultBizDataChangeHandler;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;

import java.util.*;

/**
 * 新增装置编辑处理器
 */
@Component
public class NewProjectDataChangeHandler extends DefaultBizDataChangeHandler<BaseBizDataChangeEvent> {

    private final NewProjectEditUpdateService newProjectEditUpdateService;

    protected NewProjectDataChangeHandler(NewProjectEditUpdateService newProjectEditUpdateService, RouterEventPublisher routerEventPublisher, ApplicationContext applicationContext) {
        super(routerEventPublisher, applicationContext);
        this.newProjectEditUpdateService = newProjectEditUpdateService;
    }

    @Override
    public String canHandleBizType() {
        return BusinessTypeEnum.JG_NEW_PROJECT.name();
    }

    @Override
    public List<FieldChangeMeta> updBizData(String bizId, String applyNo, ModelType model, Map<String, Object> changeData) {
        return Collections.emptyList();
    }

    @Override
    public Boolean beforeCheck(String projectContraptionId, String applyNo, ModelType model, Map<String, Object> changeData) {
        return true;
    }

    @Override
    public Set<String> getEqs(String projectContraptionId) {
        return newProjectEditUpdateService.getEqsByProjectContraptionId(projectContraptionId);
    }

    @Override
    public Boolean bizIsFinished(String projectContraptionId) {
        return Boolean.TRUE;
    }

    @Override
    public Set<String> getProjectContraptionIds(String projectContraptionId) {
        return Collections.singleton(projectContraptionId);
    }
}
