import { Http,Util,Errorlog } from '@/utils';
import ControlService from '@/widgets/control-service';
import IBIZUNIProductService from '@/service/ibizuniproduct/ibizuniproduct-service';
import Model from './-searchbar-model';
import UtilService from '@/utilservice/util-service';


/**
 *  部件服务对象
 *
 * @export
 * @class Service
 */
export default class Service extends ControlService {

    /**
     * 统一产品（索引主实体）服务对象
     *
     * @type {IBIZUNIProductService}
     * @memberof Service
     */
    public appEntityService: IBIZUNIProductService = new IBIZUNIProductService();

    /**
     * 设置从数据模式
     *
     * @type {boolean}
     * @memberof Service
     */
    public setTempMode(){
        this.isTempMode = false;
    }

    /**
     * Creates an instance of Service.
     * 
     * @param {*} [opts={}]
     * @memberof Service
     */
    constructor(opts: any = {}) {
        super(opts);
        this.model = new Model();
    }

    /**
     * 工具服务对象
     *
     * @protected
     * @type {UtilService}
     * @memberof Service
     */
    protected utilService: UtilService = new UtilService();

    /**
     * 加载数据模型
     *
     * @param {string} serviceName
     * @param {*} context
     * @param {*} viewparams
     * @memberof Service
     */
    public loadModel(serviceName: string, context: any, viewparams: any) {
        return new Promise((resolve: any, reject: any) => {
            this.utilService.getService(serviceName).then((service: any) => {
                service.loadModelData(JSON.stringify(context), viewparams).then((response: any) => {
                    resolve(response);
                }).catch((response: any) => {
                    reject(response);
                });
            }).catch((response: any) => {
                reject(response);
            });
        });
    }

    /**
     * 保存模型
     *
     * @param {string} serviceName
     * @param {*} context
     * @param {*} viewparams
     * @returns
     * @memberof Service
     */
    public saveModel(serviceName: string, context: any, viewparams: any) {
        return new Promise((resolve: any, reject: any) => {
            this.utilService.getService(serviceName).then((service: any) => {
                service.saveModelData(JSON.stringify(context), '', viewparams).then((response: any) => {
                    resolve(response);
                }).catch((response: any) => {
                    reject(response);
                });
            }).catch((response: any) => {
                reject(response);
            });
        });
    }

}