public static Map<String, Object> exportVCard(DispatchContext dctx, Map<String, ? extends Object> context) {
Delegator delegator = (Delegator) dctx.getDelegator();
String partyId = (String) context.get("partyId");
File file = null;
try {
ContactModelFactory cmf = Pim.getContactModelFactory();
Contact contact = cmf.createContact();
PersonalIdentity pid = cmf.createPersonalIdentity();
String fullName = PartyHelper.getPartyName(delegator, partyId, false);
String[] name = fullName.split("\\s");
pid.setFirstname(name[0]);
pid.setLastname(name[1]);
contact.setPersonalIdentity(pid);
GenericValue postalAddress = PartyWorker.findPartyLatestPostalAddress(partyId, delegator);
Address address = cmf.createAddress();
address.setStreet(postalAddress.getString("address1"));
address.setCity(postalAddress.getString("city"));
address.setPostalCode(postalAddress.getString("postalCode"));
GenericValue state = postalAddress.getRelatedOne("StateProvinceGeo");
if (UtilValidate.isNotEmpty(state)) {
address.setRegion(state.getString("geoName"));
}
GenericValue countryGeo = postalAddress.getRelatedOne("CountryGeo");
if (UtilValidate.isNotEmpty(countryGeo)) {
String country = postalAddress.getRelatedOne("CountryGeo").getString("geoName");
address.setCountry(country);
address.setWork(true); // this can be better set by checking contactMechPurposeTypeId
}
contact.addAddress(address);
Communications communication = cmf.createCommunications();
contact.setCommunications(communication);
PhoneNumber number = cmf.createPhoneNumber();
GenericValue telecomNumber = PartyWorker.findPartyLatestTelecomNumber(partyId, delegator);
if (UtilValidate.isNotEmpty(telecomNumber)) {
number.setNumber(telecomNumber.getString("areaCode") + telecomNumber.getString("contactNumber"));
number.setWork(true); // this can be better set by checking contactMechPurposeTypeId
communication.addPhoneNumber(number);
}
EmailAddress email = cmf.createEmailAddress();
GenericValue emailAddress = PartyWorker.findPartyLatestContactMech(partyId, "EMAIL_ADDRESS", delegator);
if (UtilValidate.isNotEmpty(emailAddress.getString("infoString"))) {
email.setAddress(emailAddress.getString("infoString"));
communication.addEmailAddress(email);
}