How will I applied validation on two fields and restrict to saving records using esq
Like
1 comments
18:33 Dec 11, 2019
Hi Bhumika,
You should use asyncValidate function on the page. See example below:
define("ContactPageV2", ["ConfigurationConstants", "css!OpportunityCommonCSS"], function(ConfigurationConstants) {
return {
entitySchemaName: "Contact",
attributes: {},
modules: /**SCHEMA_MODULES*/{}/**SCHEMA_MODULES*/,
details: /**SCHEMA_DETAILS*/{}/**SCHEMA_DETAILS*/,
businessRules: /**SCHEMA_BUSINESS_RULES*/{}/**SCHEMA_BUSINESS_RULES*/,
methods: {
asyncValidate: function(callback, scope) {
this.callParent([function(result) {
if (!this.validateResponse(result)) {
return;
}
this.Terrasoft.chain(
function(next) {
var type = this.get("Type") && this.get("Type").value;
if (this.changedValues.hasOwnProperty("Type") &&
type === ConfigurationConstants.ContactType.Employee) {
this.validateAttachments(function(response) {
if (this.validateResponse(response)) {
next();
}
}, this);
} else {
next();
}
},
function(next) {
callback.call(scope, result);
next();
},
this
);
}, this]);
},
validateAttachments: function(callback, scope) {
var result = {
success: true
};
var esq = this.Ext.create("Terrasoft.EntitySchemaQuery", {
rootSchemaName: "ContactFile"
});
esq.addAggregationSchemaColumn("Id",
this.Terrasoft.AggregationType.COUNT, "AttachedFiles");
esq.filters.addItem(esq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL,
"Contact", this.get("Id")));
esq.getEntityCollection(function(response) {
if (response.success) {
if (response.collection.getItems()[0].get("AttachedFiles") < 2) {
result.message = this.get("Resources.Strings.InvalidAttachments");
result.success = false;
}
}
callback.call(scope || this, result);
}, this);
}
},
dataModels: /**SCHEMA_DATA_MODELS*/{}/**SCHEMA_DATA_MODELS*/,
diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/
};
});
Regards,
Dmytro
Show all comments