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