1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.announce.modules.workflow.service;
35
36 import fr.paris.lutece.plugins.announce.business.Announce;
37 import fr.paris.lutece.plugins.announce.business.AnnounceHome;
38 import fr.paris.lutece.plugins.announce.modules.workflow.business.TaskNotifyAnnounceConfig;
39 import fr.paris.lutece.plugins.genericattributes.business.Response;
40 import fr.paris.lutece.plugins.workflowcore.business.resource.ResourceHistory;
41 import fr.paris.lutece.plugins.workflowcore.service.config.ITaskConfigService;
42 import fr.paris.lutece.plugins.workflowcore.service.resource.IResourceHistoryService;
43 import fr.paris.lutece.plugins.workflowcore.service.task.SimpleTask;
44 import fr.paris.lutece.portal.service.mail.MailService;
45 import fr.paris.lutece.portal.service.security.LuteceUser;
46 import fr.paris.lutece.portal.service.security.LuteceUserService;
47 import fr.paris.lutece.portal.service.template.AppTemplateService;
48 import fr.paris.lutece.util.string.StringUtil;
49
50 import org.apache.commons.lang.StringUtils;
51
52 import java.util.HashMap;
53 import java.util.List;
54 import java.util.Locale;
55 import java.util.Map;
56
57 import javax.inject.Inject;
58 import javax.inject.Named;
59 import javax.servlet.http.HttpServletRequest;
60
61
62
63
64 public class TaskNotifyAnnounce extends SimpleTask
65 {
66
67
68
69 public static final String CONFIG_SERVICE_BEAN_NAME = "announce-workflow.taskNotifyAnnounceConfigService";
70
71
72 private static final String TEMPLATE_TASK_NOTIFY_MAIL = "admin/plugins/announce/modules/workflow/task_notify_announce_mail.html";
73
74
75 private static final String MARK_ANNOUNCE = "announce";
76 private static final String MARK_MESSAGE = "message";
77 private static final String MARK_LIST_RESPONSE = "listResponse";
78
79
80 @Inject
81 private IResourceHistoryService _resourceHistoryService;
82 @Inject
83 @Named( CONFIG_SERVICE_BEAN_NAME )
84 private ITaskConfigService _taskNotifyAnnounceConfigService;
85
86
87
88
89 @Override
90 public void processTask( int nIdResourceHistory, HttpServletRequest request, Locale locale )
91 {
92 ResourceHistory resourceHistory = _resourceHistoryService.findByPrimaryKey( nIdResourceHistory );
93 TaskNotifyAnnounceConfig config = _taskNotifyAnnounceConfigService.findByPrimaryKey( this.getId( ) );
94 Announce announce = AnnounceHome.findByPrimaryKey( resourceHistory.getIdResource( ) );
95
96 LuteceUser user = LuteceUserService.getLuteceUserFromName( announce.getUserName( ) );
97
98 String strEmail = user != null ? user.getEmail( ) : announce.getUserName( );
99 if ( StringUtil.checkEmail( strEmail ) )
100 {
101 this.sendEmail( announce, resourceHistory, request, locale, config, strEmail );
102 }
103 }
104
105
106
107
108 @Override
109 public void doRemoveConfig( )
110 {
111 _taskNotifyAnnounceConfigService.remove( this.getId( ) );
112 }
113
114
115
116
117 @Override
118 public String getTitle( Locale locale )
119 {
120 TaskNotifyAnnounceConfig config = _taskNotifyAnnounceConfigService.findByPrimaryKey( this.getId( ) );
121
122 if ( config != null )
123 {
124 return config.getSubject( );
125 }
126
127 return StringUtils.EMPTY;
128 }
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146 @SuppressWarnings( "deprecation" )
147 public void sendEmail( Announce announce, ResourceHistory resourceHistory, HttpServletRequest request, Locale locale,
148 TaskNotifyAnnounceConfig notifyAnnounceConfig, String strEmail )
149 {
150 if ( ( notifyAnnounceConfig != null ) && ( resourceHistory != null ) && Announce.RESOURCE_TYPE.equals( resourceHistory.getResourceType( ) )
151 && ( announce != null ) )
152 {
153 if ( StringUtils.isEmpty( notifyAnnounceConfig.getSenderEmail( ) ) || !StringUtil.checkEmail( notifyAnnounceConfig.getSenderEmail( ) ) )
154 {
155 notifyAnnounceConfig.setSenderEmail( MailService.getNoReplyEmail( ) );
156 }
157
158 if ( StringUtils.isBlank( notifyAnnounceConfig.getSenderName( ) ) )
159 {
160 notifyAnnounceConfig.setSenderName( notifyAnnounceConfig.getSenderEmail( ) );
161 }
162
163 Map<String, Object> model = new HashMap<String, Object>( );
164
165 model.put( MARK_ANNOUNCE, announce );
166 model.put( MARK_MESSAGE, notifyAnnounceConfig.getMessage( ) );
167
168 List<Response> listResponse = AnnounceHome.findListResponse( announce.getId( ), false );
169 model.put( MARK_LIST_RESPONSE, listResponse );
170
171 String strSubject = AppTemplateService.getTemplateFromStringFtl( notifyAnnounceConfig.getSubject( ), locale, model ).getHtml( );
172
173 boolean bHasRecipients = ( StringUtils.isNotBlank( notifyAnnounceConfig.getRecipientsBcc( ) )
174 || StringUtils.isNotBlank( notifyAnnounceConfig.getRecipientsCc( ) ) );
175
176 String strContent = AppTemplateService
177 .getTemplateFromStringFtl( AppTemplateService.getTemplate( TEMPLATE_TASK_NOTIFY_MAIL, locale, model ).getHtml( ), locale, model )
178 .getHtml( );
179
180 if ( bHasRecipients )
181 {
182 MailService.sendMailHtml( strEmail, notifyAnnounceConfig.getRecipientsCc( ), notifyAnnounceConfig.getRecipientsBcc( ),
183 notifyAnnounceConfig.getSenderName( ), notifyAnnounceConfig.getSenderEmail( ), strSubject, strContent );
184 }
185 else
186 {
187 MailService.sendMailHtml( strEmail, notifyAnnounceConfig.getSenderName( ), notifyAnnounceConfig.getSenderEmail( ), strSubject, strContent );
188 }
189 }
190 }
191 }