import("system.db");
import("system.result");
import("system.vars");
import("IndexSearch_lib");
import("Sql_lib");

var infoContainer, onUpdFn, tableName, res;

tableName = vars.get("$local.table");
idValue = vars.get("$local.idvalue");
infoContainer =  IndexsearchUtils.createAffectedInfoContainer(idValue, null, vars.get("$local.action")
    ,function (){return vars.get("$local.columns")}
    ,function (){return vars.get("$local.oldvalues")}
    ,function (){return vars.get("$local.values")});

//switch (tableName)
//{
//    case "CONTACT":
//        res = [idValue];
//        break;    
//    case "PERSON":
//        res = db.array(db.COLUMN, "select CONTACT.CONTACTID from CONTACT where CONTACT.PERSON_ID = '" + idValue + "'");
//        break;
//    case "ORGANISATION":
//        res = db.array(db.COLUMN, "select CONTACT.CONTACTID from CONTACT where CONTACT.PERSON_ID is not null and CONTACT.ORGANISATION_ID = '" + idValue + "'");
//        break;
//    case "ADDRESS":
//        res = IndexsearchUtils.getAffectedIdValues("CONTACT_ID", infoContainer, function (id){
//            return db.array(db.COLUMN, ["select ADDRESS.CONTACT_ID from ADDRESS where ADDRESS.ADDRESSID = ?", [
//                    [id, SqlUtils.getSingleColumnType("ADDRESS", "ADDRESSID")]
//            ]]);
//        });
//        break;
//    case "COMMUNICATION":
//        res = IndexsearchUtils.getAffectedIdValues("CONTACT_ID", infoContainer, function (id){
//            return db.array(db.COLUMN, ["select COMMUNICATION.CONTACT_ID from COMMUNICATION where COMMUNICATIONID = ?", [
//                    [id, SqlUtils.getSingleColumnType("COMMUNICATION", "COMMUNICATIONID")]
//            ]]);
//        });
//        break;
//}

switch (tableName)
{
    case "PERSON":
        res = [idValue];
        break;    
    case "CONTACT":
        res = db.array(db.COLUMN, "select CONTACT.PERSON_ID from CONTACT where CONTACT.CONTACTID = '" + idValue + "'");
        break;
    case "ORGANISATION":
        res = db.array(db.COLUMN, "select CONTACT.PERSON_ID from CONTACT where CONTACT.PERSON_ID is not null and CONTACT.ORGANISATION_ID = '" + idValue + "'");
        break;
    case "ADDRESS":
        res = IndexsearchUtils.getAffectedIdValues("PERSON_ID", infoContainer, function (id){
            return db.array(db.COLUMN, ["select CONTACT.PERSON_ID from ADDRESS left join CONTACT on CONTACT.CONTACTID = ADDRESS.CONTACT_ID where CONTACT.PERSON_ID is not null and ADDRESS.ADDRESSID = ?", [
                    [id, SqlUtils.getSingleColumnType("ADDRESS", "ADDRESSID")]
            ]]);
        });
        break;
    case "COMMUNICATION":
        res = IndexsearchUtils.getAffectedIdValues("PERSON_ID", infoContainer, function (id){
            return db.array(db.COLUMN, ["select CONTACT.PERSON_ID from COMMUNICATION left join CONTACT on CONTACT.CONTACTID = COMMUNICATION.CONTACT_ID where CONTACT.PERSON_ID is not null and where COMMUNICATIONID = ?", [
                    [id, SqlUtils.getSingleColumnType("COMMUNICATION", "COMMUNICATIONID")]
            ]]);
        });
        break;
}

if (res) {
    result.object(res);
}