const system = require("../../../system");
const ServiceBase = require("../../sve.base")
const settings = require("../../../../config/settings")
class SaasService extends ServiceBase {
  constructor() {
    super("saas", ServiceBase.getDaoName(SaasService));
  }

  /**
   * saas  添加 
   * @param {*} params 
   */
  async apiAddSaas(params) {
    try {
      return await this.addSaas(params);
    } catch (error) {
      return system.getResult(null, `系统错误 错误信息 ${error}`);
    }
  }

  /**
   * saas  更新
   * @param {*} params 
   */
  async apiUpdSaas(params) {
    try {
      return await this.updSaas(params);
    } catch (error) {
      return system.getResult(null, `系统错误 错误信息 ${error}`);
    }
  }

  /**
   * saas 删除 
   * @param {*} params 
   */
  async apiDelSaas(params) {
    try {
      return await this.delSaas(params);
    } catch (error) {
      return system.getResult(null, `系统错误 错误信息 ${error}`);
    }
  }
  /**
   * saas  查询列表 
   * @param {*} params 
   */
  async apiListSaas(params) {
    try {
      return await this.listSaas(params);
    } catch (error) {
      return system.getResult(null, `系统错误 错误信息 ${error}`);
    }
  }




/********************************************************************** */


  /**
   * 添加
   * @param {T} params 
   */
  async addSaas (params){
    if(!this.trim(params.name) || !this.trim(params.domain) || !Number(this.trim(params.stype))){
      return system.getResult(-1,`参数错误 请核对 名称、域名、用户类型 `);
    }
    params.name = this.trim(params.name);
    params.domain =  this.trim(params.domain);
    params.managerMobile =  params.managerMobile?this.trim(params.managerMobile):"";
    params.managerId = params.managerId?Number(this.trim(params.managerId)):null;
    params.stype = Number(this.trim(params.stype));
    try {
      let res = await this.create(params);
      console.log(`saas 信息插入 ： ${JSON.stringify(res)}`);
      return system.getResult(res);
    } catch (error) {
      return system.getResult(-1,`系统错误 错误信息 ${error}`);
    }
  }

  /**
   * 更新
   * @param {T} params 
   */
  async updSaas (params){
    if(!params.id){
      return system.getResult(-1,`参数错误 ID不能为空`);
    }
    let _saas = await this.findById(params.id);
    if(!_saas){
      return system.getResult(-1,`信息不存在 请核对 ID`);
    }
    if(params.name){
      _saas.name = this.trim(params.name);
    }
    if(params.domain){
      _saas.domain = this.trim(params.domain);
    }
    if(params.managerMobile){
      _saas.managerMobile = this.trim(params.managerMobile);
    }
    if(params.managerId){
      _saas.managerId = Number(params.managerId);
    }
    if(params.stype){
      _saas.stype = Number(params.stype);
    }
    try {
      let res = await _saas.save();
      console.log(`saas 更新成功 ： ${JSON.stringify(res)}`);
      return system.getResult(res);
    } catch (error) {
      return system.getResult(-1,`系统错误 错误信息 ${error}`);
    }
  }
  /**
   * 删除
   * @param {T} params 
   */
  async delSaas (params){
    if(!params.id){
      return system.getResult(-1,`参数错误 ID不能为空`);
    }
    let _saas = await this.findById(params.id);
    if(!_saas){
      return system.getResult(-1,`信息不存在 请核对 ID`);
    }
    try {
    let res=await _saas.destroy();
      return system.getResult(res);
    } catch (error) {
      return system.getResult(-1,`系统错误 错误信息 ${error}`);
    }
  }
  /**
   * 查询列表
   * @param {T} params 
   */
  async listSaas (params){
    let where={};
    let pageIndex = params.pageIndex || 1;
    let pageSize = params.pageSize || 10;
    if(params.name){
      where.name = this.trim(params.name);
    }
    if(params.domain){
      where.domain = this.trim(params.domain);
    }
    if(params.managerMobile){
      where.managerMobile = this.trim(params.managerMobile);
    }
    if(params.managerId){
      where.managerId = Number(params.managerId);
    }
    if(params.stype){
      where.stype = Number(params.stype);
    }
    if(params.id){
      where.id = Number(params.id);
    }
    try {
      let saasList = await this.getPageList(pageIndex,pageSize,where);
      return system.getResult(saasList);
    } catch (error) {
      return system.getResult(-1,`系统错误 错误信息 ${error}`);
    }
  }
}
module.exports = SaasService;