Добрый день. Я имею модальное окно для создания контакта с полями имя, фамилия, номер телефона, емаил и аккаунт, все поля сделаны обычными инпутами. Мне требуется создать триггер при создании контакта в письменном виде указывается имя аккаунта без всяких лукапов, если он есть - триггер привязывает к нему, если нет - триггер создает новый аккаунт и привязывает к нему. Подскажите пожалуйста как это сделать.
Вот пример моего кода модалки:
Component:
<aura:component description="modalCreateContact" controller="contactDataTableController">
<aura:attribute name="accForm" type="Account" default="{'sobjectType' : 'Account', 'Name': ''}"/>
<aura:attribute name="conForm" type="Contact" default="{'sobjectType' : 'Contact', 'FirstName': '',
'LastName': '',
'Email': '',
'Phone': ''}"/>
<aura:method name="submitDR" action="{!c.openModal}">
<aura:attribute name="showModalCreateContact" type="string"/>
<aura:attribute name="darkModalBackdrop" type="String"/>
</aura:method>
<section role="dialog" class="slds-modal slds-fade" aura:id="modalCreateContact">
<div class="slds-modal__container" style="width: 70vh;">
<div class="slds-modal__header">
<h2 class="slds-text-heading--medium">NEW CONTACT</h2>
<lightning:buttonIcon iconName="utility:close"
onclick="{!c.closeModal}"
alternativeText="close"
variant="bare-inverse"
class="slds-modal__close"/>
</div>
<div class="slds-modal__content slds-p-around--medium">
<div class="form-element__group">
<div class="slds-form-element__row">
<div class="slds-form-element ">
<lightning:input label="First Name" name="FirstName" value="{!v.conForm.FirstName}"/>
</div>
<div class="slds-form-element">
<lightning:input label="Last Name" name="LastName" required="true"
value="{!v.conForm.LastName}"/>
</div>
<div class="slds-form-element">
<lightning:input label="Email" name="Email" required="true" value="{!v.conForm.Email}"/>
</div>
<div class="slds-form-element">
<lightning:input label="Mobile Phone" name="Mobile Phone" value="{!v.conForm.Phone}"/>
</div>
<div class="slds-form-element">
<lightning:input label="Account" name="Account" value="{!v.accForm.Name}"/>
</div>
</div>
</div>
</div>
<div class="slds-modal__footer">
<lightning:button label="Save" onclick="{!c.saveModal}"/>
<lightning:button label="Close" onclick="{!c.closeModal}"/>
</div>
</div>
</section>
<div aura:id="modalBackdrop" class="slds-backdrop"></div>
</aura:component>
Controller
({
openModal: function (component, event, helper) {
var modalFade = component.find('modalCreateContact');
var modalBackdrop = component.find('modalBackdrop');
$A.util.addClass(modalFade, 'slds-fade-in-open');
$A.util.addClass(modalBackdrop, 'slds-backdrop_open');
},
closeModal: function (component, event, helper) {
var modalFade = component.find('modalCreateContact');
var modalBackdrop = component.find('modalBackdrop');
$A.util.removeClass(modalFade, 'slds-fade-in-open');
$A.util.removeClass(modalBackdrop, 'slds-backdrop_open');
},
saveModal: function (component, event, helper) {
var contactFormSave = component.get("v.conForm", "v.accForm");
var action = component.get("c.saveNewContact");
action.setParams({contactForm: contactFormSave});
action.setCallback(this, function (response) {
var state = response.getState();
if (state === "SUCCESS") {
var toastEvent = $A.get("e.force:showToast");
toastEvent.setParams({
"title": "Success!",
"message": "Contact create",
"type ": "success"
});
toastEvent.fire();
$A.get('e.force:refreshView').fire();
var modalFade = component.find('modalCreateContact');
var modalBackdrop = component.find('modalBackdrop');
$A.util.removeClass(modalFade, 'slds-fade-in-open');
$A.util.removeClass(modalBackdrop, 'slds-backdrop_open');
} else if (state === "ERROR") {
var errorMsg = '';
var errors = response.getError();
if (errors) {
if (errors[0] && errors[0].message) {
errorMsg = errors[0].message;
}
}
var toastEvent = $A.get("e.force:showToast");
toastEvent.setParams({
"title": "Error!",
"message": "Contact not created",
"type ": "error"
});
toastEvent.fire();
}
});
$A.enqueueAction(action);
},
});
Apex controller:
@AuraEnabled
public static Contact saveNewContact(Contact contactForm) {
upsert contactForm;
return contactForm;
}