br.com.prodevelopment.lapidarios.evento.service.impl.EventoAgendaLocalServiceImpl.java Source code

Java tutorial

Introduction

Here is the source code for br.com.prodevelopment.lapidarios.evento.service.impl.EventoAgendaLocalServiceImpl.java

Source

/**
 * Copyright (c) 2000-2013 Liferay, Inc. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation; either version 2.1 of the License, or (at your option)
 * any later version.
 *
 * This library is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 */

package br.com.prodevelopment.lapidarios.evento.service.impl;

import java.text.ParseException;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Map;

import org.apache.log4j.Logger;

import br.com.prodevelopment.lapidarios.evento.EventoAgendaAlteradoOutroUsuarioException;
import br.com.prodevelopment.lapidarios.evento.EventoAgendaObrigatorioException;
import br.com.prodevelopment.lapidarios.evento.EventoDataInvalidaException;
import br.com.prodevelopment.lapidarios.evento.EventoDataMenorHojeException;
import br.com.prodevelopment.lapidarios.evento.EventoDataObrigatoriaException;
import br.com.prodevelopment.lapidarios.evento.EventoLocalObrigatorioException;
import br.com.prodevelopment.lapidarios.evento.EventoNaoEncontradoException;
import br.com.prodevelopment.lapidarios.evento.EventoObrigatorioException;
import br.com.prodevelopment.lapidarios.evento.EventoQtdeVagasObrigatoriaException;
import br.com.prodevelopment.lapidarios.evento.EventoQtdeVagasPreenchidaException;
import br.com.prodevelopment.lapidarios.evento.EventoResponsavelObrigatorioException;
import br.com.prodevelopment.lapidarios.evento.model.Evento;
import br.com.prodevelopment.lapidarios.evento.model.EventoAgenda;
import br.com.prodevelopment.lapidarios.evento.model.Local;
import br.com.prodevelopment.lapidarios.evento.service.EventoInscricaoLocalServiceUtil;
import br.com.prodevelopment.lapidarios.evento.service.EventoLocalServiceUtil;
import br.com.prodevelopment.lapidarios.evento.service.base.EventoAgendaLocalServiceBaseImpl;
import br.com.prodevelopment.lapidarios.evento.util.DateUtil;
import br.com.prodevelopment.lapidarios.portlet.agendaevento.Constantes;

import com.liferay.portal.kernel.exception.PortalException;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.systemevent.SystemEvent;
import com.liferay.portal.kernel.util.LocaleUtil;
import com.liferay.portal.kernel.util.OrderByComparator;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.portal.kernel.workflow.WorkflowConstants;
import com.liferay.portal.kernel.workflow.WorkflowHandlerRegistryUtil;
import com.liferay.portal.model.SystemEventConstants;
import com.liferay.portal.model.User;
import com.liferay.portal.service.ServiceContext;
import com.liferay.portal.service.WorkflowDefinitionLinkLocalServiceUtil;
import com.liferay.portal.util.PortalUtil;
import com.liferay.portlet.trash.model.TrashEntry;

/**
 * The implementation of the evento agenda local service.
 * 
 * <p>
 * All custom service methods should be put in this class. Whenever methods are
 * added, rerun ServiceBuilder to copy their definitions into the
 * {@link br.com.prodevelopment.lapidarios.evento.service.EventoAgendaLocalService}
 * interface.
 * 
 * <p>
 * This is a local service. Methods of this service will not have security
 * checks based on the propagated JAAS credentials because this service can only
 * be accessed from within the same VM.
 * </p>
 * 
 * @author Marcelo Melo
 * @see br.com.prodevelopment.lapidarios.evento.service.base.EventoAgendaLocalServiceBaseImpl
 * @see br.com.prodevelopment.lapidarios.evento.service.EventoAgendaLocalServiceUtil
 */
public class EventoAgendaLocalServiceImpl extends EventoAgendaLocalServiceBaseImpl {
    /*
     * NOTE FOR DEVELOPERS:
     * 
     * Never reference this interface directly. Always use {@link
     * br.com.prodevelopment
     * .lapidarios.evento.service.EventoAgendaLocalServiceUtil} to access the
     * evento agenda local service.
     */
    private static Logger _log = Logger.getLogger(EventoAgendaLocalServiceImpl.class);

    public EventoAgenda addEventoAgenda(long companyId, long groupId, long userIdCreate, String sDataEvento,
            String sHoraEvento, int qtdeVagas, boolean gratuito, double valor, long userResponsavelId,
            long eventoId, long localId, Map<Locale, String> observacaoMap, long classNameId,
            ServiceContext serviceContext) throws SystemException, PortalException {

        Locale locale = LocaleUtil.getSiteDefault();

        Date now = new Date();

        validate(0, eventoId, localId, sDataEvento, sHoraEvento, DateUtil.dateToString(now), userIdCreate,
                qtdeVagas, 1);

        User userCreate = userPersistence.findByPrimaryKey(userIdCreate);

        // Recuperar responsvel
        String userResponsavelNome = StringPool.BLANK;
        if (userResponsavelId > 0) {
            User userResponsavel = userPersistence.findByPrimaryKey(userResponsavelId);
            userResponsavelNome = userResponsavel.getFullName();
        }

        // Recuperar evento
        String eventoNome = StringPool.BLANK;
        if (eventoId > 0) {
            Evento evento = eventoPersistence.findByPrimaryKey(eventoId);
            eventoNome = evento.getNome(locale);
        }

        // Recuperar local
        String localNome = StringPool.BLANK;
        if (localId > 0) {
            Local local = localPersistence.findByPrimaryKey(localId);
            localNome = local.getNome();
        }

        // Criar objeto incrementando um novo ID
        long eventoAgendaId = counterLocalService.increment();
        EventoAgenda eventoAgenda = eventoAgendaPersistence.create(eventoAgendaId);

        // Atribui novos valores
        eventoAgenda.setCompanyId(companyId);
        eventoAgenda.setGroupId(groupId);
        eventoAgenda.setCreateUserId(userIdCreate);
        eventoAgenda.setCreateDate(now);
        try {
            Date dataEvento = DateUtil.stringToDate("dd/MM/yyyy", sDataEvento);
            eventoAgenda.setDataEvento(dataEvento);
        } catch (ParseException e) {
            _log.error(e, e);
        }
        eventoAgenda.setHoraEvento(sHoraEvento);
        eventoAgenda.setQtdeVagas(qtdeVagas);
        eventoAgenda.setQtdeVagasPreenchida(0);
        eventoAgenda.setValor(valor);
        eventoAgenda.setUserResponsavelId(userResponsavelId);
        eventoAgenda.setUserResponsavelNome(userResponsavelNome);
        eventoAgenda.setEventoId(eventoId);
        eventoAgenda.setEventoNome(eventoNome);
        eventoAgenda.setLocalId(localId);
        eventoAgenda.setLocalNome(localNome);
        eventoAgenda.setClassNameId(classNameId);
        String className = PortalUtil.getClassName(classNameId);
        eventoAgenda.setClassName(className);
        eventoAgenda.setStatusDate(serviceContext.getModifiedDate(now));
        eventoAgenda.setStatusByUserId(userCreate.getUserId());
        eventoAgenda.setStatusByUserName(userCreate.getFullName());
        if (WorkflowDefinitionLinkLocalServiceUtil.hasWorkflowDefinitionLink(companyId, groupId,
                EventoAgenda.class.getName())) {
            eventoAgenda.setStatus(WorkflowConstants.STATUS_PENDING);
        } else {
            eventoAgenda.setStatus(WorkflowConstants.STATUS_APPROVED);
        }
        eventoAgenda.setObservacaoMap(observacaoMap);
        eventoAgenda.setVersao(Constantes.VERSAO_INICIAL);
        eventoAgenda.setGratuito(gratuito);

        eventoAgendaPersistence.update(eventoAgenda);

        // Workflow
        WorkflowHandlerRegistryUtil.startWorkflowInstance(companyId, groupId, userCreate.getUserId(),
                EventoAgenda.class.getName(), eventoAgendaId, eventoAgenda, serviceContext);

        return eventoAgenda;
    }

    public EventoAgenda addEventoAgenda(long companyId, long groupId, long userIdCreate, String sDataEvento,
            String sHoraEvento, int qtdeVagas, boolean gratuito, double valor, long userResponsavelId,
            long eventoId, long localId, Map<Locale, String> observacaoMap, long classNameId, long classPK,
            ServiceContext serviceContext) throws PortalException, SystemException {

        EventoAgenda eventoAgenda = addEventoAgenda(companyId, groupId, userIdCreate, sDataEvento, sHoraEvento,
                qtdeVagas, gratuito, valor, userResponsavelId, eventoId, localId, observacaoMap, classNameId,
                classPK, serviceContext);
        eventoAgenda.setClassPK(classPK);

        eventoAgendaPersistence.update(eventoAgenda);

        return eventoAgenda;
    }

    public EventoAgenda updateEventoAgenda(long eventoAgendaId, long companyId, long groupId, long modifiedUserId,
            String sDataEvento, String sHoraEvento, int qtdeVagas, boolean gratuito, double valor,
            long userResponsavelId, long eventoId, long localId, Map<Locale, String> observacaoMap,
            long classNameId, ServiceContext serviceContext) throws PortalException, SystemException {

        Locale locale = LocaleUtil.getSiteDefault();

        Date now = new Date();

        // Recuperar evento agenda
        EventoAgenda eventoAgenda = eventoAgendaPersistence.fetchByPrimaryKey(eventoAgendaId);
        double versao = eventoAgenda.getVersao() + 1;

        validate(eventoAgendaId, eventoId, localId, sDataEvento, sHoraEvento, DateUtil.dateToString(now),
                modifiedUserId, qtdeVagas, versao);

        User userModified = userPersistence.findByPrimaryKey(modifiedUserId);

        // Recuperar responsvel
        String userResponsavelNome = StringPool.BLANK;
        if (userResponsavelId > 0) {
            User userResponsavel = userPersistence.findByPrimaryKey(userResponsavelId);
            userResponsavelNome = userResponsavel.getFullName();
        }

        // Recuperar evento
        String eventoNome = StringPool.BLANK;
        if (eventoId > 0) {
            Evento evento = eventoPersistence.findByPrimaryKey(eventoId);
            eventoNome = evento.getNome(locale);
        }

        // Recuperar local
        String localNome = StringPool.BLANK;
        if (localId > 0) {
            Local local = localPersistence.findByPrimaryKey(localId);
            localNome = local.getNome();
        }

        // Atribui novos valores
        eventoAgenda.setCompanyId(companyId);
        eventoAgenda.setGroupId(groupId);
        eventoAgenda.setModifiedUserId(modifiedUserId);
        eventoAgenda.setModifiedDate(now);
        try {
            Date dataEvento = DateUtil.stringToDate("dd/MM/yyyy", sDataEvento);
            eventoAgenda.setDataEvento(dataEvento);
        } catch (ParseException e) {
            _log.error(e, e);
        }
        eventoAgenda.setHoraEvento(sHoraEvento);
        eventoAgenda.setQtdeVagas(qtdeVagas);
        eventoAgenda.setQtdeVagasPreenchida(0);
        eventoAgenda.setValor(valor);
        eventoAgenda.setUserResponsavelId(userResponsavelId);
        eventoAgenda.setUserResponsavelNome(userResponsavelNome);
        eventoAgenda.setEventoId(eventoId);
        eventoAgenda.setEventoNome(eventoNome);
        eventoAgenda.setLocalId(localId);
        eventoAgenda.setLocalNome(localNome);
        eventoAgenda.setClassNameId(classNameId);
        String className = PortalUtil.getClassName(classNameId);
        eventoAgenda.setClassName(className);
        eventoAgenda.setStatusDate(serviceContext.getModifiedDate(now));
        eventoAgenda.setStatusByUserId(userModified.getUserId());
        eventoAgenda.setStatusByUserName(userModified.getFullName());
        if (WorkflowDefinitionLinkLocalServiceUtil.hasWorkflowDefinitionLink(companyId, groupId,
                EventoAgenda.class.getName())) {
            eventoAgenda.setStatus(WorkflowConstants.STATUS_PENDING);
        } else {
            eventoAgenda.setStatus(WorkflowConstants.STATUS_APPROVED);
        }
        eventoAgenda.setObservacaoMap(observacaoMap);
        eventoAgenda.setVersao(versao);
        eventoAgenda.setGratuito(gratuito);

        eventoAgendaPersistence.update(eventoAgenda);

        return eventoAgenda;
    }

    public EventoAgenda updateEventoAgendaResponsavel(long eventoAgendaId, long modifiedUserId,
            long userResponsavelId, long eventoId) throws PortalException, SystemException {

        Date now = new Date();

        // Recuperar evento agenda
        EventoAgenda eventoAgenda = eventoAgendaPersistence.fetchByPrimaryKey(eventoAgendaId);
        double versao = eventoAgenda.getVersao() + 1;

        validateResponsavel(eventoAgendaId, modifiedUserId, versao);

        // Recuperar responsvel
        String userResponsavelNome = StringPool.BLANK;
        if (userResponsavelId > 0) {
            User userResponsavel = userPersistence.findByPrimaryKey(userResponsavelId);
            userResponsavelNome = userResponsavel.getFullName();
        }

        // Atribui novos valores
        eventoAgenda.setModifiedUserId(modifiedUserId);
        eventoAgenda.setModifiedDate(now);
        eventoAgenda.setUserResponsavelId(userResponsavelId);
        eventoAgenda.setUserResponsavelNome(userResponsavelNome);

        eventoAgendaPersistence.update(eventoAgenda);

        // Atualizar responsavel pelo evento
        this.updateEventoResponsavel(eventoId, modifiedUserId, userResponsavelId);

        return eventoAgenda;
    }

    public EventoAgenda adicionarInscriao(long companyId, long groupId, long eventoAgendaId, long eventoId,
            long userIdCreate) throws PortalException, SystemException {

        // Recuperar evento agenda
        EventoAgenda eventoAgenda = eventoAgendaPersistence.fetchByPrimaryKey(eventoAgendaId);
        int qtdeVagasPreechida = eventoAgenda.getQtdeVagasPreenchida() + 1;

        validateInscricao(eventoAgendaId, eventoAgenda.getQtdeVagas(), qtdeVagasPreechida);

        eventoAgenda.setQtdeVagasPreenchida(qtdeVagasPreechida);

        eventoAgendaPersistence.update(eventoAgenda);

        EventoInscricaoLocalServiceUtil.addEventoInscricao(companyId, groupId, eventoAgendaId, eventoId,
                userIdCreate);

        return eventoAgenda;
    }

    @SystemEvent(action = SystemEventConstants.ACTION_SKIP, send = false, type = SystemEventConstants.TYPE_DELETE)
    public EventoAgenda deleteEventoAgenda(EventoAgenda eventoAgenda) throws SystemException {

        try {
            if (Validator.isNotNull(eventoAgenda)) {
                eventoAgendaPersistence.remove(eventoAgenda);

                // Trash
                trashEntryLocalService.deleteEntry(EventoAgenda.class.getName(), eventoAgenda.getEventoAgendaId());
            }
        } catch (PortalException e) {
            _log.error(e, e);
        }

        return eventoAgenda;
    }

    public EventoAgenda deleteEventoAgenda(long typeId) throws PortalException, SystemException {

        EventoAgenda type = eventoAgendaPersistence.findByPrimaryKey(typeId);

        return deleteEventoAgenda(type);
    }

    public EventoAgenda moveEventoAgendaToTrash(long userId, EventoAgenda eventoAgenda)
            throws PortalException, SystemException {

        eventoAgendaLocalService.updateStatus(userId, eventoAgenda, WorkflowConstants.STATUS_IN_TRASH,
                new ServiceContext());

        // Workflow
        workflowInstanceLinkLocalService.deleteWorkflowInstanceLinks(eventoAgenda.getCompanyId(),
                eventoAgenda.getGroupId(), EventoAgenda.class.getName(), eventoAgenda.getEventoAgendaId());

        return eventoAgenda;
    }

    public EventoAgenda moveEventoAgendaToTrash(long userId, long typeId) throws PortalException, SystemException {

        EventoAgenda type = eventoAgendaPersistence.findByPrimaryKey(typeId);

        return moveEventoAgendaToTrash(userId, type);
    }

    @Override
    public EventoAgenda restoreEventoAgendaFromTrash(long userId, long eventoAgendaId)
            throws PortalException, SystemException {

        EventoAgenda eventoAgenda = getEventoAgenda(eventoAgendaId);

        TrashEntry trashEntry = trashEntryLocalService.getEntry(EventoAgenda.class.getName(), eventoAgendaId);

        eventoAgendaLocalService.updateStatus(userId, eventoAgendaId, trashEntry.getStatus(), new ServiceContext());

        return eventoAgenda;
    }

    public EventoAgenda updateStatus(long userId, EventoAgenda eventoAgenda, int status,
            ServiceContext serviceContext) throws PortalException, SystemException {

        // Type Task

        User user = userPersistence.findByPrimaryKey(userId);
        Date now = new Date();

        int oldStatus = eventoAgenda.getStatus();

        eventoAgenda.setModifiedUserId(userId);
        eventoAgenda.setModifiedDate(serviceContext.getModifiedDate(now));
        eventoAgenda.setStatus(status);
        eventoAgenda.setStatusByUserId(user.getUserId());
        eventoAgenda.setStatusByUserName(user.getFullName());
        eventoAgenda.setStatusDate(serviceContext.getModifiedDate(now));

        eventoAgendaPersistence.update(eventoAgenda);

        // Trash

        if (oldStatus == WorkflowConstants.STATUS_IN_TRASH) {
            trashEntryLocalService.deleteEntry(EventoAgenda.class.getName(), eventoAgenda.getEventoAgendaId());

            // Workflow
            WorkflowHandlerRegistryUtil.startWorkflowInstance(eventoAgenda.getCompanyId(),
                    eventoAgenda.getGroupId(), userId, EventoAgenda.class.getName(),
                    eventoAgenda.getEventoAgendaId(), eventoAgenda, serviceContext);
        }

        if (status == WorkflowConstants.STATUS_IN_TRASH) {
            int novoStatus = WorkflowConstants.STATUS_APPROVED;
            if (WorkflowDefinitionLinkLocalServiceUtil.hasWorkflowDefinitionLink(eventoAgenda.getCompanyId(),
                    eventoAgenda.getGroupId(), EventoAgenda.class.getName())) {
                novoStatus = WorkflowConstants.STATUS_PENDING;
            }

            trashEntryLocalService.addTrashEntry(userId, eventoAgenda.getGroupId(), EventoAgenda.class.getName(),
                    eventoAgenda.getEventoAgendaId(), eventoAgenda.getUuid(), null, novoStatus, null, null);
        }

        return eventoAgenda;
    }

    public EventoAgenda updateStatus(long userId, long eventoAgendaId, int status, ServiceContext serviceContext)
            throws PortalException, SystemException {

        EventoAgenda eventoAgenda = eventoAgendaPersistence.findByPrimaryKey(eventoAgendaId);

        return eventoAgendaLocalService.updateStatus(userId, eventoAgenda, status, serviceContext);
    }

    public List<EventoAgenda> search(long companyId, long groupId, int[] status, int start, int end,
            OrderByComparator orderByComparator) throws SystemException {
        return eventoAgendaPersistence.findByCG(companyId, groupId, status, start, end, orderByComparator);
    }

    public int searchCount(long companyId, long groupId, int[] status) throws SystemException {
        return eventoAgendaPersistence.findByCG(companyId, groupId, status).size();
    }

    public List<EventoAgenda> searchData(long companyId, long groupId, Date dataEvento, int[] status, int start,
            int end, OrderByComparator orderByComparator) throws SystemException {
        return eventoAgendaPersistence.findByCG_Data(companyId, groupId, dataEvento, status, start, end,
                orderByComparator);
    }

    public int searchDataCount(long companyId, long groupId, Date dataEvento, int[] status) throws SystemException {
        return eventoAgendaPersistence.findByCG_Data(companyId, groupId, dataEvento, status).size();
    }

    public List<EventoAgenda> searchEventoData(long companyId, long groupId, long eventoId, Date dataEvento,
            int[] status, int start, int end, OrderByComparator orderByComparator) throws SystemException {
        return eventoAgendaPersistence.findByCG_Evento_Data(companyId, groupId, eventoId, dataEvento, status, start,
                end, orderByComparator);
    }

    public int searchEventoDataCount(long companyId, long groupId, long eventoId, Date dataEvento, int[] status)
            throws SystemException {
        return eventoAgendaPersistence.findByCG_Evento_Data(companyId, groupId, eventoId, dataEvento, status)
                .size();
    }

    public List<EventoAgenda> searchEventoNome(long companyId, long groupId, String eventoNome, int[] status,
            int start, int end, OrderByComparator orderByComparator) throws SystemException {
        return eventoAgendaPersistence.findByCG_EventoNome(companyId, groupId, eventoNome, status, start, end,
                orderByComparator);
    }

    public int searchEventoNomeCount(long companyId, long groupId, String eventoNome, int[] status)
            throws SystemException {
        return eventoAgendaPersistence.findByCG_EventoNome(companyId, groupId, eventoNome, status).size();
    }

    public List<EventoAgenda> searchEventoID(long companyId, long groupId, long eventoId, int[] status, int start,
            int end, OrderByComparator orderByComparator) throws SystemException {
        return eventoAgendaPersistence.findByCG_EventoID(companyId, groupId, eventoId, status, start, end,
                orderByComparator);
    }

    public int searchEventoIDCount(long companyId, long groupId, long eventoId, int[] status)
            throws SystemException {
        return eventoAgendaPersistence.findByCG_EventoID(companyId, groupId, eventoId, status).size();
    }

    public List<EventoAgenda> searchLocalNome(long companyId, long groupId, String localNome, int[] status,
            int start, int end, OrderByComparator orderByComparator) throws SystemException {
        return eventoAgendaPersistence.findByCG_LocalNome(companyId, groupId, localNome, status, start, end,
                orderByComparator);
    }

    public int searchLocalNomeCount(long companyId, long groupId, String localNome, int[] status)
            throws SystemException {
        return eventoAgendaPersistence.findByCG_LocalNome(companyId, groupId, localNome, status).size();
    }

    public List<EventoAgenda> searchLocalID(long companyId, long groupId, long localId, int[] status, int start,
            int end, OrderByComparator orderByComparator) throws SystemException {
        return eventoAgendaPersistence.findByCG_LocalID(companyId, groupId, localId, status, start, end,
                orderByComparator);
    }

    public int searchLocalIDCount(long companyId, long groupId, long localId, int[] status) throws SystemException {
        return eventoAgendaPersistence.findByCG_LocalID(companyId, groupId, localId, status).size();
    }

    public List<EventoAgenda> searchResponsavelNome(long companyId, long groupId, String responsavelNome,
            int[] status, int start, int end, OrderByComparator orderByComparator) throws SystemException {
        return eventoAgendaPersistence.findByCG_ResponsavelNome(companyId, groupId, responsavelNome, status, start,
                end, orderByComparator);
    }

    public int searchResponsavelNomeCount(long companyId, long groupId, String responsavelNome, int[] status)
            throws SystemException {
        return eventoAgendaPersistence.findByCG_ResponsavelNome(companyId, groupId, responsavelNome, status).size();
    }

    private void updateEventoResponsavel(long eventoId, long modifiedUserId, long userResponsavelId)
            throws EventoNaoEncontradoException {
        try {
            Evento evento = eventoPersistence.fetchByPrimaryKey(eventoId);
            evento = EventoLocalServiceUtil.updateEventoResponsavel(evento.getEventoId(), modifiedUserId,
                    userResponsavelId);
        } catch (PortalException e) {
            throw new EventoNaoEncontradoException();
        } catch (SystemException e) {
            throw new EventoNaoEncontradoException();
        }
    }

    protected void validate(long eventoAgendaId, long eventoId, long localId, String sDataEvento,
            String sHoraEvento, String sDataHoje, long userId, int qtdeVagas, double versao)
            throws PortalException, SystemException {

        if (eventoId == 0) {
            throw new EventoObrigatorioException();
        }
        if (localId == 0) {
            throw new EventoLocalObrigatorioException();
        }
        if (Validator.isNull(sDataEvento)) {
            throw new EventoDataObrigatoriaException();
        }
        if (sDataEvento.length() != 10) {
            throw new EventoDataObrigatoriaException();
        }
        if ((Validator.isNotNull(sDataEvento)) && (!DateUtil.isValidDate(sDataEvento, "dd/MM/yyyy"))) {
            throw new EventoDataInvalidaException();
        }
        if (Validator.isNotNull(sDataEvento) && Validator.isNotNull(sDataHoje)) {
            if (DateUtil.stringToDate(sDataEvento).before(DateUtil.stringToDate(sDataHoje))) {
                throw new EventoDataMenorHojeException();
            }
        }
        if (qtdeVagas == 0) {
            throw new EventoQtdeVagasObrigatoriaException();
        }
        if (eventoAgendaId > 0) {
            EventoAgenda eventoAgenda = eventoAgendaPersistence.fetchByPrimaryKey(eventoAgendaId);
            if ((Validator.isNotNull(eventoAgenda)) && (eventoAgenda.getVersao() > versao)) {
                throw new EventoAgendaAlteradoOutroUsuarioException();
            }
        }
    }

    protected void validateInscricao(long eventoAgendaId, int qtdeVagas, int qtdeVagasPreenchida)
            throws PortalException, SystemException {

        if (qtdeVagasPreenchida > qtdeVagas) {
            throw new EventoQtdeVagasPreenchidaException();
        }
    }

    protected void validateResponsavel(long eventoAgendaId, long userResponsavelId, double versao)
            throws PortalException, SystemException {

        if (eventoAgendaId == 0) {
            throw new EventoAgendaObrigatorioException();
        }
        if (userResponsavelId == 0) {
            throw new EventoResponsavelObrigatorioException();
        }
        if (eventoAgendaId > 0) {
            EventoAgenda eventoAgenda = eventoAgendaPersistence.fetchByPrimaryKey(eventoAgendaId);
            if ((Validator.isNotNull(eventoAgenda)) && (eventoAgenda.getVersao() > versao)) {
                throw new EventoAgendaAlteradoOutroUsuarioException();
            }
        }
    }
}