KickJava   Java API By Example, From Geeks To Geeks.

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


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.db.DotHibernate;
26 import com.dotmarketing.factories.ClickstreamFactory;
27 import com.dotmarketing.factories.UserProxyFactory;
28 import com.dotmarketing.portlets.user.factories.UserCommentsFactory;
29 import com.dotmarketing.portlets.user.model.UserComment;
30 import com.dotmarketing.util.Config;
31 import com.dotmarketing.util.Logger;
32 import com.dotmarketing.util.Mailer;
33 import com.dotmarketing.util.UtilMethods;
34 import com.dotmarketing.util.WebKeys;
35 import com.liferay.portal.ejb.UserLocalManagerUtil;
36 import com.liferay.portal.model.Address;
37 import com.liferay.portal.model.Company;
38 import com.liferay.portal.model.Role;
39 import com.liferay.portal.model.User;
40
41 public class ContactUsAction extends DispatchAction {
42     public ActionForward unspecified(ActionMapping mapping, ActionForm lf, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws Exception JavaDoc {
43
44         InquiryForm form = (InquiryForm) lf;
45         User u = (User) request.getSession().getAttribute(WebKeys.CMS_USER);
46
47         if (u != null) {
48
49             List JavaDoc adds = PublicAddressFactory.getAddressesByUserId(u.getUserId());
50             User user = UserLocalManagerUtil.getUserById(u.getUserId());
51
52             form.setFirstName(user.getFirstName());
53             form.setLastName(user.getLastName());
54             form.setUserName(user.getEmailAddress());
55             if (adds != null && adds.size() > 0) {
56                 Address a = (Address) adds.get(0);
57                 form.setPhone(a.getPhone());
58             }
59         }
60
61         ActionForward af = (mapping.findForward("contactUsPage"));
62
63         return af;
64
65     }
66
67     public ActionForward contactUs(ActionMapping mapping, ActionForm lf, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws Exception JavaDoc {
68         try {
69             // Start the transaction
70
DotHibernate.startTransaction();
71             InquiryForm form = (InquiryForm) lf;
72
73             ActionErrors ae = form.validate(mapping, request);
74             if ((ae != null) && (ae.size() > 0)) {
75                 saveMessages(request, ae);
76                 ActionForward af = (mapping.findForward("contactUsPage"));
77                 return af;
78             }
79
80             createAccount(form, request);
81             sendEmail(form, request);
82
83             // Committ the transaction
84
DotHibernate.commitTransaction();
85
86             ActionMessages am = new ActionMessages();
87             am.add(Globals.ERROR_KEY, new ActionMessage("message.contactUsThankYou"));
88             saveMessages(request, am);
89
90             ActionForward af = (mapping.findForward("thankYouPage"));
91             return af;
92         } catch (Exception JavaDoc ex) {
93             Logger.debug(ex.toString());
94             DotHibernate.rollbackTransaction();
95
96             ActionMessages am = new ActionMessages();
97             am.add(Globals.ERROR_KEY, new ActionMessage("message.contactUsError"));
98             saveMessages(request, am);
99
100             ActionForward af = (mapping.findForward("contactUsPage"));
101             return af;
102         }
103     }
104
105     private void createAccount(InquiryForm form, HttpServletRequest JavaDoc request) {
106
107         User user = PublicUserFactory.getUserByEmail(form.getEmail());
108         User defaultUser = PublicUserFactory.getDefaultUser();
109         Date JavaDoc today = new Date JavaDoc();
110
111         // ### CREATE USER ###
112
Company company = PublicCompanyFactory.getDefaultCompany();
113         user.setEmailAddress(form.getEmail());
114         user.setFirstName(form.getFirstName() == null ? "" : form.getFirstName());
115         user.setMiddleName(form.getMiddleName() == null ? "" : form.getMiddleName());
116         user.setLastName(form.getLastName() == null ? "" : form.getLastName());
117         user.setNickName("");
118         user.setCompanyId(company.getCompanyId());
119         user.setLastLoginIP(request.getRemoteAddr());
120         user.setLastLoginDate(today);
121         user.setLoginIP(request.getRemoteAddr());
122         user.setLoginDate(today);
123         user.setPasswordEncrypted(true);
124         user.setComments(form.getComments());
125         user.setGreeting("Welcome, " + user.getFullName() + "!");
126
127         // Set defaults values
128
if (user.isNew()) {
129             String JavaDoc pass = PublicEncryptionFactory.getRandomPassword();
130             form.setPassword(pass);
131             user.setPassword(PublicEncryptionFactory.digestString(form.getPassword()));
132
133             user.setLanguageId(defaultUser.getLanguageId());
134             user.setTimeZoneId(defaultUser.getTimeZoneId());
135             user.setSkinId(defaultUser.getSkinId());
136             user.setDottedSkins(defaultUser.isDottedSkins());
137             user.setRoundedSkins(defaultUser.isRoundedSkins());
138             user.setResolution(defaultUser.getResolution());
139             user.setRefreshRate(defaultUser.getRefreshRate());
140             user.setLayoutIds("");
141             user.setActive(true);
142             user.setCreateDate(today);
143         }
144         PublicUserFactory.save(user);
145         // ### END CREATE USER ###
146

147         // ### CREATE USER_PROXY ###
148
UserProxy userProxy = UserProxyFactory.getUserProxy(user.getUserId());
149         userProxy.setPrefix("");
150         userProxy.setTitle(form.getTitle());
151         userProxy.setOrganization(form.getOrganization());
152         userProxy.setUserId(user.getUserId());
153         UserProxyFactory.saveUserProxy(userProxy);
154         // ### END CRETE USER_PROXY ###
155

156         // ### CREATE ADDRESS ###
157
try {
158             List JavaDoc<Address> addresses = PublicAddressFactory.getAddressesByUserId(user.getUserId());
159             Address address = (addresses.size() > 0 ? addresses.get(0) : PublicAddressFactory.getInstance());
160             address.setStreet1(form.getAddress1() == null ? "" : form.getAddress1());
161             address.setStreet2(form.getAddress2() == null ? "" : form.getAddress2());
162             address.setCity(form.getCity() == null ? "" : form.getCity());
163             address.setState(form.getState() == null ? "" : form.getState());
164             address.setZip(form.getZip() == null ? "" : form.getZip());
165             // address.setPhone(createAccountForm.getPhone());
166
String JavaDoc phone = form.getPhone();
167             address.setPhone(phone == null ? "" : phone);
168             address.setUserId(user.getUserId());
169             address.setCompanyId(company.getCompanyId());
170             PublicAddressFactory.save(address);
171         } catch (Exception JavaDoc ex) {
172             ex.printStackTrace();
173             Logger.debug(this, ex.toString());
174         }
175         // ### END CREATE ADDRESS ###
176

177         // ### SAVE CATEGORIES ###
178
/*
179          * //Interest List<Category> oldInterests =
180          * InodeFactory.getChildrenOfClassByRelationType(userProxy,Category.class,"Interest");
181          * for(Category oldInterest : oldInterests) {
182          * userProxy.deleteChild(oldInterest,"Interest"); } String[] interestsId =
183          * form.getInterests(); for(String interestId : interestsId) { Category
184          * newInterest = CategoryFactory.getCategory(interestId);
185          * userProxy.addChild(newInterest,"Interest"); }
186          *
187          * //Iam
188          *
189          * List<Category> oldIams =
190          * InodeFactory.getChildrenOfClassByRelationType(userProxy,Category.class,"Iam");
191          * for(Category oldIam : oldIams) { userProxy.deleteChild(oldIam,"Iam"); }
192          * String[] iamsId = form.getIama(); for(String iamId : iamsId) {
193          * Category newIam = CategoryFactory.getCategory(iamId);
194          * userProxy.addChild(newIam,"Iam"); }
195          *
196          * List<Category> oldContactMeList =
197          * InodeFactory.getChildrenOfClassByRelationType(userProxy,Category.class,"ContactMe");
198          * for(Category oldContactMe : oldContactMeList) {
199          * userProxy.deleteChild(oldContactMe,"ContactMe"); } String[]
200          * contactMeIds = form.getContactMe(); for(String contactMeId :
201          * contactMeIds) { Category newComtactMe =
202          * CategoryFactory.getCategory(contactMeId);
203          * userProxy.addChild(newComtactMe,"ContactMe"); }
204          */

205         // ### END SAVE CATEGORIES ###
206
/*
207          * if (form.getMail()) { //Subscribe to the mailing list
208          * MyAccountAction.subscribeDotCMSMailingList(user); }
209          */

210
211         // ### BUILD THE USER COMMENT ###
212
if (UtilMethods.isSet(form.getMessage())) {
213             UserComment comment = new UserComment();
214
215             comment.setComment(form.getMessage());
216             comment.setDate(today);
217             comment.setMethod(UserComment.METHOD_WEB);
218             comment.setType(UserComment.TYPE_INCOMING);
219             comment.setSubject("User Message");
220             comment.setCommentUserId(user.getUserId());
221             comment.setUserId(user.getUserId());
222             UserCommentsFactory.saveUserComment(comment);
223         }
224
225         // ### END BUILD THE USER COMMENT ###
226

227         Role defaultRole = PublicRoleFactory.findRoleByName(Config.getStringProperty("CMS_VIEWER_ROLE"));
228         String JavaDoc roleId = defaultRole.getRoleId();
229         if (UtilMethods.isSet(roleId)) {
230             PublicRoleFactory.addRoleToUser(roleId, user);
231         }
232
233         /* associate user with their clickstream request */
234         ClickstreamFactory.setClickStreamUser(user.getUserId(), request);
235
236     }
237
238     public void sendEmail(InquiryForm form, HttpServletRequest JavaDoc request) {
239         Mailer mailer = new Mailer();
240
241         // ### CREATE MAIL ###
242
StringBuffer JavaDoc body = new StringBuffer JavaDoc();
243
244         body.append("<table border=\"1\">");
245         body.append("<tr><td align=\"center\"><b>FIELD</b></td><td align=\"center\"><b>VALUE</b></td></tr>");
246         // email
247
String JavaDoc email = (UtilMethods.isSet(form.getEmail()) ? form.getEmail() : "&nbsp;");
248         body.append("<tr><td valign=\"top\"><b>Email Address:</b></td><td>" + email + "</td></tr>");
249         // first name
250
String JavaDoc firstName = (UtilMethods.isSet(form.getFirstName()) ? form.getFirstName() : "&nbsp;");
251         body.append("<tr><td valign=\"top\"><b>First Name:</b></td><td>" + firstName + "</td></tr>");
252         // last name
253
String JavaDoc lastName = (UtilMethods.isSet(form.getLastName()) ? form.getLastName() : "&nbsp;");
254         body.append("<tr><td valign=\"top\"><b>Last Name:</b></td><td>" + lastName + "</td></tr>");
255         // title
256
String JavaDoc title = (UtilMethods.isSet(form.getTitle()) ? form.getTitle() : "&nbsp;");
257         body.append("<tr><td valign=\"top\"><b>Title:</b></td><td>" + title + "</td></tr>");
258         // organization
259
String JavaDoc organization = (UtilMethods.isSet(form.getOrganization()) ? form.getOrganization() : "&nbsp;");
260         body.append("<tr><td valign=\"top\"><b>Organization:</b></td><td>" + organization + "</td></tr>");
261         // Phone
262
String JavaDoc phone = (UtilMethods.isSet(form.getPhone()) ? form.getPhone() : "");
263         body.append("<tr><td valign=\"top\"><b>Phone:</b></td><td>" + phone + "</td></tr>");
264         // comments
265
String JavaDoc comments = (UtilMethods.isSet(form.getMessage()) ? form.getMessage() : "&nbsp;");
266         body.append("<tr><td valign=\"top\"><b>Comment:</b></td><td>" + comments + "</td></tr>");
267         // end table
268
body.append("</table>");
269
270         String JavaDoc emailBody = body.toString();
271         // ### END CREATE MAIL ###
272
Company company = PublicCompanyFactory.getDefaultCompany();
273
274         String JavaDoc toEmail = request.getParameter("toEmail");
275         String JavaDoc subject = request.getParameter("subject");
276         String JavaDoc fromName = request.getParameter("fromName");
277         String JavaDoc fromEmail = request.getParameter("fromEmail");
278
279         toEmail = (UtilMethods.isSet(toEmail) ? toEmail : Config.getStringProperty("CONTACT_US_MAIL_ADDRESS"));
280         subject = (UtilMethods.isSet(subject) ? subject : Config.getStringProperty("CONTACT_US_MAIL_SUBJECT"));
281         fromName = (UtilMethods.isSet(fromName) ? fromName : Config.getStringProperty("CONTACT_US_MAIL_NAME"));
282         fromEmail = (UtilMethods.isSet(fromEmail) ? fromEmail : Config.getStringProperty("CONTACT_US_MAIL_RETURN_ADDRESS"));
283
284         fromName = (UtilMethods.isSet(fromName) ? fromName : company.getName());
285         fromEmail = (UtilMethods.isSet(fromEmail) ? fromEmail : company.getEmailAddress());
286
287         mailer.setToEmail(toEmail);
288         mailer.setSubject(subject);
289         mailer.setFromName(fromName);
290         mailer.setFromEmail(fromEmail);
291         mailer.setHTMLBody(emailBody);
292         mailer.sendMessage();
293     }
294 }
Popular Tags