Question

Duplicate Field value validation

Hi,

In lead section, on qualifying lead I'm trying to get popup (error message) if two leads has same email Id 

If there is duplicate email Id I'm getting error message

But I'm not able to qualify lead if the lead has unique email Id. 

I have attached the code

methods: {

                 save: function() {

                        if (!this.checkRequiredActionColumns()) {

                            return;

                        }

                        return this.callParent(arguments);

                    },

                    /**

                     * Opens lead qualification page.

                     */

                    qualifyLead: function() {

                        var recordId = this.get("Id");

                        var token = "CardModuleV2/LeadQualificationPageV2/edit/" + recordId;

                        this.sandbox.publish("PushHistoryState", {hash: token});

                    },

                    /**

                     * Checks required parameters.

                     * @return {Boolean} Validation result.

                     */

                    checkRequiredActionColumns: function() {

                        var account = this.get("Account");

                        var contact = this.get("Contact");

                        if (!account && !contact) {

                            this.showInformationDialog(this.get("Resources.Strings.RequiredFieldsMessage"));

                            return false;

                        } 

                        

                        var recordEmail = this.get("Email");

                            var tempCount = 0;

                            var message = "";

                          if(recordEmail !== null && recordEmail !== "" && recordEmail !== undefined) 

                              {

                                var emailesq = this.Ext.create("Terrasoft.EntitySchemaQuery", {

                                rootSchemaName: "Lead"

                               });

                        

                                  emailesq.addColumn("Email", "Email");

                        

                                     var esqEmailFilter = emailesq.createColumnFilterWithParameter(Terrasoft.ComparisonType.EQUAL, 

                                                    "Email", recordEmail);

                                                    

                                  emailesq.filters.add("esqFirstFilter", esqEmailFilter);

                        

                                  emailesq.getEntityCollection(function (result) {

                                 if (!result.success) {

                                   this.showInformationDialog("Data query error");

                                   return false;

                                  }

                                else if (result.success){

                                result.collection.each(function (item) {

                                    tempCount = tempCount + 1;

                                    if(tempCount > 1){

                                    message = message + "Email " + item.get("Email") + " already exists\n";

                                                      if(message !== ""){

                                    this.showInformationDialog(message);

                                    return false;

                                     }

                                    }

                                   });

                                 }

                               else{

                               return true;

                               }

                          }, this);

                         }

                         else{

                         return true;

                         }

       

                    },

           }

Thanks in Advance

Like 0

Like

1 comments

Hi Akshaya,

The issue is most likely caused by the missing check for the collection items. When you run the ESQ to the Lead object, the system looks for the email giving you a response. This means that it is returning collection, however it is empty. Since, collection is returned, therefore it is passing your check else if (result.success){}.

Further you are working with collection items, but since no items indicated (no duplicates found) it just returns false and stops running the code. 

You need to add one more check for the length of returned collection:

if (result.collection.length !== 0)

Only if there are items to work with you run the each method, otherwise proceed further with saving.

Regards,

Anastasia

Show all comments