const { data } = require("jquery");
const conURLA=CONFIG("conURLA");
var ObjectId = require('mongodb').ObjectID;
// [
//   {
//     '$lookup': {
//       'from': 'user', 
//       'localField': '_idu', 
//       'foreignField': '_id', 
//       'as': 'joinlist'
//     }
//   }, {
//     '$replaceRoot': {
//       'newRoot': {
//         '$mergeObjects': [
//           {
//             '$arrayElemAt': [
//               '$joinlist', 0
//             ]
//           }, '$$ROOT'
//         ]
//       }
//     }
//   }, {
//     '$project': {
//       'joinlist': 0, 
//       'password': 0, 
//       'active': 0, 
//       'role': 0
//     }
//   }, {
//     '$lookup': {
//       'from': 'province', 
//       'localField': '_idp', 
//       'foreignField': '_id', 
//       'as': 'pro'
//     }
//   }, {
//     '$replaceRoot': {
//       'newRoot': {
//         '$mergeObjects': [
//           {
//             '$arrayElemAt': [
//               '$pro', 0
//             ]
//           }, '$$ROOT'
//         ]
//       }
//     }
//   }, {
//     '$lookup': {
//       'from': 'city', 
//       'localField': '_idc', 
//       'foreignField': '_id', 
//       'as': 'ci'
//     }
//   }, {
//     '$replaceRoot': {
//       'newRoot': {
//         '$mergeObjects': [
//           {
//             '$arrayElemAt': [
//               '$ci', 0
//             ]
//           }, '$$ROOT'
//         ]
//       }
//     }
//   }, {
//     '$project': {
//       'pro': 0, 
//       'ci': 0
//     }
//   }, {
//     '$match': {
//       'username': '09013381779'
//     }
//   }
// ]




// [
//   {
//     '$lookup': {
//       'from': 'province', 
//       'localField': '_idp', 
//       'foreignField': '_id', 
//       'as': 'pro'
//     }
//   }, {
//     '$replaceRoot': {
//       'newRoot': {
//         '$mergeObjects': [
//           {
//             '$arrayElemAt': [
//               '$pro', 0
//             ]
//           }, '$$ROOT'
//         ]
//       }
//     }
//   }, {
//     '$lookup': {
//       'from': 'city', 
//       'localField': '_idc', 
//       'foreignField': '_id', 
//       'as': 'ci'
//     }
//   }, {
//     '$replaceRoot': {
//       'newRoot': {
//         '$mergeObjects': [
//           {
//             '$arrayElemAt': [
//               '$ci', 0
//             ]
//           }, '$$ROOT'
//         ]
//       }
//     }
//   }, {
//     '$project': {
//       'pro': 0, 
//       'ci': 0
//     }
//   }, {
//     '$match': {
//       'username': '09013381779'
//     }
//   }
// ]




exports.useraddress = async function(dbase,query){
    const mongo=MODULE('https_modules/HmongoDB');
    const con=await mongo.connfull(conURLA);
    var model={};

    model["status"]=true;

    if(con.status==200){
  
        let sort={ _id: -1 };
        let conn=con.data;
        const dbo = conn.db(dbase);
        
        var s=await mongo.findfull(conn,dbase,"province",{});
        console.log(s);
        if(s.status==200){
            model["provinces"]=s.data;
            s=await dbo.collection("user-address").aggregate([
        
{
    '$lookup': {
      'from': 'province', 
      'localField': '_idp', 
      'foreignField': '_id', 
      'as': 'pro'
    }
  }, {
    '$replaceRoot': {
      'newRoot': {
        '$mergeObjects': [
          {
            '$arrayElemAt': [
              '$pro', 0
            ]
          }, '$$ROOT'
        ]
      }
    }
  }, {
    '$lookup': {
      'from': 'city', 
      'localField': '_idc', 
      'foreignField': '_id', 
      'as': 'ci'
    }
  }, {
    '$replaceRoot': {
      'newRoot': {
        '$mergeObjects': [
          {
            '$arrayElemAt': [
              '$ci', 0
            ]
          }, '$$ROOT'
        ]
      }
    }
  }, {
    '$project': {
      'pro': 0, 
      'ci': 0
    }
  }, {
    '$match': query
  }


]).toArray();
            model.data=s;
            mongo.disconn(con.data);
            model["status"]=200;
            return model;
        
        }else{
            mongo.disconn(con.data);
            model["status"]=200;
            return model;
        }

        
    }else{
        model["status"]=500;
        return model;
    }
}



exports.LSTusers = async function(controller,dbase){
    const mongo=MODULE('https_modules/HmongoDB');
    const con=await mongo.connfull(conURLA);
    var model=[];
    var page=controller.params.numpage*1;
    model["status"]=true;
    query={};
    var id=new ObjectId(controller.user._id);
    if(controller.user.role=="admin"){
        
        // if(controller.user._id>2){
        //     query['$and']=[{_id:{$ne:1}},{_id:{$ne:2}}];
        // }else{
        //     query['_id']={$ne:1};
        // }
        var q2={};
        // q2['_id']={$ne:controller.user._id};
        q2['$and']=[{role:{$ne:"admin"}},{role:{$ne:"administrator"}}];
        query['$or']=[q2,{_id:id}];
    }
    
    
    if(con.status==200){
        var s=await mongo.join2merge(con.data,dbase,"user","_id","user-info","_id",query,{},{_id:-1});// limitation =1 for test
        //var s=await mongodb_join_three_new(db,dbase,collection_base,collection_join1,collection_join2,localField1,foreignField1,Let_obj,match_list,protion,sort)
        console.log(s);
        s.status=200;
        if(s.status==200){
          let limit=30;
          model["total"]=s.data.length;
        
          //if(controller.user._id!=2 ){model["total"]--;s.data.pop()}
          model["data"]=s.data.slice((page-1)*limit,((page-1)*limit)+limit);
          var urix=controller.url.replace(page,"{0}");
          model=await FUNC.paging(model.total,page,limit,controller.url,model,urix);
        }else{
            model['status']=false;
        }
        mongo.disconn(con.data);
        return model;
    }else{
        model["status"]=false;
        return model;
    }
}



exports.userinfo = async function(controller,dbase,id){
    const mongo=MODULE('https_modules/HmongoDB');
    const con=await mongo.connfull(conURLA);
    var result={};
    if(con.status==200){
    	//if((id==1) && (self.user._id!=1)){  // mainuser controll
    	//	result["status"]=300;
      //  }else{
        
    		var s=await mongo.join2(con.data,dbase,"user","_id","user-info","_id",{_id:id});
        console.log(s);
        console.log(id);
        if(s.status==200){
          if(controller.user.role=="admin" && (s.data[0].role=="admin" || s.data[0].role=="administrator") && ((controller.user._id+"")!=(id+""))){
            result["status"]=400;
            mongo.disconn(con.data);
            return result;
          }
          result['data']=s.data[0];
    		  result["status"]=200;
        }else{
          result["status"]=404;
        }
    	//}
    }else{
        result["status"]=500;
    }
    mongo.disconn(con.data);
    return result;
}



exports.usermedia = async function(controller,dbase,id){
  const mongo=MODULE('https_modules/HmongoDB');
  const con=await mongo.connfull(conURLA);
  var result={};
  if(con.status==200){
    //if((id==1) && (self.user._id!=1)){  // mainuser controll
    //	result["status"]=300;
    //  }else{
      var s=await mongo.findfull(con.data,dbase,"user-summary-2",{_id:id});
      if(s.status==200){
        if(controller.user.role=="admin" && (s.data[0].role=="admin" || s.data[0].role=="administrator") && controller.user._id!=id){
          result["status"]=400;
          mongo.disconn(con.data);
          return result;
        }
        result['data']=s.data[0];
        result["status"]=200;
      }else{
        result["status"]=404;
      }
    //}
  }else{
      result["status"]=500;
  }
  mongo.disconn(con.data);
  return result;
}