/**
* Copyright (c) 2009-2014 Câmara dos Deputados. Todos os direitos reservados.
*
* e-Democracia é um software livre; você pode redistribuí-lo e/ou modificá-lo dentro
* dos termos da Licença Pública Geral Menor GNU como publicada pela Fundação do
* Software Livre (FSF); na versão 2.1 da Licença, ou (na sua opinião) qualquer versão.
*
* Este programa é distribuído na esperança de que possa ser útil, mas SEM NENHUMA GARANTIA;
* sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR.
* Veja a Licença Pública Geral Menor GNU para maiores detalhes.
*/
package br.gov.camara.edemocracia.portlets.chat.portlet.views;
import java.util.Calendar;
import java.util.Date;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import org.apache.commons.lang.StringUtils;
import br.gov.camara.edemocracia.portlets.chat.model.ChatRoom;
import br.gov.camara.edemocracia.portlets.chat.model.ChatRoomTwitter;
import br.gov.camara.edemocracia.portlets.chat.model.ChatRoomUser;
import br.gov.camara.edemocracia.portlets.chat.model.ChatRoomVideo;
import br.gov.camara.edemocracia.portlets.chat.portlet.ChatPortletConstants;
import br.gov.camara.edemocracia.portlets.chat.portlet.ChatPortletRequestUtil;
import br.gov.camara.edemocracia.portlets.chat.portlet.ChatPortletSessionUtil;
import br.gov.camara.edemocracia.portlets.chat.portlet.ChatPortletUtil;
import br.gov.camara.edemocracia.portlets.chat.portlet.ChatRoomView;
import br.gov.camara.edemocracia.portlets.chat.service.UserActivityId;
import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.servlet.SessionErrors;
import com.liferay.portal.model.User;
/**
* @author P_7339
*
*/
public class ChatView extends AbstractView {
@Override
public ChatRoomView processView(RenderRequest request, RenderResponse response) throws PortalException, SystemException {
User user = ChatPortletRequestUtil.getUserFromRequest(request);
ChatRoom room = getRoom(request);
if (room == null) {
return addRoomNotFoundMessage(request, user);
}
ChatRoomUser chatUser = ChatPortletRequestUtil.getChatRoomUser(request, room.getRoomId());
UserActivityId userActivityId = ChatPortletSessionUtil.getUserActivityIdInRoom(request, room.getRoomId());
boolean spying = userActivityId != null && userActivityId.isSpyUser();
if(!spying) {
if (chatUser == null) {
return resolveDestinationView(request, user, room, "cant-join");
}
if (chatUser.getBanned()) {
// Usuário banido
SessionErrors.add(request, "user-banned");
return resolveDestinationView(request, user, room, null);
}
}
Date since = ChatPortletUtil.addToDate(new Date(), Calendar.MINUTE, -ChatPortletConstants.THIRTY_MINUTES);
request.setAttribute(ChatPortletConstants.UPDATE_TS_ATTRIBUTE, since);
ChatRoomTwitter chatRoomTwitter = getChatRoomTwitter(request);
request.setAttribute(ChatPortletConstants.TWITTER_ATTRIBUTE, chatRoomTwitter);
ChatRoomVideo chatRoomVideoLive = getChatRoomVideoLive(request);
request.setAttribute(ChatPortletConstants.VIDEO_LIVE_ATTRIBUTE, chatRoomVideoLive);
if (!spying && chatUser.isModerator()) {
return ChatRoomView.MODERATE;
} else {
return ChatRoomView.VIEW;
}
}
private ChatRoomView resolveDestinationView(RenderRequest request, User user, ChatRoom room, String optionalErrorMessageKey) {
if (user.isDefaultUser()) {
if (room.isAnonymousAllowed()) {
return ChatRoomView.ANON;
} else {
if (StringUtils.isNotBlank(optionalErrorMessageKey)) {
SessionErrors.add(request, optionalErrorMessageKey);
}
return ChatRoomView.ERROR;
}
} else {
return ChatRoomView.LIST;
}
}
}