import("DataPrivacy_lib");
import("Sql_lib");
import("system.util");
import("system.db");
import("system.vars");
import("Attribute_lib");

var rowdata = vars.get("$local.rowdata");
var attributeId = rowdata["AB_ATTRIBUTE_ID.value"]
var type = AttributeUtil.getAttributeType(attributeId);
var attributeRelationId = vars.getString("$param.ShowEmpty_param") == "true"
    ? JSON.parse(vars.get("$local.uid"))[0]
    : vars.get("$local.uid");

if (vars.getString("$param.ShowEmpty_param") == "true" && !rowdata["AB_ATTRIBUTERELATIONID.value"])
{
    var columns = [
        "AB_ATTRIBUTERELATIONID",
        "AB_ATTRIBUTE_ID",
        "OBJECT_ROWID",
        "OBJECT_TYPE",
        "DATE_NEW",
        "USER_NEW"
    ];
    
    var values = [
        attributeRelationId,
        attributeId,
        vars.get("$param.ObjectRowId_param"),
        vars.get("$param.ObjectType_param"),
        vars.get("$sys.date"),
        vars.get("$sys.user")
    ];
    var valueField = AttributeTypeUtil.getDatabaseField(type);
    if (valueField)
    {
        columns.push(valueField);
        if (AttributeTypeUtil.useLookup(type))
            values.push(rowdata["VALUE_LOOKUP.value"])
        else
            values.push(rowdata["VALUE.value"]);
    }
    db.insertData("AB_ATTRIBUTERELATION", columns, null, values);
}
else
{
    var fieldValues = {
        "AB_ATTRIBUTE_ID" : attributeId,
        "DATE_EDIT" : rowdata["DATE_EDIT.value"],
        "USER_EDIT" : rowdata["USER_EDIT.value"]
    };

    var dbFields = AttributeTypeUtil.getAllDatabaseFields();
    dbFields.forEach(function (row)
    {
        fieldValues[row] = ""; //set every field but the correct value field to null
    });
    
    fieldValues[AttributeTypeUtil.getDatabaseField(type)] = AttributeTypeUtil.useLookup(type) 
        ? rowdata["VALUE_LOOKUP.value"] 
        : rowdata["VALUE.value"];
    
    newWhere("AB_ATTRIBUTERELATION.AB_ATTRIBUTERELATIONID", attributeRelationId)
        .updateFields(fieldValues);
}

if (vars.get("$param.ObjectType_param") == "Person")
    DataPrivacyUtils.notifyNeedDataPrivacyUpdate(vars.get("$param.ObjectRowId_param"), vars.get("$param.ShowDsgvoMessage_param"));