KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > dotmarketing > cms > contactus > action > ContactUsExtAction


1 package com.dotmarketing.cms.contactus.action;
2
3 import java.util.Date JavaDoc;
4 import java.util.List JavaDoc;
5
6 import javax.servlet.http.HttpServletRequest JavaDoc;
7 import javax.servlet.http.HttpServletResponse JavaDoc;
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 JavaDoc request, HttpServletResponse JavaDoc response) throws Exception JavaDoc {
48         
49         InquiryFormExt form = (InquiryFormExt) lf;
50         User u = (User) request.getSession().getAttribute(WebKeys.CMS_USER);
51         
52         if (u != null) {
53             
54             List JavaDoc 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 JavaDoc request, HttpServletResponse JavaDoc response) throws Exception JavaDoc {
73         try {
74             // Start the transaction
75
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             // Committ the transaction
89
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 JavaDoc 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 JavaDoc request) {
111         
112         User user = PublicUserFactory.getUserByEmail(form.getEmail());
113         User defaultUser = PublicUserFactory.getDefaultUser();
114         Date JavaDoc today = new Date JavaDoc();
115         
116         // ### CREATE USER ###
117
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         // Set defaults values
133
if (user.isNew()) {
134             String JavaDoc 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         // ### END CREATE USER ###
151

152         // ### CREATE USER_PROXY ###
153
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         // ### END CRETE USER_PROXY ###
160

161         // ### CREATE ADDRESS ###
162
try {
163             List JavaDoc<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             // address.setPhone(createAccountForm.getPhone());
172
String JavaDoc 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 JavaDoc ex) {
178             ex.printStackTrace();
179             Logger.debug(this, ex.toString());
180         }
181         // ### END CREATE ADDRESS ###
182

183         // ### SAVE CATEGORIES ###
184

185         //Organization Type
186
List JavaDoc<Category> oldOrganizationTypes = InodeFactory.getChildrenOfClassByRelationType(userProxy,Category.class,"Organization Type");
187         for(Category oldOrganizationId : oldOrganizationTypes)
188         {
189             userProxy.deleteChild(oldOrganizationId,"Organization Type");
190         }
191         String JavaDoc[] organizationTypes = form.getOrganizationType();
192         for(String JavaDoc organizationTypeId : organizationTypes)
193         {
194             Category newOrganizationType = CategoryFactory.getCategory(organizationTypeId);
195             userProxy.addChild(newOrganizationType,"Organization Type");
196         }
197         
198         //Iam
199
/*
200          List<Category> oldIams = InodeFactory.getChildrenOfClassByRelationType(userProxy,Category.class,"Iam");
201          for(Category oldIam : oldIams) { userProxy.deleteChild(oldIam,"Iam"); }
202          String[] iamsId = form.getIama(); for(String iamId : iamsId) {
203          Category newIam = CategoryFactory.getCategory(iamId);
204          userProxy.addChild(newIam,"Iam"); }
205          
206          List<Category> oldContactMeList =
207          InodeFactory.getChildrenOfClassByRelationType(userProxy,Category.class,"ContactMe");
208          for(Category oldContactMe : oldContactMeList) {
209          userProxy.deleteChild(oldContactMe,"ContactMe"); } String[]
210          contactMeIds = form.getContactMe(); for(String contactMeId :
211          contactMeIds) { Category newComtactMe =
212          CategoryFactory.getCategory(contactMeId);
213          userProxy.addChild(newComtactMe,"ContactMe"); }
214          */

215         
216         // ### END SAVE CATEGORIES ###
217
/*
218          * if (form.getMail()) { //Subscribe to the mailing list
219          * MyAccountAction.subscribeDotCMSMailingList(user); }
220          */

221         
222         // ### BUILD THE USER COMMENT ###
223
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 JavaDoc deliveryValue = form.getDelivery();
241             String JavaDoc enterpriseSupportValue = form.getEnterpriseSupport();
242             String JavaDoc hoursSupportValue = form.getHoursSupport();
243                         
244             StringBuffer JavaDoc message = new StringBuffer JavaDoc();
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         // ### END BUILD THE USER COMMENT ###
282

283         Role defaultRole = PublicRoleFactory.findRoleByName(Config.getStringProperty("CMS_VIEWER_ROLE"));
284         String JavaDoc roleId = defaultRole.getRoleId();
285         if (UtilMethods.isSet(roleId)) {
286             PublicRoleFactory.addRoleToUser(roleId, user);
287         }
288         
289         /* associate user with their clickstream request */
290         ClickstreamFactory.setClickStreamUser(user.getUserId(), request);
291         
292     }
293     
294     public void sendEmail(InquiryFormExt form, HttpServletRequest JavaDoc request) {
295         Mailer mailer = new Mailer();
296         
297         // ### CREATE MAIL ###
298
StringBuffer JavaDoc body = new StringBuffer JavaDoc();
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         // email
303
String JavaDoc email = (UtilMethods.isSet(form.getEmail()) ? form.getEmail() : "&nbsp;");
304         body.append("<tr><td valign=\"top\"><b>Email Address:</b></td><td>" + email + "</td></tr>");
305         // first name
306
String JavaDoc firstName = (UtilMethods.isSet(form.getFirstName()) ? form.getFirstName() : "&nbsp;");
307         body.append("<tr><td valign=\"top\"><b>First Name:</b></td><td>" + firstName + "</td></tr>");
308         // last name
309
String JavaDoc lastName = (UtilMethods.isSet(form.getLastName()) ? form.getLastName() : "&nbsp;");
310         body.append("<tr><td valign=\"top\"><b>Last Name:</b></td><td>" + lastName + "</td></tr>");
311         // title
312
String JavaDoc title = (UtilMethods.isSet(form.getTitle()) ? form.getTitle() : "&nbsp;");
313         body.append("<tr><td valign=\"top\"><b>Title:</b></td><td>" + title + "</td></tr>");
314         // organization
315
String JavaDoc organization = (UtilMethods.isSet(form.getOrganization()) ? form.getOrganization() : "&nbsp;");
316         body.append("<tr><td valign=\"top\"><b>Organization:</b></td><td>" + organization + "</td></tr>");
317         // Phone
318
String JavaDoc phone = (UtilMethods.isSet(form.getPhone()) ? form.getPhone() : "");
319         body.append("<tr><td valign=\"top\"><b>Phone:</b></td><td>" + phone + "</td></tr>");
320         // comments
321
String JavaDoc comments = (UtilMethods.isSet(form.getMessage()) ? form.getMessage() : "&nbsp;");
322         body.append("<tr><td valign=\"top\"><b>Comment:</b></td><td>" + comments + "</td></tr>");
323         //Organization Type
324
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 JavaDoc deliveryValue = form.getDelivery();
329             String JavaDoc enterpriseSupportValue = form.getEnterpriseSupport();
330             String JavaDoc hoursSupportValue = form.getHoursSupport();
331             
332             StringBuffer JavaDoc message = new StringBuffer JavaDoc();
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             //product
360
body.append("<tr><td valign=\"top\"><b>Products and Services:</b></td><td>" + message.toString() + "</td></tr>");
361         }
362         
363         // end table
364
body.append("</table>");
365         
366         String JavaDoc emailBody = body.toString();
367         // ### END CREATE MAIL ###
368
Company company = PublicCompanyFactory.getDefaultCompany();
369         
370         String JavaDoc toEmail = request.getParameter("toEmail");
371         String JavaDoc subject = request.getParameter("subject");
372         String JavaDoc fromName = request.getParameter("fromName");
373         String JavaDoc 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