| 1 package com.dotmarketing.cms.contactus.action; 2 3 import java.util.Date ; 4 import java.util.List ; 5 6 import javax.servlet.http.HttpServletRequest ; 7 import javax.servlet.http.HttpServletResponse ; 8 9 import org.apache.struts.Globals; 10 import org.apache.struts.action.ActionErrors; 11 import org.apache.struts.action.ActionForm; 12 import org.apache.struts.action.ActionForward; 13 import org.apache.struts.action.ActionMapping; 14 import org.apache.struts.action.ActionMessage; 15 import org.apache.struts.action.ActionMessages; 16 import org.apache.struts.actions.DispatchAction; 17 18 import com.dotmarketing.beans.UserProxy; 19 import com.dotmarketing.cms.factories.PublicAddressFactory; 20 import com.dotmarketing.cms.factories.PublicCompanyFactory; 21 import com.dotmarketing.cms.factories.PublicEncryptionFactory; 22 import com.dotmarketing.cms.factories.PublicRoleFactory; 23 import com.dotmarketing.cms.factories.PublicUserFactory; 24 import com.dotmarketing.cms.inquiry.struts.InquiryForm; 25 import com.dotmarketing.cms.inquiry.struts.InquiryFormExt; 26 import com.dotmarketing.db.DotHibernate; 27 import com.dotmarketing.factories.ClickstreamFactory; 28 import com.dotmarketing.factories.InodeFactory; 29 import com.dotmarketing.factories.UserProxyFactory; 30 import com.dotmarketing.portlets.categories.factories.CategoryFactory; 31 import com.dotmarketing.portlets.categories.model.Category; 32 import com.dotmarketing.portlets.user.factories.UserCommentsFactory; 33 import com.dotmarketing.portlets.user.model.UserComment; 34 import com.dotmarketing.util.Config; 35 import com.dotmarketing.util.Logger; 36 import com.dotmarketing.util.Mailer; 37 import com.dotmarketing.util.UtilHTML; 38 import com.dotmarketing.util.UtilMethods; 39 import com.dotmarketing.util.WebKeys; 40 import com.liferay.portal.ejb.UserLocalManagerUtil; 41 import com.liferay.portal.model.Address; 42 import com.liferay.portal.model.Company; 43 import com.liferay.portal.model.Role; 44 import com.liferay.portal.model.User; 45 46 public class ContactUsExtAction extends DispatchAction { 47 public ActionForward unspecified(ActionMapping mapping, ActionForm lf, HttpServletRequest request, HttpServletResponse response) throws Exception { 48 49 InquiryFormExt form = (InquiryFormExt) lf; 50 User u = (User) request.getSession().getAttribute(WebKeys.CMS_USER); 51 52 if (u != null) { 53 54 List adds = PublicAddressFactory.getAddressesByUserId(u.getUserId()); 55 User user = UserLocalManagerUtil.getUserById(u.getUserId()); 56 57 form.setFirstName(user.getFirstName()); 58 form.setLastName(user.getLastName()); 59 form.setUserName(user.getEmailAddress()); 60 if (adds != null && adds.size() > 0) { 61 Address a = (Address) adds.get(0); 62 form.setPhone(a.getPhone()); 63 } 64 } 65 66 ActionForward af = (mapping.findForward("contactUsPage")); 67 68 return af; 69 70 } 71 72 public ActionForward contactUs(ActionMapping mapping, ActionForm lf, HttpServletRequest request, HttpServletResponse response) throws Exception { 73 try { 74 DotHibernate.startTransaction(); 76 InquiryFormExt form = (InquiryFormExt) lf; 77 78 ActionErrors ae = form.validate(mapping, request); 79 if ((ae != null) && (ae.size() > 0)) { 80 saveMessages(request, ae); 81 ActionForward af = (mapping.findForward("contactUsPage")); 82 return af; 83 } 84 85 createAccount(form, request); 86 sendEmail(form, request); 87 88 DotHibernate.commitTransaction(); 90 91 ActionMessages am = new ActionMessages(); 92 am.add(Globals.ERROR_KEY, new ActionMessage("message.contactUsThankYou")); 93 saveMessages(request, am); 94 95 ActionForward af = (mapping.findForward("thankYouPage")); 96 return af; 97 } catch (Exception ex) { 98 Logger.debug(ex.toString()); 99 DotHibernate.rollbackTransaction(); 100 101 ActionMessages am = new ActionMessages(); 102 am.add(Globals.ERROR_KEY, new ActionMessage("message.contactUsError")); 103 saveMessages(request, am); 104 105 ActionForward af = (mapping.findForward("contactUsPage")); 106 return af; 107 } 108 } 109 110 private void createAccount(InquiryFormExt form, HttpServletRequest request) { 111 112 User user = PublicUserFactory.getUserByEmail(form.getEmail()); 113 User defaultUser = PublicUserFactory.getDefaultUser(); 114 Date today = new Date (); 115 116 Company company = PublicCompanyFactory.getDefaultCompany(); 118 user.setEmailAddress(form.getEmail()); 119 user.setFirstName(form.getFirstName() == null ? "" : form.getFirstName()); 120 user.setMiddleName(form.getMiddleName() == null ? "" : form.getMiddleName()); 121 user.setLastName(form.getLastName() == null ? "" : form.getLastName()); 122 user.setNickName(""); 123 user.setCompanyId(company.getCompanyId()); 124 user.setLastLoginIP(request.getRemoteAddr()); 125 user.setLastLoginDate(today); 126 user.setLoginIP(request.getRemoteAddr()); 127 user.setLoginDate(today); 128 user.setPasswordEncrypted(true); 129 user.setComments(form.getComments()); 130 user.setGreeting("Welcome, " + user.getFullName() + "!"); 131 132 if (user.isNew()) { 134 String pass = PublicEncryptionFactory.getRandomPassword(); 135 form.setPassword(pass); 136 user.setPassword(PublicEncryptionFactory.digestString(form.getPassword())); 137 138 user.setLanguageId(defaultUser.getLanguageId()); 139 user.setTimeZoneId(defaultUser.getTimeZoneId()); 140 user.setSkinId(defaultUser.getSkinId()); 141 user.setDottedSkins(defaultUser.isDottedSkins()); 142 user.setRoundedSkins(defaultUser.isRoundedSkins()); 143 user.setResolution(defaultUser.getResolution()); 144 user.setRefreshRate(defaultUser.getRefreshRate()); 145 user.setLayoutIds(""); 146 user.setActive(true); 147 user.setCreateDate(today); 148 } 149 PublicUserFactory.save(user); 150 152 UserProxy userProxy = UserProxyFactory.getUserProxy(user.getUserId()); 154 userProxy.setPrefix(""); 155 userProxy.setTitle(form.getTitle()); 156 userProxy.setOrganization(form.getOrganization()); 157 userProxy.setUserId(user.getUserId()); 158 UserProxyFactory.saveUserProxy(userProxy); 159 161 try { 163 List <Address> addresses = PublicAddressFactory.getAddressesByUserId(user.getUserId()); 164 Address address = (addresses.size() > 0 ? addresses.get(0) : PublicAddressFactory.getInstance()); 165 address.setDescription(""); 166 address.setStreet1(form.getAddress1() == null ? "" : form.getAddress1()); 167 address.setStreet2(form.getAddress2() == null ? "" : form.getAddress2()); 168 address.setCity(form.getCity() == null ? "" : form.getCity()); 169 address.setState(form.getState() == null ? "" : form.getState()); 170 address.setZip(form.getZip() == null ? "" : form.getZip()); 171 String phone = form.getPhone(); 173 address.setPhone(phone == null ? "" : phone); 174 address.setUserId(user.getUserId()); 175 address.setCompanyId(company.getCompanyId()); 176 PublicAddressFactory.save(address); 177 } catch (Exception ex) { 178 ex.printStackTrace(); 179 Logger.debug(this, ex.toString()); 180 } 181 183 185 List <Category> oldOrganizationTypes = InodeFactory.getChildrenOfClassByRelationType(userProxy,Category.class,"Organization Type"); 187 for(Category oldOrganizationId : oldOrganizationTypes) 188 { 189 userProxy.deleteChild(oldOrganizationId,"Organization Type"); 190 } 191 String [] organizationTypes = form.getOrganizationType(); 192 for(String organizationTypeId : organizationTypes) 193 { 194 Category newOrganizationType = CategoryFactory.getCategory(organizationTypeId); 195 userProxy.addChild(newOrganizationType,"Organization Type"); 196 } 197 198 215 216 221 222 if (UtilMethods.isSet(form.getMessage())) { 224 UserComment comment = new UserComment(); 225 226 comment.setComment(form.getMessage()); 227 comment.setDate(today); 228 comment.setMethod(UserComment.METHOD_WEB); 229 comment.setType(UserComment.TYPE_INCOMING); 230 comment.setSubject("User Message"); 231 comment.setCommentUserId(user.getUserId()); 232 comment.setUserId(user.getUserId()); 233 UserCommentsFactory.saveUserComment(comment); 234 } 235 236 if ((UtilMethods.isSet(form.getTotalText())) && (Integer.parseInt(form.getTotalText()) > 0)) 237 { 238 UserComment comment = new UserComment(); 239 240 String deliveryValue = form.getDelivery(); 241 String enterpriseSupportValue = form.getEnterpriseSupport(); 242 String hoursSupportValue = form.getHoursSupport(); 243 244 StringBuffer message = new StringBuffer (); 245 message.append("<table>"); 246 message.append("<tr><td>"); 247 message.append("<b>Delivery and Hosting Options: </b>"); 248 message.append(deliveryValue); 249 message.append("</td></tr>"); 250 message.append("<tr><td>"); 251 message.append("<b>Training and Support Options</b>"); 252 message.append("</td></tr>"); 253 message.append("<tr><td>"); 254 message.append("<b>Ongoing Enterprise Support: Maintenance & Reliability Guarantee: </b>"); 255 message.append(enterpriseSupportValue); 256 message.append("</td></tr>"); 257 message.append("<tr><td>"); 258 message.append("<b>10 hours Support & Training: </b>"); 259 message.append(hoursSupportValue); 260 message.append("</td></tr>"); 261 message.append("<tr><td>"); 262 message.append("<b>Total: </b>"); 263 message.append(form.getTotalText()); 264 message.append("</td></tr>"); 265 message.append("<tr><td>"); 266 message.append("<b>Recurring Total: </b>"); 267 message.append(form.getRecurTotalText()); 268 message.append("</td></tr>"); 269 message.append("</table>"); 270 271 comment.setComment(message.toString()); 272 comment.setDate(today); 273 comment.setMethod(UserComment.METHOD_WEB); 274 comment.setType(UserComment.TYPE_INCOMING); 275 comment.setSubject("User Message"); 276 comment.setCommentUserId(user.getUserId()); 277 comment.setUserId(user.getUserId()); 278 UserCommentsFactory.saveUserComment(comment); 279 } 280 281 283 Role defaultRole = PublicRoleFactory.findRoleByName(Config.getStringProperty("CMS_VIEWER_ROLE")); 284 String roleId = defaultRole.getRoleId(); 285 if (UtilMethods.isSet(roleId)) { 286 PublicRoleFactory.addRoleToUser(roleId, user); 287 } 288 289 290 ClickstreamFactory.setClickStreamUser(user.getUserId(), request); 291 292 } 293 294 public void sendEmail(InquiryFormExt form, HttpServletRequest request) { 295 Mailer mailer = new Mailer(); 296 297 StringBuffer body = new StringBuffer (); 299 300 body.append("<table border=\"1\">"); 301 body.append("<tr><td align=\"center\"><b>FIELD</b></td><td align=\"center\"><b>VALUE</b></td></tr>"); 302 String email = (UtilMethods.isSet(form.getEmail()) ? form.getEmail() : " "); 304 body.append("<tr><td valign=\"top\"><b>Email Address:</b></td><td>" + email + "</td></tr>"); 305 String firstName = (UtilMethods.isSet(form.getFirstName()) ? form.getFirstName() : " "); 307 body.append("<tr><td valign=\"top\"><b>First Name:</b></td><td>" + firstName + "</td></tr>"); 308 String lastName = (UtilMethods.isSet(form.getLastName()) ? form.getLastName() : " "); 310 body.append("<tr><td valign=\"top\"><b>Last Name:</b></td><td>" + lastName + "</td></tr>"); 311 String title = (UtilMethods.isSet(form.getTitle()) ? form.getTitle() : " "); 313 body.append("<tr><td valign=\"top\"><b>Title:</b></td><td>" + title + "</td></tr>"); 314 String organization = (UtilMethods.isSet(form.getOrganization()) ? form.getOrganization() : " "); 316 body.append("<tr><td valign=\"top\"><b>Organization:</b></td><td>" + organization + "</td></tr>"); 317 String phone = (UtilMethods.isSet(form.getPhone()) ? form.getPhone() : ""); 319 body.append("<tr><td valign=\"top\"><b>Phone:</b></td><td>" + phone + "</td></tr>"); 320 String comments = (UtilMethods.isSet(form.getMessage()) ? form.getMessage() : " "); 322 body.append("<tr><td valign=\"top\"><b>Comment:</b></td><td>" + comments + "</td></tr>"); 323 body.append("<tr><td valign=\"top\"><b>Organization Type:</b></td><td>" + UtilHTML.getCategoriesByEntityName("organizationType","Organization Type",form.getOrganizationType(),false,true,5,true) + "</td></tr>"); 325 326 if(UtilMethods.isSet(form.getTotalText()) && Integer.parseInt(form.getTotalText()) > 0) 327 { 328 String deliveryValue = form.getDelivery(); 329 String enterpriseSupportValue = form.getEnterpriseSupport(); 330 String hoursSupportValue = form.getHoursSupport(); 331 332 StringBuffer message = new StringBuffer (); 333 message.append("<table>"); 334 message.append("<tr><td>"); 335 message.append("<b>Delivery and Hosting Options: </b>"); 336 message.append(deliveryValue); 337 message.append("</td></tr>"); 338 message.append("<tr><td>"); 339 message.append("<b>Training and Support Options</b>"); 340 message.append("</td></tr>"); 341 message.append("<tr><td>"); 342 message.append("<b>Ongoing Enterprise Support: Maintenance & Reliability Guarantee: </b>"); 343 message.append(enterpriseSupportValue); 344 message.append("</td></tr>"); 345 message.append("<tr><td>"); 346 message.append("<b>10 hours Support & Training: </b>"); 347 message.append(hoursSupportValue); 348 message.append("</td></tr>"); 349 message.append("<tr><td>"); 350 message.append("<b>Total: </b>"); 351 message.append(form.getTotalText()); 352 message.append("</td></tr>"); 353 message.append("<tr><td>"); 354 message.append("<b>Recurring Total: </b>"); 355 message.append(form.getRecurTotalText()); 356 message.append("</td></tr>"); 357 message.append("</table>"); 358 359 body.append("<tr><td valign=\"top\"><b>Products and Services:</b></td><td>" + message.toString() + "</td></tr>"); 361 } 362 363 body.append("</table>"); 365 366 String emailBody = body.toString(); 367 Company company = PublicCompanyFactory.getDefaultCompany(); 369 370 String toEmail = request.getParameter("toEmail"); 371 String subject = request.getParameter("subject"); 372 String fromName = request.getParameter("fromName"); 373 String fromEmail = request.getParameter("fromEmail"); 374 375 toEmail = (UtilMethods.isSet(toEmail) ? toEmail : Config.getStringProperty("CONTACT_US_MAIL_ADDRESS")); 376 subject = (UtilMethods.isSet(subject) ? subject : Config.getStringProperty("CONTACT_US_MAIL_SUBJECT")); 377 fromName = (UtilMethods.isSet(fromName) ? fromName : Config.getStringProperty("CONTACT_US_MAIL_NAME")); 378 fromEmail = (UtilMethods.isSet(fromEmail) ? fromEmail : Config.getStringProperty("CONTACT_US_MAIL_RETURN_ADDRESS")); 379 380 fromName = (UtilMethods.isSet(fromName) ? fromName : company.getName()); 381 fromEmail = (UtilMethods.isSet(fromEmail) ? fromEmail : company.getEmailAddress()); 382 383 mailer.setToEmail(toEmail); 384 mailer.setSubject(subject); 385 mailer.setFromName(fromName); 386 mailer.setFromEmail(fromEmail); 387 mailer.setHTMLBody(emailBody); 388 mailer.sendMessage(); 389 } 390 } | Popular Tags |