KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > dotmarketing > portlets > events > factories > EventFactory


1 package com.dotmarketing.portlets.events.factories;
2
3 import java.util.ArrayList JavaDoc;
4 import java.util.Calendar JavaDoc;
5 import java.util.Date JavaDoc;
6 import java.util.GregorianCalendar JavaDoc;
7 import java.util.Iterator JavaDoc;
8 import java.util.List JavaDoc;
9
10 import com.dotmarketing.beans.Inode;
11 import com.dotmarketing.cms.factories.PublicCompanyFactory;
12 import com.dotmarketing.db.DotConnect;
13 import com.dotmarketing.db.DotHibernate;
14 import com.dotmarketing.factories.InodeFactory;
15 import com.dotmarketing.factories.RoleFactory;
16 import com.dotmarketing.portlets.categories.model.Category;
17 import com.dotmarketing.portlets.events.model.Event;
18 import com.dotmarketing.portlets.events.model.Recurance;
19 import com.dotmarketing.portlets.facilities.model.Facility;
20 import com.dotmarketing.util.Config;
21 import com.dotmarketing.util.Constants;
22 import com.dotmarketing.util.Logger;
23 import com.dotmarketing.util.Mailer;
24 import com.dotmarketing.util.UtilHTML;
25 import com.dotmarketing.util.UtilMethods;
26 import com.liferay.portal.PortalException;
27 import com.liferay.portal.SystemException;
28 import com.liferay.portal.ejb.RoleLocalManagerUtil;
29 import com.liferay.portal.ejb.UserLocalManagerUtil;
30 import com.liferay.portal.model.Role;
31 import com.liferay.portal.model.User;
32
33 /**
34  *
35  * @author will
36  */

37
38 public class EventFactory {
39
40     public static Event getEvent(String JavaDoc inode) {
41         DotHibernate dh = new DotHibernate(Event.class);
42         dh.setQuery("from inode in class com.dotmarketing.portlets.events.model.Event where inode = ?");
43         dh.setParam(inode);
44         return (Event) dh.load();
45     }
46
47     public static Event newInstance() {
48         Event e = new Event();
49
50         return e;
51     }
52
53     public static void deleteEvent(Event e) {
54         InodeFactory.deleteInode(e);
55     }
56
57     public static void deleteEventSeries(Event e) {
58         if (InodeFactory.countChildrenOfClass(e, Recurance.class) > 0) {
59             Recurance r = (Recurance) InodeFactory.getChildOfClass(e, Recurance.class);
60             RecuranceFactory.deleteRecurringEvents(r);
61         }
62     }
63
64     public static java.util.List JavaDoc getEventsByDateRange(java.util.Date JavaDoc from, java.util.Date JavaDoc to) {
65
66         GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc();
67         cal.setTime(from);
68         cal.add(GregorianCalendar.SECOND, -1);
69         from = cal.getTime();
70
71         cal.setTime(to);
72         cal.add(GregorianCalendar.SECOND, 1);
73         to = cal.getTime();
74
75         DotHibernate dh = new DotHibernate(Event.class);
76         dh
77                 .setSQLQuery("select {event.*} from event, inode event_1_ where event.inode = event_1_.inode and start_date > ? and start_date < ? order by start_date");
78
79         dh.setParam(from);
80         dh.setParam(to);
81
82         return dh.list();
83
84     }
85
86     public static java.util.List JavaDoc getEventsByDateRange(java.util.Date JavaDoc from, java.util.Date JavaDoc to, User user) {
87
88         GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc();
89         cal.setTime(from);
90         cal.add(GregorianCalendar.SECOND, -1);
91         from = cal.getTime();
92
93         cal.setTime(to);
94         cal.add(GregorianCalendar.SECOND, 1);
95         to = cal.getTime();
96
97         DotHibernate dh = new DotHibernate(Event.class);
98         String JavaDoc query = "select {event.*} from event, inode event_1_ where event.inode = event_1_.inode and start_date > ? and start_date < ? and "
99                 + "(event.approval_status = "
100                 + Constants.EVENT_APPROVED_STATUS
101                 + " or event.user_id = '"
102                 + user.getUserId()
103                 + "') " + "order by start_date";
104
105         dh.setSQLQuery(query);
106
107         dh.setParam(from);
108         dh.setParam(to);
109
110         return dh.list();
111
112     }
113
114     public static java.util.List JavaDoc getEventsByDateRangeYParent(java.util.Date JavaDoc from, java.util.Date JavaDoc to, Category cat) {
115
116         GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc();
117         cal.setTime(from);
118         cal.add(GregorianCalendar.SECOND, -1);
119         from = cal.getTime();
120
121         cal.setTime(to);
122         cal.add(GregorianCalendar.SECOND, 1);
123         to = cal.getTime();
124
125         DotHibernate dh = new DotHibernate(Event.class);
126         dh
127                 .setSQLQuery("select {event.*} from event, inode event_1_, tree where event.inode = event_1_.inode and tree.parent = ? and tree.child = event.inode and start_date > ? and start_date < ? order by start_date");
128
129         dh.setParam(cat.getInode());
130         dh.setParam(from);
131         dh.setParam(to);
132
133         return dh.list();
134
135     }
136
137     public static java.util.List JavaDoc getPublicEventsByDateRangeYParent(java.util.Date JavaDoc from, java.util.Date JavaDoc to, Category cat) {
138
139         GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc();
140         cal.setTime(from);
141         cal.add(GregorianCalendar.SECOND, -1);
142         from = cal.getTime();
143
144         cal.setTime(to);
145         cal.add(GregorianCalendar.SECOND, 1);
146         to = cal.getTime();
147
148         DotHibernate dh = new DotHibernate(Event.class);
149         dh.setSQLQuery("select {event.*} from event, inode event_1_, tree where "
150                 + "event.inode = event_1_.inode and tree.parent = ? and tree.child = event.inode and "
151                 + "start_date > ? and start_date < ? and show_public = " + com.dotmarketing.db.DbConnectionFactory.getDBTrue()
152                 + " and " + "event.approval_status = " + Constants.EVENT_APPROVED_STATUS + " " + "order by start_date");
153
154         dh.setParam(cat.getInode());
155         dh.setParam(from);
156         dh.setParam(to);
157
158         return dh.list();
159
160     }
161
162     public static java.util.List JavaDoc getPublicEventsByDateRangeYParent(java.util.Date JavaDoc from, java.util.Date JavaDoc to, Category cat,
163             int maxEvents) {
164
165         GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc();
166         cal.setTime(from);
167         cal.add(GregorianCalendar.SECOND, -1);
168         from = cal.getTime();
169
170         cal.setTime(to);
171         cal.add(GregorianCalendar.SECOND, 1);
172         to = cal.getTime();
173
174         DotHibernate dh = new DotHibernate(Event.class);
175         dh.setSQLQuery("select {event.*} from event, inode event_1_, tree where "
176                 + "event.inode = event_1_.inode and tree.parent = ? and tree.child = event.inode and "
177                 + "start_date > ? and start_date < ? and show_public = " + com.dotmarketing.db.DbConnectionFactory.getDBTrue()
178                 + " and " + "event.approval_status = " + Constants.EVENT_APPROVED_STATUS + " " + "order by start_date");
179
180         dh.setParam(cat.getInode());
181         dh.setParam(from);
182         dh.setParam(to);
183         dh.setMaxResults(maxEvents);
184
185         return dh.list();
186
187     }
188
189     public static java.util.List JavaDoc getEventsByDateRangeYParent(java.util.Date JavaDoc from, java.util.Date JavaDoc to, Category cat1,
190             Category cat2, Category cat3, long facilityInode) {
191
192         GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc();
193         cal.setTime(from);
194         cal.add(GregorianCalendar.SECOND, -1);
195         from = cal.getTime();
196
197         cal.setTime(to);
198         cal.add(GregorianCalendar.SECOND, 1);
199         to = cal.getTime();
200
201         DotHibernate dh = new DotHibernate(Event.class);
202
203         StringBuffer JavaDoc query = new StringBuffer JavaDoc("select {event.*} from event, inode event_1_ ");
204
205         if (cat1.getInode() > 0)
206             query.append(", tree tree1 ");
207         if (cat2.getInode() > 0)
208             query.append(", tree tree2 ");
209         if (cat3.getInode() > 0)
210             query.append(", tree tree3 ");
211         if (facilityInode > 0)
212             query.append(", tree tree4 ");
213
214         query.append("where event.inode = event_1_.inode and ");
215
216         if (cat1.getInode() > 0) {
217             query.append(" tree1.parent = ? and tree1.child = event.inode and ");
218         }
219         if (cat2.getInode() > 0) {
220             query.append(" tree2.parent = ? and tree2.child = event.inode and ");
221         }
222         if (cat3.getInode() > 0) {
223             query.append(" tree3.parent = ? and tree3.child = event.inode and ");
224         }
225         if (facilityInode > 0)
226             query.append(" tree4.parent = ? and tree4.child = event.inode and ");
227         if (facilityInode == 0)
228             query
229                     .append(" event.inode not in (select tree4.child from tree tree4, facility where facility.inode = tree4.parent) and ");
230
231         query.append("start_date > ? and start_date < ? order by start_date");
232
233         dh.setSQLQuery(query.toString());
234
235         if (cat1.getInode() > 0) {
236             dh.setParam(cat1.getInode());
237         }
238         if (cat2.getInode() > 0) {
239             dh.setParam(cat2.getInode());
240         }
241         if (cat3.getInode() > 0) {
242             dh.setParam(cat3.getInode());
243         }
244         if (facilityInode > 0)
245             dh.setParam(facilityInode);
246
247         dh.setParam(from);
248         dh.setParam(to);
249
250         return dh.list();
251
252     }
253
254     public static java.util.List JavaDoc getEventsByDateRangeYParent(java.util.Date JavaDoc from, java.util.Date JavaDoc to, Category cat1,
255             Category cat2, Category cat3, long facilityInode, User user) {
256
257         GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc();
258         cal.setTime(from);
259         cal.add(GregorianCalendar.SECOND, -1);
260         from = cal.getTime();
261
262         cal.setTime(to);
263         cal.add(GregorianCalendar.SECOND, 1);
264         to = cal.getTime();
265
266         DotHibernate dh = new DotHibernate(Event.class);
267
268         StringBuffer JavaDoc query = new StringBuffer JavaDoc("select {event.*} from event, inode event_1_ ");
269
270         if (cat1.getInode() > 0)
271             query.append(", tree tree1 ");
272         if (cat2.getInode() > 0)
273             query.append(", tree tree2 ");
274         if (cat3.getInode() > 0)
275             query.append(", tree tree3 ");
276         if (facilityInode > 0)
277             query.append(", tree tree4 ");
278
279         query.append("where event.inode = event_1_.inode and ");
280
281         if (cat1.getInode() > 0) {
282             query.append(" tree1.parent = ? and tree1.child = event.inode and ");
283         }
284         if (cat2.getInode() > 0) {
285             query.append(" tree2.parent = ? and tree2.child = event.inode and ");
286         }
287         if (cat3.getInode() > 0) {
288             query.append(" tree3.parent = ? and tree3.child = event.inode and ");
289         }
290         if (facilityInode > 0)
291             query.append(" tree4.parent = ? and tree4.child = event.inode and ");
292         if (facilityInode == 0)
293             query
294                     .append(" event.inode not in (select tree4.child from tree tree4, facility where facility.inode = tree4.parent) and ");
295
296         query.append("start_date > ? and start_date < ? and ");
297         query.append("(event.approval_status = " + Constants.EVENT_APPROVED_STATUS + " or event.user_id = '"
298                 + user.getUserId() + "') ");
299         query.append("order by start_date");
300
301         dh.setSQLQuery(query.toString());
302
303         if (cat1.getInode() > 0) {
304             dh.setParam(cat1.getInode());
305         }
306         if (cat2.getInode() > 0) {
307             dh.setParam(cat2.getInode());
308         }
309         if (cat3.getInode() > 0) {
310             dh.setParam(cat3.getInode());
311         }
312         if (facilityInode > 0)
313             dh.setParam(facilityInode);
314
315         dh.setParam(from);
316         dh.setParam(to);
317
318         return dh.list();
319
320     }
321
322     public static java.util.List JavaDoc getEventsByDateRangeYParent(java.util.Date JavaDoc from, java.util.Date JavaDoc to, List JavaDoc<Inode> parents,
323             User user) {
324
325         GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc();
326         cal.setTime(from);
327         cal.add(GregorianCalendar.SECOND, -1);
328         from = cal.getTime();
329
330         cal.setTime(to);
331         cal.add(GregorianCalendar.SECOND, 1);
332         to = cal.getTime();
333
334         DotHibernate dh = new DotHibernate(Event.class);
335
336         StringBuffer JavaDoc query = new StringBuffer JavaDoc("select {event.*} from event, inode event_1_ ");
337         int i = 1;
338         for (Inode inode : parents) {
339             if (inode.getInode() > 0)
340                 query.append(", tree tree" + i + " ");
341             i++;
342         }
343         query.append("where event.inode = event_1_.inode and ");
344
345         i = 1;
346         for (Inode inode : parents) {
347             if (inode.getInode() > 0)
348                 query.append("tree" + i + ".parent = ? and tree" + i + ".child = event.inode and ");
349             i++;
350         }
351         query.append("start_date > ? and start_date < ? ");
352     // query.append(" and (event.approval_status = " + Constants.EVENT_APPROVED_STATUS + " or event.user_id = '"
353
// + user.getUserId() + "') ");
354
query.append(" order by start_date");
355
356         dh.setSQLQuery(query.toString());
357
358         for (Inode inode : parents) {
359             if (inode.getInode() > 0){
360                 dh.setParam(inode.getInode());
361             }
362         }
363         dh.setParam(from);
364         dh.setParam(to);
365
366         return dh.list();
367
368     }
369
370     
371     public static java.util.List JavaDoc getEventsByDateRangeYParent(java.util.Date JavaDoc from, java.util.Date JavaDoc to, List JavaDoc<Inode> parents) {
372
373         GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc();
374         cal.setTime(from);
375         cal.add(GregorianCalendar.SECOND, -1);
376         from = cal.getTime();
377
378         cal.setTime(to);
379         cal.add(GregorianCalendar.SECOND, 1);
380         to = cal.getTime();
381
382         DotHibernate dh = new DotHibernate(Event.class);
383
384         StringBuffer JavaDoc query = new StringBuffer JavaDoc("select {event.*} from event, inode event_1_ ");
385         int i = 1;
386         for (Inode inode : parents) {
387             if (inode.getInode() > 0)
388                 query.append(", tree tree" + i + " ");
389             i++;
390         }
391         query.append("where event.inode = event_1_.inode and ");
392
393         i = 1;
394         for (Inode inode : parents) {
395             if (inode.getInode() > 0)
396                 query.append("tree" + i + ".parent = ? and tree" + i + ".child = event.inode and ");
397             i++;
398         }
399         query.append("event.start_date > ? and event.start_date < ? ");
400     // query.append("and (event.approval_status = " + Constants.EVENT_APPROVED_STATUS + " ) ");
401
query.append("order by event.start_date");
402
403         dh.setSQLQuery(query.toString());
404
405         for (Inode inode : parents) {
406             if (inode.getInode() > 0){
407                 dh.setParam(inode.getInode());
408             }
409         }
410         dh.setParam(from);
411         dh.setParam(to);
412
413         return dh.list();
414
415     }
416     
417     
418     public static java.util.List JavaDoc getPublicEventsByDateRangeYParent(java.util.Date JavaDoc from, java.util.Date JavaDoc to, Category cat1,
419             Category cat2, Category cat3) {
420         return getPublicEventsByDateRangeYParent(from, to, cat1, cat2, cat3, 0);
421     }
422
423     public static java.util.List JavaDoc getPublicEventsByDateRangeYParent(java.util.Date JavaDoc from, java.util.Date JavaDoc to, Category cat1,
424             Category cat2, Category cat3, int maxEvents) {
425
426         GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc();
427         cal.setTime(from);
428         cal.add(GregorianCalendar.SECOND, -1);
429         from = cal.getTime();
430
431         cal.setTime(to);
432         cal.add(GregorianCalendar.SECOND, 1);
433         to = cal.getTime();
434
435         DotHibernate dh = new DotHibernate(Event.class);
436         StringBuffer JavaDoc query = new StringBuffer JavaDoc("select {event.*} from event, inode event_1_ ");
437
438         if (cat1.getInode() > 0)
439             query.append(", tree tree1 ");
440         if (cat2.getInode() > 0)
441             query.append(", tree tree2 ");
442         if (cat3.getInode() > 0)
443             query.append(", tree tree3 ");
444
445         query.append("where event.inode = event_1_.inode and ");
446
447         if (cat1.getInode() > 0) {
448             query.append(" tree1.parent = ? and tree1.child = event.inode and ");
449         }
450         if (cat2.getInode() > 0) {
451             query.append(" tree2.parent = ? and tree2.child = event.inode and ");
452         }
453         if (cat3.getInode() > 0) {
454             query.append(" tree3.parent = ? and tree3.child = event.inode and ");
455         }
456
457         query.append("show_public = " + com.dotmarketing.db.DbConnectionFactory.getDBTrue()
458                 + " and start_date > ? and start_date < ? and event.approval_status = " + Constants.EVENT_APPROVED_STATUS
459                 + " ");
460         query.append("order by start_date");
461
462         dh.setSQLQuery(query.toString());
463
464         if (cat1.getInode() > 0) {
465             dh.setParam(cat1.getInode());
466         }
467         if (cat2.getInode() > 0) {
468             dh.setParam(cat2.getInode());
469         }
470         if (cat3.getInode() > 0) {
471             dh.setParam(cat3.getInode());
472         }
473
474         dh.setParam(from);
475         dh.setParam(to);
476         if (maxEvents > 0)
477             dh.setMaxResults(maxEvents);
478
479         return dh.list();
480
481     }
482
483     public static java.util.List JavaDoc getPublicEvents(java.util.Date JavaDoc from, java.util.Date JavaDoc to, String JavaDoc keyword, String JavaDoc[] cats, int maxEvents) {
484         if (cats == null)
485             cats = new String JavaDoc[0];
486         List JavaDoc<Integer JavaDoc> intCatsList = new ArrayList JavaDoc<Integer JavaDoc>();
487         for (int i = 0; i < cats.length; i++) {
488             try {
489                 intCatsList.add(Integer.parseInt(cats[i]));
490             } catch (NumberFormatException JavaDoc e) { }
491         }
492         int[] intCats = new int[intCatsList.size()];
493         for (int i = 0; i < intCats.length; i++) {
494             intCats[i] = intCatsList.get(i);
495         }
496         return getPublicEvents (from, to, keyword, intCats, maxEvents);
497     }
498     
499     public static java.util.List JavaDoc getPublicEvents(java.util.Date JavaDoc from, java.util.Date JavaDoc to, String JavaDoc keyword, int[] cats, int maxEvents) {
500
501         GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc();
502         cal.setTime(from);
503         cal.add(GregorianCalendar.SECOND, -1);
504         from = cal.getTime();
505
506         cal.setTime(to);
507         cal.add(GregorianCalendar.SECOND, 1);
508         to = cal.getTime();
509
510         DotHibernate dh = new DotHibernate(Event.class);
511         StringBuffer JavaDoc query = new StringBuffer JavaDoc("select {event.*} from event, inode event_1_ ");
512
513         for (int i = 0; i < cats.length; i++) {
514             query.append(", tree tree" + i + " ");
515         }
516
517         query.append("where event.inode = event_1_.inode and ");
518
519         if (UtilMethods.isSet(keyword)) {
520             query.append("(event.title like '%" + keyword + "%' or ");
521             query.append("event.subtitle like '%" + keyword + "%' or ");
522             query.append("event.description like '%" + keyword + "%') and ");
523         }
524         
525         for (int i = 0; i < cats.length; i++) {
526             query.append(" tree" + i + ".parent = " + cats[i] + " and tree" + i + ".child = event.inode and ");
527         }
528
529         query.append("show_public = " + com.dotmarketing.db.DbConnectionFactory.getDBTrue()
530                 + " and start_date > ? and start_date < ? and event.approval_status = " + Constants.EVENT_APPROVED_STATUS
531                 + " ");
532         query.append("order by start_date");
533
534         dh.setSQLQuery(query.toString());
535         dh.setParam(from);
536         dh.setParam(to);
537         if (maxEvents > 0)
538             dh.setMaxResults(maxEvents);
539
540         return dh.list();
541
542     }
543
544     public static java.util.List JavaDoc getPublicEventsByDateRangeYParentNotInCat(java.util.Date JavaDoc from, java.util.Date JavaDoc to,
545             Category cat1, Category cat2, Category cat3, Category cat4) {
546
547         GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc();
548         cal.setTime(from);
549         cal.add(GregorianCalendar.SECOND, -1);
550         from = cal.getTime();
551
552         cal.setTime(to);
553         cal.add(GregorianCalendar.SECOND, 1);
554         to = cal.getTime();
555
556         long before = System.currentTimeMillis();
557         DotHibernate dh = new DotHibernate(Event.class);
558         StringBuffer JavaDoc query = new StringBuffer JavaDoc("select distinct {event.*} from event, inode event_1_ ");
559
560         if (cat1.getInode() > 0)
561             query.append(", tree tree1 ");
562         if (cat2.getInode() > 0)
563             query.append(", tree tree2 ");
564         if (cat3.getInode() > 0)
565             query.append(", tree tree3 ");
566
567         query.append(" where event.inode = event_1_.inode and ");
568
569         if (cat1.getInode() > 0) {
570             query.append(" tree1.parent = ? and tree1.child = event.inode and ");
571         }
572         if (cat2.getInode() > 0) {
573             query.append(" tree2.parent = ? and tree2.child = event.inode and ");
574         }
575         if (cat3.getInode() > 0) {
576             query.append(" tree3.parent = ? and tree3.child = event.inode and ");
577         }
578         if (cat4.getInode() > 0) {
579             query.append(" event.inode not in (select tree4.child from tree tree4 where tree4.parent = ?) and ");
580         }
581
582         query.append("show_public = " + com.dotmarketing.db.DbConnectionFactory.getDBTrue()
583                 + " and start_date > ? and start_date < ? and event.approval_status = " + Constants.EVENT_APPROVED_STATUS
584                 + " ");
585         query.append("order by start_date");
586
587         dh.setSQLQuery(query.toString());
588
589         if (cat1.getInode() > 0) {
590             dh.setParam(cat1.getInode());
591         }
592         if (cat2.getInode() > 0) {
593             dh.setParam(cat2.getInode());
594         }
595         if (cat3.getInode() > 0) {
596             dh.setParam(cat3.getInode());
597         }
598
599         if (cat4.getInode() > 0) {
600             dh.setParam(cat4.getInode());
601         }
602
603         dh.setParam(from);
604         dh.setParam(to);
605
606         java.util.List JavaDoc events = dh.list();
607         long after = System.currentTimeMillis();
608         return events;
609
610     }
611
612     public static java.util.List JavaDoc getPublicEventsByDateRangeYParentNotInCat(java.util.Date JavaDoc from, java.util.Date JavaDoc to,
613             Category cat1, Category cat2, Category cat3, Category cat4, int maxEvents) {
614
615         GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc();
616         cal.setTime(from);
617         cal.add(GregorianCalendar.SECOND, -1);
618         from = cal.getTime();
619
620         cal.setTime(to);
621         cal.add(GregorianCalendar.SECOND, 1);
622         to = cal.getTime();
623
624         long before = System.currentTimeMillis();
625         DotHibernate dh = new DotHibernate(Event.class);
626         StringBuffer JavaDoc query = new StringBuffer JavaDoc("select distinct {event.*} from event, inode event_1_ ");
627
628         if (cat1.getInode() > 0)
629             query.append(", tree tree1 ");
630         if (cat2.getInode() > 0)
631             query.append(", tree tree2 ");
632         if (cat3.getInode() > 0)
633             query.append(", tree tree3 ");
634
635         query.append(" where event.inode = event_1_.inode and ");
636
637         if (cat1.getInode() > 0) {
638             query.append(" tree1.parent = ? and tree1.child = event.inode and ");
639         }
640         if (cat2.getInode() > 0) {
641             query.append(" tree2.parent = ? and tree2.child = event.inode and ");
642         }
643         if (cat3.getInode() > 0) {
644             query.append(" tree3.parent = ? and tree3.child = event.inode and ");
645         }
646         if (cat4.getInode() > 0) {
647             query.append(" event.inode not in (select tree4.child from tree tree4 where tree4.parent = ?) and ");
648         }
649
650         query.append("show_public = " + com.dotmarketing.db.DbConnectionFactory.getDBTrue()
651                 + " and start_date > ? and start_date < ? and event.approval_status = " + Constants.EVENT_APPROVED_STATUS
652                 + " ");
653         query.append("order by start_date");
654
655         dh.setSQLQuery(query.toString());
656
657         if (cat1.getInode() > 0) {
658             dh.setParam(cat1.getInode());
659         }
660         if (cat2.getInode() > 0) {
661             dh.setParam(cat2.getInode());
662         }
663         if (cat3.getInode() > 0) {
664             dh.setParam(cat3.getInode());
665         }
666
667         if (cat4.getInode() > 0) {
668             dh.setParam(cat4.getInode());
669         }
670
671         dh.setParam(from);
672         dh.setParam(to);
673         dh.setMaxResults(maxEvents);
674
675         java.util.List JavaDoc events = dh.list();
676         long after = System.currentTimeMillis();
677         return events;
678
679     }
680
681     public static java.util.List JavaDoc<Event> getPublicEventsByDateRangeYParent(java.util.Date JavaDoc from, java.util.Date JavaDoc to,
682             String JavaDoc calendarCategories, String JavaDoc eventCategories, String JavaDoc keyword, int maxEvents) {
683         try {
684             List JavaDoc<Event> returnEvents;
685             GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc();
686
687             DotHibernate dh = new DotHibernate(Event.class);
688             String JavaDoc select = "select distinct {event.*} ";
689             String JavaDoc fromTables = "from event, inode event_1_ ";
690             String JavaDoc where = "where show_public = " + com.dotmarketing.db.DbConnectionFactory.getDBTrue()
691                     + " and event.approval_status = " + Constants.EVENT_APPROVED_STATUS
692                     + " and event.inode = event_1_.inode ";
693
694             if (UtilMethods.isSet(from)) {
695                 cal.setTime(from);
696                 cal.add(GregorianCalendar.SECOND, -1);
697                 from = cal.getTime();
698                 where += "and start_date >= ? ";
699             }
700
701             if (UtilMethods.isSet(to)) {
702                 cal.setTime(to);
703                 cal.add(GregorianCalendar.SECOND, 1);
704                 to = cal.getTime();
705                 where += "and start_date <= ? ";
706             }
707
708             if (UtilMethods.isSet(keyword)) {
709                 where += "and event.title like '%" + keyword + "%' ";
710             }
711
712             if (UtilMethods.isSet(calendarCategories)) {
713                 fromTables += ", tree calendarTree ";
714                 // where += "and event.inode = event_1_.inode ";
715
where += "and calendarTree.parent in (" + calendarCategories + ") and calendarTree.child = event.inode ";
716             }
717
718             if (UtilMethods.isSet(eventCategories)) {
719                 fromTables += ", tree eventTree ";
720                 // where += "and event.inode = event_1_.inode ";
721
where += "and eventTree.parent in (" + eventCategories + ") and eventTree.child = event.inode ";
722             }
723
724             String JavaDoc order = "order by start_date";
725             String JavaDoc query = select + fromTables + where + order;
726
727             dh.setSQLQuery(query);
728
729             if (UtilMethods.isSet(from)) {
730                 dh.setParam(from);
731             }
732
733             if (UtilMethods.isSet(to)) {
734                 dh.setParam(to);
735             }
736
737             if (maxEvents > 0) {
738                 dh.setMaxResults(maxEvents);
739             }
740
741             returnEvents = dh.list();
742             return returnEvents;
743         } catch (Exception JavaDoc ex) {
744             Logger.warn(EventFactory.class, ex.toString());
745             return new ArrayList JavaDoc<Event>();
746         }
747     }
748
749     public static java.util.List JavaDoc getUpcomingEventsByParent(Inode cat) {
750
751         return InodeFactory.getChildrenClassByConditionAndOrderBy(cat, Event.class, "start_date >= now()", "start_date");
752         /*
753          * DotHibernate dh = new DotHibernate(Event.class); dh.setQuery( "from
754          * events in class com.dotmarketing.beans.Event where ? in
755          * events.parents.elements and start_date >= now() order by
756          * start_date");
757          *
758          * dh.setParam(cat.getInode()); return dh.list();
759          */

760     }
761
762     public static java.util.List JavaDoc getPublicUpcomingEventsByParent(Inode cat) {
763         return InodeFactory.getChildrenClassByConditionAndOrderBy(cat, Event.class, "end_date >= now() and show_public = "
764                 + com.dotmarketing.db.DbConnectionFactory.getDBTrue() + " and event.approval_status = "
765                 + Constants.EVENT_APPROVED_STATUS + " ", "start_date");
766     }
767
768     public static java.util.List JavaDoc getEventsByFilter(String JavaDoc filter) {
769
770         DotHibernate dh = new DotHibernate(Event.class);
771         dh
772                 .setQuery("from event in class com.dotmarketing.portlets.events.model.Event where title like ? or description like ? order by start_date");
773         dh.setParam("%" + filter + "%");
774         dh.setParam("%" + filter + "%");
775         return dh.list();
776
777     }
778
779     public static java.util.List JavaDoc getPublicEventsByPageHierarchy(java.util.List JavaDoc parents) {
780
781         java.util.List JavaDoc al = new java.util.ArrayList JavaDoc();
782         java.util.Iterator JavaDoc i = parents.iterator();
783
784         while (i.hasNext()) {
785
786             // Inode c = (Inode) i.next();
787
com.dotmarketing.portlets.categories.model.Category c = (com.dotmarketing.portlets.categories.model.Category) i
788                     .next();
789             // System.out.println("getPublicEventsByPageHierarchy!!!=" +
790
// c.getCategoryName() + " category inode=" + c.getInode());
791
al = getPublicUpcomingEventsByParent(c);
792             if (al.size() > 0)
793                 break;
794         }
795         return al;
796     }
797
798     public static java.util.List JavaDoc getEventsByPageHierarchy(java.util.List JavaDoc parents) {
799
800         java.util.List JavaDoc al = new java.util.ArrayList JavaDoc();
801         java.util.Iterator JavaDoc i = parents.iterator();
802
803         while (i.hasNext()) {
804
805             Inode c = (Inode) i.next();
806
807             al = getUpcomingEventsByParent(c);
808             if (al.size() > 0)
809                 break;
810
811         }
812
813         return al;
814     }
815
816     /**
817      * Get the list of approved events that are in conflict with a simple event.
818      *
819      * @param e
820      * @return The list of events in conflict, a empty list is returned if no
821      * conflict has.
822      */

823     public static List JavaDoc findConflicts(Event e, Facility f) {
824         if (e.isTimeTBD())
825             return new ArrayList JavaDoc();
826         if (f == null || f.getInode() == 0)
827             return new ArrayList JavaDoc();
828         DotHibernate dh = new DotHibernate(Event.class);
829         // dh.setQuery(
830
// "from event in class com.dotmarketing.portlets.events.model.Event,
831
// tree where setup_date <= ? and break_date >= ? and " +
832
// "tree.child = event.inode and tree.parent = ? and event.inode <> ?
833
// and event.approvalStatus = " + Constants.EVENT_APPROVED_STATUS + " "
834
// +
835
// "order by start_date");
836

837         String JavaDoc query = "select {event.*} from event, inode event_1_, tree where event.inode = event_1_.inode and setup_date <= ? and break_date >= ? and "
838                 + "tree.child = event.inode and tree.parent = ? and event.inode <> ? and event.approval_status = "
839                 + Constants.EVENT_APPROVED_STATUS + " " + "order by start_date";
840
841         dh.setSQLQuery(query);
842         dh.setParam(e.getBreakDate());
843         dh.setParam(e.getSetupDate());
844         dh.setParam(f.getInode());
845         dh.setParam(e.getInode());
846         return dh.list();
847     }
848
849     /**
850      * Get the list of approved events that are in conflict with a recurrent
851      * event.
852      *
853      * @param r
854      * Recurance object of the event
855      * @return The list of events in conflict, a empty list is returned if no
856      * conflict has.
857      */

858     public static List JavaDoc findConflicts(Event e, Recurance r, Facility f) {
859         if (e.isTimeTBD())
860             return new ArrayList JavaDoc();
861
862         if (r == null || f == null || f.getInode() == 0) {
863             return new ArrayList JavaDoc();
864         }
865
866         // Initializing variables
867
int interval = r.getInterval();
868
869         GregorianCalendar JavaDoc startDate = new GregorianCalendar JavaDoc();
870         GregorianCalendar JavaDoc endDate = new GregorianCalendar JavaDoc();
871         GregorianCalendar JavaDoc endTime = new GregorianCalendar JavaDoc();
872
873         GregorianCalendar JavaDoc setupDate = new GregorianCalendar JavaDoc();
874         GregorianCalendar JavaDoc breakDate = new GregorianCalendar JavaDoc();
875
876         startDate.setTime(r.getStarting());
877         endDate.setTime(r.getEnding());
878         endTime.setTime(r.getEnding());
879
880         setupDate.setTime(e.getSetupDate());
881         breakDate.setTime(e.getBreakDate());
882
883         endDate.set(Calendar.HOUR_OF_DAY, 23);
884         endDate.set(Calendar.MINUTE, 59);
885         endDate.set(Calendar.SECOND, 59);
886
887         // Getting the dates list of events to be created
888
List JavaDoc datesList = new ArrayList JavaDoc();
889
890         while (startDate.getTime().before(endDate.getTime())) {
891
892             if ("day".equals(r.getOccurs())) {
893
894                 // build the start time/date
895
GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc();
896                 cal.setTime(startDate.getTime());
897                 cal.set(Calendar.HOUR_OF_DAY, startDate.get(Calendar.HOUR_OF_DAY));
898                 cal.set(Calendar.MINUTE, startDate.get(Calendar.MINUTE));
899                 Date JavaDoc eventStartDate = cal.getTime();
900
901                 // build end date/time
902
cal = new GregorianCalendar JavaDoc();
903                 cal.setTime(startDate.getTime());
904                 cal.set(Calendar.HOUR_OF_DAY, endTime.get(Calendar.HOUR_OF_DAY));
905                 cal.set(Calendar.MINUTE, endTime.get(Calendar.MINUTE));
906                 Date JavaDoc eventEndDate = cal.getTime();
907
908                 // if this event is after, die
909
if (cal.getTime().after(endDate.getTime()))
910                     break;
911
912                 Date JavaDoc[] datePair = new Date JavaDoc[4];
913                 datePair[0] = eventStartDate;
914                 datePair[1] = eventEndDate;
915                 datePair[2] = setupDate.getTime();
916                 datePair[3] = breakDate.getTime();
917                 datesList.add(datePair);
918
919                 // add to start date
920
startDate.add(Calendar.DAY_OF_MONTH, interval);
921                 setupDate.add(Calendar.DAY_OF_MONTH, interval);
922                 breakDate.add(Calendar.DAY_OF_MONTH, interval);
923             }
924             // event days of week
925
else if ("week".equals(r.getOccurs())) {
926                 if (r.getDaysOfWeek() == null) {
927                     return new ArrayList JavaDoc();
928                 }
929                 for (int j = 1; j < 8; j++) {
930                     String JavaDoc x = Integer.toString(startDate.get(Calendar.DAY_OF_WEEK));
931                     if (r.getDaysOfWeek().indexOf(x) > -1) {
932
933                         // build the start time/date
934
GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc();
935                         cal.setTime(startDate.getTime());
936                         cal.set(Calendar.HOUR_OF_DAY, startDate.get(Calendar.HOUR_OF_DAY));
937                         cal.set(Calendar.MINUTE, startDate.get(Calendar.MINUTE));
938                         Date JavaDoc eventStartDate = cal.getTime();
939
940                         // build end date/time
941
cal = new GregorianCalendar JavaDoc();
942                         cal.setTime(startDate.getTime());
943                         cal.set(Calendar.HOUR_OF_DAY, endTime.get(Calendar.HOUR_OF_DAY));
944                         cal.set(Calendar.MINUTE, endTime.get(Calendar.MINUTE));
945                         Date JavaDoc eventEndDate = cal.getTime();
946
947                         // if this event is after, die
948
if (cal.getTime().after(endDate.getTime()))
949                             break;
950
951                         Date JavaDoc[] datePair = new Date JavaDoc[4];
952                         datePair[0] = eventStartDate;
953                         datePair[1] = eventEndDate;
954                         datePair[2] = setupDate.getTime();
955                         datePair[3] = breakDate.getTime();
956                         datesList.add(datePair);
957
958                     }
959                     startDate.add(Calendar.DAY_OF_MONTH, 1);
960                     setupDate.add(Calendar.DAY_OF_MONTH, 1);
961                     breakDate.add(Calendar.DAY_OF_MONTH, 1);
962                 }
963                 startDate.add(Calendar.WEEK_OF_YEAR, interval - 1);
964                 setupDate.add(Calendar.WEEK_OF_YEAR, interval - 1);
965                 breakDate.add(Calendar.WEEK_OF_YEAR, interval - 1);
966
967             } else {
968
969                 // build the start time/date
970

971                 if (startDate.get(Calendar.DAY_OF_MONTH) > r.getDayOfMonth()) {
972                     startDate.add(Calendar.MONTH, 1);
973                 }
974
975                 GregorianCalendar JavaDoc cal = new GregorianCalendar JavaDoc();
976                 cal.setTime(startDate.getTime());
977                 cal.set(Calendar.HOUR_OF_DAY, startDate.get(Calendar.HOUR_OF_DAY));
978                 cal.set(Calendar.MINUTE, startDate.get(Calendar.MINUTE));
979                 cal.set(Calendar.DAY_OF_MONTH, r.getDayOfMonth());
980                 Date JavaDoc eventStartDate = cal.getTime();
981
982                 // build end date/time
983
cal = new GregorianCalendar JavaDoc();
984                 cal.setTime(startDate.getTime());
985                 cal.set(Calendar.HOUR_OF_DAY, endTime.get(Calendar.HOUR_OF_DAY));
986                 cal.set(Calendar.MINUTE, endTime.get(Calendar.MINUTE));
987                 cal.set(Calendar.DAY_OF_MONTH, r.getDayOfMonth());
988                 Date JavaDoc eventEndDate = cal.getTime();
989
990                 // if this event is after, die
991
if (cal.getTime().after(endDate.getTime()))
992                     break;
993
994                 Date JavaDoc[] datePair = new Date JavaDoc[4];
995                 datePair[0] = eventStartDate;
996                 datePair[1] = eventEndDate;
997                 datePair[2] = setupDate.getTime();
998                 datePair[3] = breakDate.getTime();
999                 datesList.add(datePair);
1000
1001                // add to start date
1002
startDate.add(Calendar.MONTH, interval);
1003                setupDate.add(Calendar.MONTH, interval);
1004                breakDate.add(Calendar.MONTH, interval);
1005
1006            }
1007
1008        }
1009
1010        // Getting current recurrance parent events to be excluded from the
1011
// query
1012
List JavaDoc currentRecuranceEvents = InodeFactory.getParentsOfClass(r, Event.class);
1013
1014        // Building the query
1015
StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
1016
1017        // from part
1018
// sb.append("from event in class
1019
// com.dotmarketing.portlets.events.model.Event, tree where (");
1020
sb.append("select {event.*} from event, inode event_1_, tree where event.inode = event_1_.inode and (");
1021
1022        // where part
1023

1024        // dates ranges
1025
Iterator JavaDoc it = datesList.iterator();
1026        while (it.hasNext()) {
1027            it.next();
1028            sb.append("(setup_date <= ? and break_date >= ?)");
1029            if (it.hasNext())
1030                sb.append(" or ");
1031        }
1032        sb.append(") and ");
1033
1034        // excluding recurance parent events
1035
sb.append("event.inode not in (");
1036        it = currentRecuranceEvents.iterator();
1037        while (it.hasNext()) {
1038            Event ev = (Event) it.next();
1039            sb.append(ev.getInode());
1040            sb.append(", ");
1041        }
1042        sb.append(e.getInode());
1043        sb.append(") and ");
1044
1045        // facility part
1046
sb.append("tree.child = event.inode and tree.parent = ? and ");
1047
1048        sb.append("event.approval_status = " + Constants.EVENT_APPROVED_STATUS + " ");
1049        sb.append("order by start_date");
1050
1051        // Making the query object
1052
DotHibernate dh = new DotHibernate(Event.class);
1053        String JavaDoc query = sb.toString();
1054        dh.setSQLQuery(query);
1055
1056        // Including parameters
1057

1058        // dates
1059
it = datesList.iterator();
1060        while (it.hasNext()) {
1061            Date JavaDoc[] datesPair = (Date JavaDoc[]) it.next();
1062            dh.setParam(datesPair[3]);
1063            dh.setParam(datesPair[2]);
1064        }
1065        dh.setParam(f.getInode());
1066        return dh.list();
1067    }
1068
1069    public static boolean hasPermissionsOverTheEvent(User user, Event ev) throws PortalException, SystemException {
1070        Iterator JavaDoc rolesIt = UserLocalManagerUtil.getRoles(user.getUserId()).iterator();
1071        while (rolesIt.hasNext()) {
1072            Role role = (Role) rolesIt.next();
1073            if (role.getName().equals(Config.getStringProperty("EVENTS_ADMINISTRATOR"))) {
1074                return true;
1075            }
1076        }
1077        if (ev.getUserId() == null || (ev.getUserId().equals(user.getUserId())))
1078            return true;
1079        else
1080            return false;
1081
1082    }
1083
1084    public static boolean isAnEventAdministrator(User user) throws PortalException, SystemException {
1085        String JavaDoc x = Config.getStringProperty("EVENTS_ADMINISTRATOR");
1086        return RoleFactory.userHasRole(user, x);
1087    }
1088
1089    /**
1090     * @return
1091     */

1092
1093    public static List JavaDoc getEventsWaitingForApproval() {
1094        DotConnect dc = new DotConnect();
1095        StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
1096        
1097        // sb.append("(select distinct on (recurance.inode) event.inode from
1098
// event, recurance, tree ");
1099

1100// sb.append("select event.inode as inode from event where (event.inode in ");
1101
// sb.append(" (select distinct event.inode from event, recurance, tree ");
1102
// sb.append(" where event.inode = tree.parent and tree.child = recurance.inode ) ");
1103
// sb.append(" or event.inode in ");
1104
// sb.append(" (select event.inode from event ");
1105
// sb.append(" where event.inode not in (select tree.parent from recurance, tree where recurance.inode = tree.child))) and ");
1106
// sb.append(" event.approval_status = " + Constants.EVENT_WAITING_APPROVAL_STATUS + " order by event.start_date");
1107

1108        sb.append("select inode ");
1109        sb.append("from event ");
1110        sb.append("where approval_status = " + Constants.EVENT_WAITING_APPROVAL_STATUS + " ");
1111        sb.append("order by start_date");
1112        
1113        dc.setSQL(sb.toString());
1114        return dc.getResults();
1115    }
1116
1117    public static List JavaDoc getEventAdministrators() throws PortalException, SystemException {
1118        Role adminRole = RoleLocalManagerUtil.getRoleByName(PublicCompanyFactory.getDefaultCompanyId(), Config
1119                .getStringProperty("EVENTS_ADMINISTRATOR"));
1120        return RoleLocalManagerUtil.getUsers(adminRole.getRoleId());
1121    }
1122
1123    private static String JavaDoc _buildEmailHTMLBody(Event e, Facility fac, User u) {
1124        Recurance r = (Recurance) InodeFactory.getChildOfClass(e, Recurance.class);
1125
1126        StringBuffer JavaDoc emailBody = new StringBuffer JavaDoc();
1127
1128        emailBody.append("<table border=\"0\">");
1129        emailBody.append("<tr><td colspan=2 align=\"center\"><b>Event Info</b></td></tr>");
1130        emailBody.append("<tr>");
1131        emailBody.append(" <TD><strong>Event:</strong></TD>");
1132        emailBody.append(" <TD>");
1133        emailBody.append(e.getTitle());
1134        emailBody.append(" </TD>");
1135        emailBody.append("</tr>");
1136        emailBody.append("<tr>");
1137        emailBody.append(" <TD><strong>Approval Status:</strong></TD>");
1138        emailBody.append(" <TD>");
1139        emailBody.append(com.dotmarketing.util.Constants.EVENT_APPROVAL_STATUSES[e.getApprovalStatus()]);
1140        emailBody.append(" </TD>");
1141        emailBody.append("</tr>");
1142        emailBody.append("<tr>");
1143        emailBody.append(" <TD><strong>Subtitle:</strong></TD>");
1144        emailBody.append(" <TD>");
1145        emailBody.append(e.getSubtitle());
1146        emailBody.append(" </TD>");
1147        emailBody.append("</tr>");
1148        emailBody.append("<tr>");
1149        emailBody.append(" <TD><strong>Date/Time:</strong></TD>");
1150        emailBody.append(" <TD>");
1151        if (e.isTimeTBD())
1152            emailBody.append(UtilMethods.dateToHTMLDateRange(e.getSetupDate(), e.getBreakDate(), GregorianCalendar
1153                    .getInstance().getTimeZone())
1154                    + " time TBD");
1155        else
1156            emailBody.append(UtilMethods.dateToHTMLDateTimeRange(e.getSetupDate(), e.getBreakDate(), GregorianCalendar
1157                    .getInstance().getTimeZone()));
1158        emailBody.append(" </TD>");
1159        emailBody.append("</tr>");
1160        emailBody.append("<tr>");
1161        emailBody.append(" <td><strong>Event Occurs:</strong></td>");
1162        emailBody.append(" <td>");
1163        emailBody.append(UtilHTML.recuranceToString(e, r));
1164        emailBody.append(" </td>");
1165        emailBody.append("</tr>");
1166        emailBody.append("<tr>");
1167        emailBody.append(" <td><strong>Facility:</strong></td>");
1168        emailBody.append(" <td>");
1169        if (fac.getInode() > 0)
1170            emailBody.append(fac.getFacilityName());
1171        else
1172            emailBody.append("None / Off-Campus");
1173        emailBody.append(" </td>");
1174        emailBody.append("</tr>");
1175        emailBody.append("<tr>");
1176        emailBody.append(" <td><strong>Web Address:</strong></td>");
1177        emailBody.append(" <td>");
1178        emailBody.append(e.getWebAddress());
1179        emailBody.append(" </td>");
1180        emailBody.append("</tr>");
1181        emailBody.append("<tr>");
1182        emailBody.append(" <td><strong>Received Administrative Approval:</strong></td>");
1183        emailBody.append(" <td>");
1184        emailBody.append(e.isReceivedAdminApproval() ? "Yes" : "No");
1185        emailBody.append(" </td>");
1186        emailBody.append("</tr>");
1187        emailBody.append("<tr><td colspan=2 align=\"center\">&nbsp;</tr>");
1188        emailBody.append("<tr><td colspan=2 align=\"center\"><b>User Info</b></td></tr>");
1189        emailBody.append("<tr>");
1190        emailBody.append(" <td><strong>User Name:</strong></td>");
1191        emailBody.append(" <td>" + u.getFullName() + "</td>");
1192        emailBody.append("</tr>");
1193        emailBody.append("<tr>");
1194        emailBody.append(" <td><strong>User Email/Login:</strong></td>");
1195        emailBody.append(" <td>" + u.getEmailAddress() + "</td>");
1196        emailBody.append("</tr>");
1197        emailBody.append("<tr><td colspan=2 align=\"center\">&nbsp;</tr>");
1198        emailBody.append("<tr><td colspan=2 align=\"center\"><b>Contact Info</b></td></tr>");
1199        emailBody.append("<tr>");
1200        emailBody.append(" <td><strong>Contact Name:</strong></td>");
1201        emailBody.append(" <td>" + e.getContactName() + "</td>");
1202        emailBody.append("</tr>");
1203        emailBody.append("<tr>");
1204        emailBody.append(" <td><strong>Contact Phone:</strong></td>");
1205        emailBody.append(" <td>" + e.getContactPhone() + "</td>");
1206        emailBody.append("</tr>");
1207        emailBody.append("<tr>");
1208        emailBody.append(" <td><strong>Contact Fax:</strong></td>");
1209        emailBody.append(" <td>" + e.getContactFax() + "</td>");
1210        emailBody.append("</tr>");
1211        emailBody.append("<tr>");
1212        emailBody.append(" <td><strong>Contact Email:</strong></td>");
1213        emailBody.append(" <td>" + e.getContactEmail() + "</td>");
1214        emailBody.append("</tr>");
1215        emailBody.append("<tr>");
1216        emailBody
1217                .append(" <td nowrap><span style=\"display: inline;\"><strong>Contact Organization:</strong></span></td>");
1218        emailBody.append(" <td>" + e.getContactCompany() + "</td>");
1219        emailBody.append("</tr>");
1220        emailBody.append("<tr>");
1221        emailBody.append(" <td colspan=\"2\">");
1222        emailBody.append(" <strong>Description:</strong><BR>");
1223        emailBody.append(" " + e.getDescription() + "</td>");
1224        emailBody.append("</tr>");
1225        emailBody.append("<tr>");
1226        emailBody.append(" <td colspan=\"2\"><strong>Directions:</strong><BR>");
1227        emailBody.append(" " + e.getDirections() + "</td>");
1228        emailBody.append("</tr>");
1229        emailBody.append("</table>");
1230
1231        return emailBody.toString();
1232    }
1233
1234    public static void sendEmailNotification(Event e, Facility fac, User currentUser, boolean eventChange) {
1235        if (e.getApprovalStatus() == com.dotmarketing.util.Constants.EVENT_WAITING_APPROVAL_STATUS) {
1236            if (!e.getContactEmail().trim().equals("")) {
1237                List JavaDoc administrators = new ArrayList JavaDoc();
1238                try {
1239                    administrators = EventFactory.getEventAdministrators();
1240                } catch (PortalException e1) {
1241                    e1.printStackTrace();
1242                } catch (SystemException e1) {
1243                    e1.printStackTrace();
1244                }
1245                Iterator JavaDoc it = administrators.iterator();
1246                while (it.hasNext()) {
1247                    User admin = (User) it.next();
1248                    Mailer mailer = new Mailer();
1249                    mailer.setFromEmail(e.getContactEmail());
1250                    mailer.setFromName(e.getContactName());
1251                    mailer.setToEmail(admin.getEmailAddress());
1252                    mailer.setToName(admin.getFullName());
1253                    if (eventChange)
1254                        mailer.setSubject("Event Change Notification (The event request has been modified)");
1255                    else
1256                        mailer.setSubject("New Event Request Notification");
1257                    mailer.setHTMLBody(_buildEmailHTMLBody(e, fac, currentUser));
1258                    mailer.sendMessage();
1259                }
1260            }
1261        } else {
1262            if (!e.getContactEmail().trim().equals("")) {
1263
1264                Mailer mailer = new Mailer();
1265                mailer.setToEmail(e.getContactEmail());
1266                mailer.setToName(e.getContactName());
1267                mailer.setFromEmail(currentUser.getEmailAddress());
1268                mailer.setFromName(currentUser.getFullName());
1269                if (e.getApprovalStatus() == com.dotmarketing.util.Constants.EVENT_APPROVED_STATUS)
1270                    mailer.setSubject("Event Approved Notification");
1271                else
1272                    mailer.setSubject("Event Disapproved Notification");
1273                mailer.setHTMLBody(_buildEmailHTMLBody(e, fac, currentUser));
1274                mailer.sendMessage();
1275            }
1276        }
1277    }
1278
1279}
1280
Popular Tags