1 package com.dotmarketing.portlets.campaigns.action; 2 3 import javax.portlet.ActionRequest; 4 import javax.portlet.ActionResponse; 5 import javax.portlet.PortletConfig; 6 import javax.servlet.ServletOutputStream ; 7 import javax.servlet.http.HttpServletResponse ; 8 9 import org.apache.struts.action.ActionForm; 10 import org.apache.struts.action.ActionMapping; 11 12 import com.dotmarketing.factories.InodeFactory; 13 import com.dotmarketing.portal.struts.DotPortletAction; 14 import com.dotmarketing.portlets.campaigns.factories.CampaignFactory; 15 import com.dotmarketing.portlets.campaigns.factories.RecipientFactory; 16 import com.dotmarketing.portlets.campaigns.model.Campaign; 17 import com.dotmarketing.portlets.campaigns.model.Click; 18 import com.dotmarketing.portlets.mailinglists.factories.MailingListFactory; 19 import com.dotmarketing.util.Config; 20 import com.dotmarketing.util.Logger; 21 import com.dotmarketing.util.UtilMethods; 22 import com.dotmarketing.util.WebKeys; 23 import com.liferay.portal.ejb.RoleLocalManagerUtil; 24 import com.liferay.portal.ejb.UserLocalManagerUtil; 25 import com.liferay.portal.model.Role; 26 import com.liferay.portal.model.User; 27 import com.liferay.portal.util.Constants; 28 import com.liferay.portlet.ActionResponseImpl; 29 30 37 public class ViewReportAction extends DotPortletAction { 38 39 42 public void processAction( 43 ActionMapping mapping, ActionForm form, PortletConfig config, 44 ActionRequest req, ActionResponse res) 45 throws Exception { 46 47 ActionResponseImpl resImpl = (ActionResponseImpl)res; 49 HttpServletResponse httpRes = resImpl.getHttpServletResponse(); 50 51 String cmd = (req.getParameter(Constants.CMD)!=null) ? req.getParameter(Constants.CMD) : Constants.VIEW; 52 53 Logger.debug(this, "ViewReportAction :: cmd=" + cmd); 54 55 User user = _getUser(req); 56 57 try { 59 60 Logger.debug(this, "I runned <sic> the RetrieveCampaignAction"); 61 _retrieveCampaign(req, res, form, user); 62 63 } 64 catch (Exception ae) { 65 _handleException(ae, req); 66 } 67 68 if (cmd.equals(Constants.VIEW)) { 69 70 try { 71 _viewCampaignReport(req,res,form, user); 72 } 73 catch (Exception ae) { 74 _handleException(ae, req); 75 } 76 setForward(req,"portlet.ext.campaigns.view_report"); 77 78 } 79 80 if (cmd.equals("view_all")) { 81 82 try { 83 _viewCampaignAllReport(req,res,form, user); 84 } 85 catch (Exception ae) { 86 _handleException(ae, req); 87 } 88 if (req.getParameter("csv") == null) { 89 setForward(req,"portlet.ext.campaigns.view_report_detailed"); 90 } 91 else { 92 _writeCSV(httpRes,req,res,form,user); 93 return; 94 } 95 96 } 97 98 if (cmd.equals("view_opened")) { 99 100 try { 101 _viewCampaignReportOpened(req,res,form, user); 102 } 103 catch (Exception ae) { 104 _handleException(ae, req); 105 } 106 if (req.getParameter("csv") == null) { 107 setForward(req,"portlet.ext.campaigns.view_report_detailed"); 108 } 109 else { 110 _writeCSV(httpRes,req,res,form,user); 111 return; 112 } 113 114 } 115 116 if (cmd.equals("view_unopened")) { 117 118 try { 119 _viewCampaignReportUnOpened(req,res,form, user); 120 } 121 catch (Exception ae) { 122 _handleException(ae, req); 123 } 124 if (req.getParameter("csv") == null) { 125 setForward(req,"portlet.ext.campaigns.view_report_detailed"); 126 } 127 else { 128 _writeCSV(httpRes,req,res,form,user); 129 return; 130 } 131 } 132 133 if (cmd.equals("view_link")) { 134 135 try { 136 _viewCampaignReportLink(req,res,form, user); 137 } 138 catch (Exception ae) { 139 _handleException(ae, req); 140 } 141 if (req.getParameter("csv") == null) { 142 setForward(req,"portlet.ext.campaigns.view_report_detailed"); 143 } 144 else { 145 _writeCSV(httpRes,req,res,form,user); 146 return; 147 } 148 } 149 if (!UtilMethods.isSet(getForward(req))) { 150 Logger.debug(this, "I'm the ViewReportAction and I got nothing"); 151 setForward(req,"portlet.ext.campaigns.view_report"); 152 } 153 154 } 155 private void _retrieveCampaign(ActionRequest req, ActionResponse res,ActionForm form,User user) throws Exception { 156 157 String inode = (req.getParameter("inode")!=null) ? req.getParameter("inode") : "0"; 158 159 Campaign c = null; 160 c = CampaignFactory.getCampaign(inode); 161 162 if(c.getInode() ==0){ 163 c = CampaignFactory.newInstance(); 164 c.setUserId(user.getUserId()); 165 } 166 req.setAttribute(WebKeys.CAMPAIGN_EDIT, c); 167 168 } 169 170 private void _viewCampaignReportLink(ActionRequest req, ActionResponse res,ActionForm form,User user) throws Exception { 171 172 Campaign c = (Campaign) req.getAttribute(WebKeys.CAMPAIGN_EDIT); 173 Click click = (Click) InodeFactory.getInode(req.getParameter("clickId"), Click.class); 174 req.setAttribute(WebKeys.RECIPIENT_LIST, RecipientFactory.getRecipientsByCampaignAndClick(c, click)); 175 req.setAttribute(WebKeys.RECIPIENT_LIST_TITLE, "Users who clicked:" +click.getLink()); 176 req.setAttribute(WebKeys.CLICK_EDIT, click); 177 178 } 179 180 private void _viewCampaignReportUnOpened(ActionRequest req, ActionResponse res,ActionForm form,User user) throws Exception { 181 Campaign c = (Campaign) req.getAttribute(WebKeys.CAMPAIGN_EDIT); 182 req.setAttribute(WebKeys.RECIPIENT_LIST, RecipientFactory.getUnopenedRecipientsByCampaign(c)); 183 req.setAttribute(WebKeys.RECIPIENT_LIST_TITLE, "Unopened"); 184 } 185 private void _viewCampaignReportOpened(ActionRequest req, ActionResponse res,ActionForm form,User user) throws Exception { 186 Campaign c = (Campaign) req.getAttribute(WebKeys.CAMPAIGN_EDIT); 187 req.setAttribute(WebKeys.RECIPIENT_LIST, RecipientFactory.getOpenedRecipientsByCampaign(c)); 188 req.setAttribute(WebKeys.RECIPIENT_LIST_TITLE, "Opened"); 189 } 190 private void _viewCampaignAllReport(ActionRequest req, ActionResponse res,ActionForm form,User user) throws Exception { 191 Campaign c = (Campaign) req.getAttribute(WebKeys.CAMPAIGN_EDIT); 192 req.setAttribute(WebKeys.RECIPIENT_LIST, RecipientFactory.getAllRecipientsByCampaign(c)); 193 req.setAttribute(WebKeys.RECIPIENT_LIST_TITLE, "All"); 194 } 195 private void _viewCampaignReport(ActionRequest req, ActionResponse res,ActionForm form,User user) throws Exception { 196 Campaign c = (Campaign) req.getAttribute(WebKeys.CAMPAIGN_EDIT); 197 } 198 199 200 private void _writeCSV(HttpServletResponse httpRes,ActionRequest req, ActionResponse res,ActionForm form,User user) throws Exception { 201 202 ServletOutputStream out = httpRes.getOutputStream(); 203 204 boolean isCampaignManagerViewer = false; 205 String campaignManagerViewerRoleId = ""; 206 try { 207 Role campaignManagerViewerRole = RoleLocalManagerUtil.getRoleByName(user.getCompanyId(), Config.getStringProperty("CAMPAIGN_MANAGER_VIEWER")); 208 campaignManagerViewerRoleId = campaignManagerViewerRole.getRoleId(); 209 } 210 catch (Exception e) {} 211 212 try { 213 Role[] userRoles = (Role[])UserLocalManagerUtil.getRoles(user.getUserId()).toArray(new Role[0]); 214 for (int i = 0; i < userRoles.length; i++) { 215 Role userRole = (Role) userRoles[i]; 216 if (userRole.getRoleId().equals(campaignManagerViewerRoleId)) { 217 isCampaignManagerViewer = true; 218 } 219 } 220 } 221 catch (Exception e) { 222 223 } 224 225 httpRes.setContentType("application/octet-stream"); 226 httpRes.setHeader("Content-Disposition", "attachment; filename=\"report" + System.currentTimeMillis() +".csv\""); 227 228 231 com.dotmarketing.portlets.campaigns.model.Campaign camp = (com.dotmarketing.portlets.campaigns.model.Campaign) req.getAttribute(com.dotmarketing.util.WebKeys.CAMPAIGN_EDIT); 233 java.util.List allClicks = com.dotmarketing.portlets.campaigns.factories.ClickFactory.getClicksByParentOrderByCount(camp); 234 java.util.List recipients = (java.util.List ) req.getAttribute(com.dotmarketing.util.WebKeys.RECIPIENT_LIST); 235 236 if (!isCampaignManagerViewer) { 237 out.print("Name, eMail, Sent Date, Opened Date"); 238 } 239 else { 240 out.print("Name, Sent Date, Opened Date"); 241 } 242 243 java.util.Iterator i = allClicks.iterator(); 244 int x = 1; 245 while(i.hasNext()){ 246 com.dotmarketing.portlets.campaigns.model.Click c = (com.dotmarketing.portlets.campaigns.model.Click) i.next(); 247 out.print(", Clicks on : " + c.getLink()); 248 } 249 out.print("\r\n"); 250 251 java.util.Iterator iter = recipients.iterator(); 252 253 while(iter.hasNext()){ 254 255 com.dotmarketing.portlets.campaigns.model.Recipient r = (com.dotmarketing.portlets.campaigns.model.Recipient) iter.next(); 256 String name = r.getName(); 257 if(UtilMethods.isSet(r.getLastname())){ 258 name = name+" "+r.getLastname(); 259 } 260 out.print("\"" + com.dotmarketing.util.UtilMethods.webifyString(name) +"\","); 261 if (!isCampaignManagerViewer) { 262 out.print("\"" + com.dotmarketing.util.UtilMethods.webifyString(r.getEmail()) +"\","); 263 } 264 out.print("\"" + com.dotmarketing.util.UtilMethods.webifyString(com.dotmarketing.util.UtilMethods.dateToHTMLDate(r.getSent()))+"\","); 265 out.print("\"" + com.dotmarketing.util.UtilMethods.webifyString(com.dotmarketing.util.UtilMethods.dateToHTMLDate(r.getOpened()))+"\","); 266 java.util.List clicks = com.dotmarketing.factories.InodeFactory.getChildrenClass(r, com.dotmarketing.portlets.campaigns.model.Click.class); 267 i = allClicks.iterator(); 268 while(i.hasNext()){ 269 int cCount = 0; 270 com.dotmarketing.portlets.campaigns.model.Click c = (com.dotmarketing.portlets.campaigns.model.Click) i.next(); 271 java.util.Iterator i2 = clicks.iterator(); 272 boolean printClick = false; 273 while(i2.hasNext()){ 274 com.dotmarketing.portlets.campaigns.model.Click c2 = (com.dotmarketing.portlets.campaigns.model.Click) i2.next(); 275 if(c.getLink() != null && c2.getLink() != null && c.getLink().equals(c2.getLink())){ 276 cCount = c.getClickCount(); 277 } 278 } 279 out.print("\"" + cCount +"\","); 280 281 } 282 out.print("\r\n"); 283 } 284 out.flush(); 285 out.close(); 286 287 } 288 289 } | Popular Tags |