CalendarActionBean.java
package sk.iway.iwcm.components.calendar;
import static sk.iway.iwcm.system.stripes.WebJETActionBean.RESOLUTION_CLOSE;
import static sk.iway.iwcm.system.stripes.WebJETActionBean.RESOLUTION_CONTINUE;
import java.util.List;
import net.sourceforge.stripes.action.ActionBean;
import net.sourceforge.stripes.action.ActionBeanContext;
import net.sourceforge.stripes.action.DefaultHandler;
import net.sourceforge.stripes.action.DontValidate;
import net.sourceforge.stripes.action.ForwardResolution;
import net.sourceforge.stripes.action.HandlesEvent;
import net.sourceforge.stripes.action.Resolution;
import sk.iway.iwcm.Adminlog;
import sk.iway.iwcm.Constants;
import sk.iway.iwcm.DB;
import sk.iway.iwcm.Identity;
import sk.iway.iwcm.PageLng;
import sk.iway.iwcm.SpamProtection;
import sk.iway.iwcm.Tools;
import sk.iway.iwcm.calendar.CalendarDB;
import sk.iway.iwcm.calendar.CalendarDetails;
import sk.iway.iwcm.calendar.CalendarInvitationDetails;
import sk.iway.iwcm.calendar.EventForm;
import sk.iway.iwcm.calendar.EventTypeDB;
import sk.iway.iwcm.calendar.EventTypeDetails;
import sk.iway.iwcm.i18n.Prop;
import sk.iway.iwcm.users.SettingsBean;
/**
* CalendarActionBean.java
*
*@Title webjet4
*@Company Interway s.r.o. (www.interway.sk)
*@Copyright Interway s.r.o. (c) 2001-2009
*@author $Author: bhric $
*@version $Revision: 1.2 $
*@created Date: 23.1.2009 13:53:50
*@modified $Date: 2009/08/04 07:51:02 $
*/
public class CalendarActionBean implements ActionBean
{
private ActionBeanContext context;
private int userId;
private int calendarId;
private String akcia;
private EventForm event = new EventForm();
private EventTypeDetails eventType = new EventTypeDetails();
private int approveEventId;
private int approveStatus;
private String odporuceneId;
private int odporucitAkcia;
private String vyraz;
private String region;
private int[] eventTypes;
private String domain;
private String approverMail;
@Override
public ActionBeanContext getContext()
{
return context;
}
@Override
public void setContext(ActionBeanContext context)
{
this.context = context;
if (context.getRequest().getParameter("typeId") != null)
{
int typeId = Tools.getIntValue(context.getRequest().getParameter("typeId"), -1);
if(typeId != -1)
this.eventType = EventTypeDB.getTypeById(typeId);
}
}
public int getUserId()
{
return userId;
}
public void setUserId(int userId)
{
this.userId = userId;
}
public int getCalendarId()
{
return calendarId;
}
public void setCalendarId(int calendarId)
{
this.calendarId = calendarId;
}
public String getAkcia()
{
return akcia;
}
public void setAkcia(String akcia)
{
this.akcia = akcia;
}
public EventForm getEvent()
{
return event;
}
public void setEvent(EventForm event)
{
this.event = event;
}
public EventTypeDetails getEventType()
{
return eventType;
}
public void setEventType(EventTypeDetails eventType)
{
this.eventType = eventType;
}
public int getApproveEventId()
{
return approveEventId;
}
public void setApproveEventId(int approveEventId)
{
this.approveEventId = approveEventId;
}
public int getApproveStatus()
{
return approveStatus;
}
public void setApproveStatus(int approveStatus)
{
this.approveStatus = approveStatus;
}
public String getOdporuceneId()
{
return odporuceneId;
}
public void setOdporuceneId(String odporuceneId)
{
this.odporuceneId = odporuceneId;
}
public int getOdporucitAkcia()
{
return odporucitAkcia;
}
public void setOdporucitAkcia(int odporucitAkcia)
{
this.odporucitAkcia = odporucitAkcia;
}
public String getVyraz()
{
return vyraz;
}
public void setVyraz(String vyraz)
{
this.vyraz = vyraz;
}
public String getRegion()
{
return region;
}
public void setRegion(String region)
{
this.region = region;
}
public void setEventTypes(int[] eventTypes)
{
this.eventTypes = eventTypes;
}
@DefaultHandler
@DontValidate
@HandlesEvent("saveRemoveUserId")
public Resolution saveRemoveUserId()
{
boolean saveOk = false;
if(userId != -1)
{
CalendarInvitationDetails inv = CalendarDB.getInvitationByUser(calendarId, userId);
if(akcia.equals("save"))
{
if(inv == null)
{
saveOk = CalendarDB.saveCalendarInvitation(calendarId, userId);
if(saveOk)
{
inv = CalendarDB.getInvitationByUser(calendarId, userId);
saveOk = CalendarDB.setCalendarInvitationStatus(inv.getCalendarInvitationId(), "A");
}
}
else
{
saveOk = CalendarDB.setCalendarInvitationStatus(inv.getCalendarInvitationId(), "A");
}
}
else if(akcia.equals("remove"))
{
if(inv == null)
{
saveOk = CalendarDB.saveCalendarInvitation(calendarId, userId);
if(saveOk)
{
inv = CalendarDB.getInvitationByUser(calendarId, userId);
saveOk = CalendarDB.setCalendarInvitationStatus(inv.getCalendarInvitationId(), "D");
}
}
else
{
saveOk = CalendarDB.setCalendarInvitationStatus(inv.getCalendarInvitationId(), "D");
}
}
}
context.getRequest().setAttribute("saveOk", saveOk);
context.getRequest().setAttribute("calendarId", calendarId);
return new ForwardResolution(RESOLUTION_CONTINUE);
}
@DontValidate
@HandlesEvent("pridajAkciu")
public Resolution pridajAkciu()
{
EventTypeDetails eventTypeDetails = EventTypeDB.getTypeById(event.getTypeId());
String lng = PageLng.getUserLng(context.getRequest());
Prop prop = Prop.getInstance(lng);
if(eventTypeDetails.getSchvalovatelId() == -1)
event.setApprove(1);
else
event.setApprove(-1);
boolean saveOk = CalendarDB.saveEventToDB(event);
if(saveOk)
{
context.getRequest().setAttribute("saveOk", prop.getText("components.calendar.akciaSaved"));
return new ForwardResolution(RESOLUTION_CONTINUE);
}
else{
context.getRequest().setAttribute("errorText", prop.getText("editor.perex_group.chyba_pri_ukladani"));
return new ForwardResolution(RESOLUTION_CONTINUE);
}
}
@DontValidate
@HandlesEvent("editujTyp")
public Resolution editujTyp()
{
int ret = EventTypeDB.updateType(eventType);
String lng = PageLng.getUserLng(context.getRequest());
Prop prop = Prop.getInstance(lng);
boolean saveOk = false;
if(ret == -1)
saveOk = false;
else
saveOk = true;
if(saveOk)
{
context.getRequest().setAttribute("customScript", "alert('"+prop.getText("calendar_edit.configType.saved")+"');window.opener.location.reload();");
return new ForwardResolution(RESOLUTION_CLOSE);
}
else{
context.getRequest().setAttribute("errorText", prop.getText("editor.perex_group.chyba_pri_ukladani"));
return new ForwardResolution(RESOLUTION_CONTINUE);
}
}
@DontValidate
@HandlesEvent("schvalujem")
public Resolution schvalujem()
{
boolean saveOk = CalendarDB.saveApproveStatus(approveEventId, approveStatus, true);
String lng = PageLng.getUserLng(context.getRequest());
Prop prop = Prop.getInstance(lng);
if(saveOk)
{
context.getRequest().setAttribute("customScript", "alert(\""+prop.getText("components.calendar.akciaSaved")+"\");window.opener.location.reload();");
return new ForwardResolution(RESOLUTION_CLOSE);
}
else{
context.getRequest().setAttribute("errorText", prop.getText("editor.perex_group.chyba_pri_ukladani"));
return new ForwardResolution(RESOLUTION_CONTINUE);
}
}
@DontValidate
@HandlesEvent("odporucujem")
public Resolution odporucujem()
{
boolean saveOk = false;
String lng = PageLng.getUserLng(context.getRequest());
Prop prop = Prop.getInstance(lng);
if(Tools.isNotEmpty(odporuceneId))
{
saveOk = CalendarDB.setSuggestEvents(odporucitAkcia, odporuceneId);
}
else
{
context.getRequest().setAttribute("errorText", prop.getText("calendar.check_event_error"));
return new ForwardResolution(RESOLUTION_CONTINUE);
}
if(saveOk)
{
context.getRequest().setAttribute("saveOk",saveOk);
return new ForwardResolution(RESOLUTION_CONTINUE);
}
else
{
context.getRequest().setAttribute("errorText", prop.getText("editor.perex_group.chyba_pri_ukladani"));
return new ForwardResolution(RESOLUTION_CONTINUE);
}
}
@DontValidate
@HandlesEvent("fullTextSearch")
public Resolution fullTextSearch()
{
Identity user = (Identity)context.getRequest().getSession().getAttribute(Constants.USER_KEY);
boolean zobrazVsetky = true;
if (user != null)
{
SettingsBean sbPerms = user.getSettings().get("kaZobrazujAkcie");
if (sbPerms!=null)
{
if("vsetky".equals(sbPerms.getSvalue1()))
zobrazVsetky = true;
else
zobrazVsetky = false;
}
}
if(Tools.isNotEmpty(vyraz))
{
List<CalendarDetails> events = CalendarDB.fullTextSearch(vyraz);
context.getRequest().setAttribute("events",events);
}
else
{
List<CalendarDetails> events = null;
if(zobrazVsetky)
events = CalendarDB.getEventsByRegionAndType(getContext().getRequest());
else
{
//VUB: todo - toto treba znova odkomentovat po prechode VUB na WJ7
//events = KalendarAkciiDB.getVubAkcie(getContext().getRequest());
}
context.getRequest().setAttribute("events",events);
}
return new ForwardResolution(RESOLUTION_CONTINUE);
}
@DontValidate
@HandlesEvent("filtruj")
public Resolution filtruj()
{
String lng = PageLng.getUserLng(context.getRequest());
Prop prop = Prop.getInstance(lng);
if(eventTypes != null && eventTypes.length > 0)
{
context.getRequest().setAttribute("calStart", Tools.formatDate(Tools.getNow()));
context.getRequest().removeAttribute("calEnd");
context.getRequest().setAttribute("showApprove", "1");
context.getRequest().removeAttribute("suggest");
List<CalendarDetails> events = CalendarDB.getEventsByRegionAndType(context.getRequest(), eventTypes, region);
context.getRequest().setAttribute("events",events);
return new ForwardResolution(RESOLUTION_CONTINUE);
}
else{
context.getRequest().setAttribute("errorText", prop.getText("components.calendar.empty_search_term"));
return new ForwardResolution(RESOLUTION_CONTINUE);
}
}
@DontValidate
@HandlesEvent("pridajAkciuVerejnost")
public Resolution pridajAkciuVerejnost()
{
String lng = PageLng.getUserLng(context.getRequest());
Prop prop = Prop.getInstance(lng);
if (!SpamProtection.canPost("form", null, context.getRequest()))
{
Adminlog.add(Adminlog.TYPE_FORMMAIL, "detectSpam (ReviewsAction.bSave()) TRUE: can't post", -1, -1);
//setErrorText("Formulár bol detekovaný ako SPAM");
context.getRequest().setAttribute("errorText", prop.getText("checkform.fail_probablySpamBot"));
return (new ForwardResolution("/components/maybeError.jsp"));
}
event.setApprove(-1);
if(event.getTimeRange() == null) event.setTimeRange("");
if(event.getArea() == null) event.setArea("");
if(event.getAddress() == null) event.setAddress("");
if(event.getInfo1() == null) event.setInfo1("");
if(event.getInfo2() == null) event.setInfo2("");
if(event.getInfo3() == null) event.setInfo3("");
if(event.getInfo4() == null) event.setInfo4("");
if(event.getInfo5() == null) event.setInfo5("");
if(event.getLng() == null) event.setLng("");
if(event.getDescription() == null) event.setDescription("");
if(event.getNotifyEmails() == null) event.setNotifyEmails("");
if(event.getNotifySender() == null) event.setNotifySender("");
if(event.getNotifyIntrotext() == null) event.setNotifyIntrotext("");
event.setTitle(DB.filterHtml(event.getTitle()));
event.setDateFrom(DB.filterHtml(event.getDateFrom()));
event.setDateTo(DB.filterHtml(event.getDateTo()));
event.setTimeRange(DB.filterHtml(event.getTimeRange()));
event.setCity(DB.filterHtml(event.getCity()));
event.setAddress(DB.filterHtml(event.getAddress()));
event.setDescription(DB.filterHtml(event.getDescription()));
boolean saveOk = CalendarDB.saveEventPublicToDB(event, domain, approverMail, prop);
if(saveOk)
{
context.getRequest().setAttribute("saveOk", prop.getText("components.calendar.akciaSaved"));
return new ForwardResolution(RESOLUTION_CONTINUE);
}
else{
context.getRequest().setAttribute("errorText", prop.getText("editor.perex_group.chyba_pri_ukladani"));
return new ForwardResolution(RESOLUTION_CONTINUE);
}
}
public String getDomain() {
return domain;
}
public void setDomain(String domain) {
this.domain = domain;
}
public String getApproverMail() {
return approverMail;
}
public void setApproverMail(String approverMail) {
this.approverMail = approverMail;
}
}