use of com.helger.masterdata.person.ESalutation in project peppol-practical by phax.
the class CRMSubscriberMicroTypeConverter method convertToNative.
@Nullable
public CRMSubscriber convertToNative(@Nonnull final IMicroElement aElement) {
final CRMGroupManager aCRMGroupMgr = PPMetaManager.getCRMGroupMgr();
final String sSalutationID = aElement.getAttributeValue(ATTR_SALUTATION);
final ESalutation eSalutation = ESalutation.getFromIDOrNull(sSalutationID);
if (eSalutation == null && StringHelper.hasText(sSalutationID))
throw new IllegalStateException("Failed to resolve salutation ID '" + sSalutationID + "'");
final String sName = aElement.getAttributeValue(ATTR_NAME);
final String sEmailAddress = aElement.getAttributeValue(ATTR_EMAIL_ADDRESS);
final ICommonsSet<ICRMGroup> aGroups = new CommonsHashSet<>();
for (final IMicroElement eGroup : aElement.getAllChildElements(ELEMENT_ASSIGNED_GROUP)) {
final String sCRMGroupID = eGroup.getAttributeValue(ATTR_ID);
final ICRMGroup aCRMGroup = aCRMGroupMgr.getCRMGroupOfID(sCRMGroupID);
if (aCRMGroup == null)
throw new IllegalStateException("Failed to resolve CRM group with ID '" + sCRMGroupID + "'");
aGroups.add(aCRMGroup);
}
return new CRMSubscriber(getStubObject(aElement), eSalutation, sName, sEmailAddress, aGroups);
}
use of com.helger.masterdata.person.ESalutation in project peppol-practical by phax.
the class PagePublicNewsletterSubscribe method fillContent.
@Override
protected void fillContent(final WebPageExecutionContext aWPEC) {
final HCNodeList aNodeList = aWPEC.getNodeList();
final Locale aDisplayLocale = aWPEC.getDisplayLocale();
final CRMGroupManager aCRMGroupMgr = PPMetaManager.getCRMGroupMgr();
final CRMSubscriberManager aCRMSubscriberMgr = PPMetaManager.getCRMSubscriberMgr();
final FormErrorList aFormErrors = new FormErrorList();
ICommonsList<String> aSelectedCRMGroupIDs = null;
if (aWPEC.hasAction(CPageParam.ACTION_SAVE)) {
final String sSalutationID = aWPEC.params().getAsString(FIELD_SALUTATION);
final ESalutation eSalutation = ESalutation.getFromIDOrNull(sSalutationID);
final String sName = aWPEC.params().getAsString(FIELD_NAME);
final String sEmailAddress = aWPEC.params().getAsString(FIELD_EMAIL_ADDRESS);
aSelectedCRMGroupIDs = aWPEC.params().getAsStringList(FIELD_GROUP);
final ICommonsSet<ICRMGroup> aSelectedCRMGroups = new CommonsHashSet<>();
ICRMSubscriber aSameEmailAddressSubscriber = null;
if (StringHelper.hasNoText(sName))
aFormErrors.addFieldError(FIELD_NAME, "You must provide your name!");
if (StringHelper.hasNoText(sEmailAddress))
aFormErrors.addFieldError(FIELD_EMAIL_ADDRESS, "You must provide your email address!");
else if (!EmailAddressHelper.isValid(sEmailAddress))
aFormErrors.addFieldError(FIELD_EMAIL_ADDRESS, "The provided email address is invalid!");
else {
// Check if the email address is already in use
aSameEmailAddressSubscriber = aCRMSubscriberMgr.getCRMSubscriberOfEmailAddress(sEmailAddress);
}
if (aSelectedCRMGroupIDs != null)
for (final String sCRMGroupID : aSelectedCRMGroupIDs) {
final ICRMGroup aGroup = aCRMGroupMgr.getCRMGroupOfID(sCRMGroupID);
if (aGroup == null)
aFormErrors.addFieldError(FIELD_GROUP, "The selected mailing list is not existing!");
else
aSelectedCRMGroups.add(aGroup);
}
if (aSelectedCRMGroups.isEmpty())
aFormErrors.addFieldError(FIELD_GROUP, "At least one mailing list must be selected!");
else {
if (aSameEmailAddressSubscriber != null) {
// Merge with existing subscriber
aSelectedCRMGroups.addAll(aSameEmailAddressSubscriber.getAllAssignedGroups());
}
}
if (aFormErrors.isEmpty()) {
// Save
if (aSameEmailAddressSubscriber == null) {
// Create a new one
aCRMSubscriberMgr.createCRMSubscriber(eSalutation, sName, sEmailAddress, aSelectedCRMGroups);
} else {
// Update an existing one
aCRMSubscriberMgr.updateCRMSubscriber(aSameEmailAddressSubscriber.getID(), eSalutation, sName, sEmailAddress, aSelectedCRMGroups);
}
aNodeList.addChild(success("Successfully subscribed '" + sEmailAddress + "' to mailing lists"));
} else {
aNodeList.addChild(getUIHandler().createIncorrectInputBox(aWPEC));
}
}
final BootstrapForm aForm = getUIHandler().createFormSelf(aWPEC);
aForm.setLeft(3);
aForm.addFormGroup(new BootstrapFormGroup().setLabel("Your salutation").setCtrl(new HCSalutationSelect(new RequestField(FIELD_SALUTATION), aDisplayLocale)).setErrorList(aFormErrors.getListOfField(FIELD_SALUTATION)));
aForm.addFormGroup(new BootstrapFormGroup().setLabelMandatory("Your name").setCtrl(new HCEdit(new RequestField(FIELD_NAME))).setErrorList(aFormErrors.getListOfField(FIELD_NAME)));
aForm.addFormGroup(new BootstrapFormGroup().setLabelMandatory("Your email address").setCtrl(new HCEdit(new RequestField(FIELD_EMAIL_ADDRESS))).setErrorList(aFormErrors.getListOfField(FIELD_EMAIL_ADDRESS)));
{
final ICommonsList<? extends ICRMGroup> aAllCRMGroups = aCRMGroupMgr.getAll();
if (aAllCRMGroups.size() == 1) {
// No need for selection - use hidden field
aForm.addChild(new HCHiddenField(FIELD_GROUP, aAllCRMGroups.getFirst().getID()));
} else if (aAllCRMGroups.isNotEmpty()) {
// Show selection
final HCNodeList aGroups = new HCNodeList();
for (final ICRMGroup aCRMGroup : aAllCRMGroups.getSorted(IHasDisplayName.getComparatorCollating(aDisplayLocale))) {
final String sCRMGroupID = aCRMGroup.getID();
final RequestFieldBooleanMultiValue aRFB = new RequestFieldBooleanMultiValue(FIELD_GROUP, sCRMGroupID, false);
aGroups.addChild(new HCDiv().addChild(new HCCheckBox(aRFB)).addChild(" " + aCRMGroup.getDisplayName()));
}
aForm.addFormGroup(new BootstrapFormGroup().setLabelMandatory("Mailing lists to subscribe to").setCtrl(aGroups).setErrorList(aFormErrors.getListOfField(FIELD_GROUP)));
}
}
// Toolbar
final BootstrapButtonToolbar aToolbar = aForm.addAndReturnChild(new BootstrapButtonToolbar(aWPEC));
aToolbar.addHiddenField(CPageParam.PARAM_ACTION, CPageParam.ACTION_SAVE);
aToolbar.addSubmitButton("Subscribe", EDefaultIcon.YES);
aNodeList.addChild(aForm);
}
use of com.helger.masterdata.person.ESalutation in project peppol-practical by phax.
the class PageSecureCRMSubscriber method validateAndSaveInputParameters.
@Override
protected void validateAndSaveInputParameters(@Nonnull final WebPageExecutionContext aWPEC, @Nullable final ICRMSubscriber aSelectedObject, @Nonnull final FormErrorList aFormErrors, @Nonnull final EWebPageFormAction eFormAction) {
final HCNodeList aNodeList = aWPEC.getNodeList();
final CRMGroupManager aCRMGroupMgr = PPMetaManager.getCRMGroupMgr();
final CRMSubscriberManager aCRMSubscriberMgr = PPMetaManager.getCRMSubscriberMgr();
final String sSalutationID = aWPEC.params().getAsString(FIELD_SALUTATION);
final ESalutation eSalutation = ESalutation.getFromIDOrNull(sSalutationID);
final String sName = aWPEC.params().getAsString(FIELD_NAME);
final String sEmailAddress = aWPEC.params().getAsString(FIELD_EMAIL_ADDRESS);
final ICommonsList<String> aSelectedCRMGroupIDs = aWPEC.params().getAsStringList(FIELD_GROUP);
final ICommonsSet<ICRMGroup> aSelectedCRMGroups = new CommonsHashSet<>();
if (StringHelper.hasNoText(sName))
aFormErrors.addFieldError(FIELD_NAME, "A name for the CRM subscriber must be provided!");
if (StringHelper.hasNoText(sEmailAddress))
aFormErrors.addFieldError(FIELD_EMAIL_ADDRESS, "An email address must be provided!");
else if (!EmailAddressHelper.isValid(sEmailAddress))
aFormErrors.addFieldError(FIELD_EMAIL_ADDRESS, "The provided email address is invalid!");
else {
final ICRMSubscriber aSameEmailAddresSubscriber = aCRMSubscriberMgr.getCRMSubscriberOfEmailAddress(sEmailAddress);
if (aSameEmailAddresSubscriber != null) {
if (!eFormAction.isEdit() || aSameEmailAddresSubscriber != aSelectedObject)
aFormErrors.addFieldError(FIELD_EMAIL_ADDRESS, "A subscription for the provided email address is already present!");
}
}
if (aSelectedCRMGroupIDs != null)
for (final String sCRMGroupID : aSelectedCRMGroupIDs) {
final ICRMGroup aGroup = aCRMGroupMgr.getCRMGroupOfID(sCRMGroupID);
if (aGroup == null)
aFormErrors.addFieldError(FIELD_GROUP, "The selected group is not existing!");
else
aSelectedCRMGroups.add(aGroup);
}
if (aSelectedCRMGroups.isEmpty())
aFormErrors.addFieldError(FIELD_GROUP, "At least one group must be selected!");
if (aFormErrors.isEmpty()) {
// All fields are valid -> save
if (eFormAction.isEdit()) {
// We're editing an existing object
aCRMSubscriberMgr.updateCRMSubscriber(aSelectedObject.getID(), eSalutation, sName, sEmailAddress, aSelectedCRMGroups);
aNodeList.addChild(success("The CRM subscriber was successfully edited!"));
} else {
// We're creating a new object
aCRMSubscriberMgr.createCRMSubscriber(eSalutation, sName, sEmailAddress, aSelectedCRMGroups);
aNodeList.addChild(success("The new CRM subscriber was successfully created!"));
}
}
}
Aggregations