package com.persagy.dmp.digital.client;

import cn.hutool.extra.spring.SpringUtil;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.persagy.dmp.basic.dto.RequestData;
import com.persagy.dmp.basic.model.QueryCriteria;
import com.persagy.dmp.common.model.response.CommonResult;
import com.persagy.dmp.common.utils.ResultHelper;
import com.persagy.dmp.digital.entity.ObjectDigital;
import com.persagy.dmp.digital.entity.ObjectRelationProjectCal;

import java.util.List;
import java.util.Set;

/**
 * 项目关系记录门面
 * @author Charlie Yu
 * @date 2021-05-15
 */
public class DigitalRelationProjectCalFacade {

    private static DigitalRelationProjectCalClient client = SpringUtil.getBean(DigitalRelationProjectCalClient.class);

    /**
     * 查询项目关系记录
     * @param groupCode: 集团编码
     * @param projectId: 项目ID
     * @param appId: 应用ID
     * @param userId: 用户ID
     * @param criteria: 请求参数
     * @return 项目关系记录数组
     */
    public static List<ObjectNode> query(String groupCode, String projectId, String appId,
                                         String userId, QueryCriteria criteria) {
        CommonResult<List<ObjectNode>> result = client.query(groupCode, projectId, appId, userId, criteria);
        return ResultHelper.getContent(result);
    }
    /**
     * 查询项目关系记录
     * @param groupCode: 集团编码
     * @param projectId: 项目ID
     * @param appId: 应用ID
     * @param userId: 用户ID
     * @param criteria: 请求参数
     * @return 原样查询结果
     */
    public static CommonResult<List<ObjectNode>> queryPrototype(String groupCode, String projectId, String appId,
                                                       String userId, QueryCriteria criteria) {
        return client.query(groupCode, projectId, appId, userId, criteria);
    }
    /**
     * 新增项目关系记录-单个新增
     * @param groupCode: 集团编码
     * @param projectId: 项目ID
     * @param appId: 应用ID
     * @param userId: 用户ID
     * @param node: 新增项目关系记录对象
     * @return 项目关系记录对象
     */
    public static ObjectRelationProjectCal createOne(String groupCode, String projectId, String appId,
                                                             String userId, ObjectNode node) {
        CommonResult<ObjectRelationProjectCal> result = client.createOne(groupCode, projectId, appId, userId, node);
        return ResultHelper.getContent(result);
    }
    /**
     * 新增项目关系记录-批量新增
     * @param groupCode: 集团编码
     * @param projectId: 项目ID
     * @param appId: 应用ID
     * @param userId: 用户ID
     * @param nodes: 新增项目关系记录对象集合
     * @return 项目关系记录对象数组
     */
    public static List<ObjectRelationProjectCal> create(String groupCode, String projectId, String appId,
                                                             String userId, List<ObjectNode> nodes) {
        CommonResult<List<ObjectRelationProjectCal>> result = client.create(groupCode, projectId, appId, userId, nodes);
        return ResultHelper.getContent(result);
    }
    /**
     * 更新项目关系记录-单个更新
     * @param groupCode: 集团编码
     * @param projectId: 项目ID
     * @param appId: 应用ID
     * @param userId: 用户ID
     * @param node: 更新项目关系记录对象
     * @return 项目关系记录对象
     */
    public static ObjectRelationProjectCal updateOne(String groupCode, String projectId, String appId,
                                                             String userId, ObjectNode node) {
        CommonResult<ObjectRelationProjectCal> result = client.updateOne(groupCode, projectId, appId, userId, node);
        return ResultHelper.getContent(result);
    }
    /**
     * 更新项目关系记录-批量更新
     * @param groupCode: 集团编码
     * @param projectId: 项目ID
     * @param appId: 应用ID
     * @param userId: 用户ID
     * @param nodes: 更新项目关系记录对象集合
     * @return 项目关系记录对象数组
     */
    public static List<ObjectRelationProjectCal> update(String groupCode, String projectId, String appId,
                                                             String userId, List<ObjectNode> nodes) {
        CommonResult<List<ObjectRelationProjectCal>> result = client.update(groupCode, projectId, appId, userId, nodes);
        return ResultHelper.getContent(result);
    }
    /**
     * 删除项目关系记录-单个删除
     * @param groupCode: 集团编码
     * @param projectId: 项目ID
     * @param appId: 应用ID
     * @param userId: 用户ID
     * @param id: 项目关系记录对象id
     * @return 项目关系记录对象
     */
    public static void deleteOne(String groupCode, String projectId, String appId,
                                                             String userId, String id) {
        client.deleteOne(groupCode, projectId, appId, userId, id);
    }
    /**
     * 删除项目关系记录-批量删除
     * @param groupCode: 集团编码
     * @param projectId: 项目ID
     * @param appId: 应用ID
     * @param userId: 用户ID
     * @param ids: 项目关系记录对象id数组
     * return 项目关系记录对象数组
     */
    public static void delete(String groupCode, String projectId, String appId,
                                                             String userId, List<String> ids) {
        client.delete(groupCode, projectId, appId, userId, ids);
    }
}
