Subversion Repositories bacoAlunos

Rev

Rev 1524 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.services.events;

import jomm.utils.FilesUtils;
import org.apache.log4j.Logger;
import org.apache.struts.upload.FormFile;
import pt.estgp.estgweb.domain.EventClass;
import pt.estgp.estgweb.domain.EventFormacoes;
import pt.estgp.estgweb.domain.EventGeneric;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.filters.chains.ResourceAccessControlEnum;
import pt.estgp.estgweb.services.data.RepositoryService;
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException;
import pt.utl.ist.berserk.logic.serviceManager.IService;

import java.io.IOException;

/**
 * Created by jorgemachado on 04/10/16.
 */

public class EventsService implements IService
{
    private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(EventsService.class);

    public void save(EventClass eventClass, UserSession userSession)
    {
        if(eventClass.getId() <= 0)
        {
            DaoFactory.getEventClassDaoImpl().save(eventClass);
        }
        else
        {
            EventClass persistent = DaoFactory.getEventClassDaoImpl().load(eventClass.getId());
            persistent.setName(eventClass.getName());
            persistent.setDescription(eventClass.getDescription());
            persistent.setManagersRole(eventClass.getManagersRole());
            persistent.setEventosFormacoes(eventClass.isEventosFormacoes());
            persistent.setEventosGenericos(eventClass.isEventosGenericos());
        }
    }

    public void delete(long eventClassId, UserSession userSession) throws NotAuthorizedException {

        EventClass persistent = DaoFactory.getEventClassDaoImpl().load(eventClassId);
        if(persistent.getEvents().size() > 0)
        {
            throw new NotAuthorizedException("Existem eventos nesta classe");
        }
        else
        {
            DaoFactory.getEventClassDaoImpl().delete(persistent);
        }
    }

    public void saveEvent(long eventClassId,EventGeneric event, FormFile flyer, UserSession userSession)
    {
        1.5.0/docs/api/java/lang/System.html">System.out.println("Serviço de gravação de eventos OK");
        1.5.0/docs/api/java/lang/System.html">System.out.println(event.getDataAberturaFormulario());
        1.5.0/docs/api/java/lang/System.html">System.out.println(event.getDataFechoFormulario());
        1.5.0/docs/api/java/lang/System.html">System.out.println(event.getDataPublicacao());
        1.5.0/docs/api/java/lang/System.html">System.out.println(event.getDataInicio());
        EventClass eventClass;
        EventGeneric eventPersistent;
        if(event.getId() <= 0)
        {
            eventClass = DaoFactory.getEventClassDaoImpl().load(eventClassId);
            event.setEventClass(eventClass);
            event.setOwner(userSession.getUser());
            if(event instanceof EventFormacoes)
            {
                DaoFactory.getEventFormacoesDaoImpl().save((EventFormacoes) event);
            }
            else if(event instanceof  EventGeneric)
            {
                DaoFactory.getEventGenericDaoImpl().save(event);
            }
            updateFlyer(event, flyer, userSession);
            eventPersistent = event;
        }
        else
        {
            eventPersistent = DaoFactory.getEventGenericDaoImpl().load(event.getId());
            eventClass = eventPersistent.getEventClass();
            updateEventFields(event,eventPersistent,flyer,userSession);
        }
        //todo falta docentes apenas depois de estar o evento gravado por razões de já haver unidade
        logger.info("Propiedades do Evento Gravadas e Flyer actualizado, vamos iniciar operações de actividade curricular");
        //EVENTO SALVO

    }

    private void updateEventFields(EventGeneric event, EventGeneric eventPersistent,FormFile flyer,UserSession userSession)
    {
        eventPersistent.setAtivo(event.isAtivo());

        //CONTROLO
        eventPersistent.setDataPublicacao(event.getDataPublicacao());
        eventPersistent.setDataAberturaFormulario(event.getDataAberturaFormulario());
        eventPersistent.setDataFechoFormulario(event.getDataFechoFormulario());
        eventPersistent.setCategory(event.getCategory());
        eventPersistent.setSubCategory(event.getSubCategory());
        eventPersistent.setRegisteredUsersOnly(event.isRegisteredUsersOnly());


        eventPersistent.setTitle(event.getTitle());
        eventPersistent.setDescription(event.getDescription());
        eventPersistent.setObservacoes(event.getObservacoes());
        eventPersistent.setLocais(event.getLocais());
        eventPersistent.setDataInicio(event.getDataInicio());
        eventPersistent.setPreInformation(event.getPreInformation());
        eventPersistent.setAfterRegisterInformation(event.getAfterRegisterInformation());

        updateFlyer(eventPersistent, flyer, userSession);


        eventPersistent.setDataNascimento(event.isDataNascimento());
        eventPersistent.setEmpresa(event.isEmpresa());
        eventPersistent.setEscolaridade(event.isEscolaridade());
        eventPersistent.setProfissao(event.isProfissao());
        eventPersistent.setSexo(event.isSexo());
        eventPersistent.setTelefone1(event.isTelefone1());
        eventPersistent.setTelefone2(event.isTelefone2());
        eventPersistent.setPais(event.isPais());
        eventPersistent.setMorada(event.isMorada());
        eventPersistent.setNif(event.isNif());
        eventPersistent.setBi(event.isBi());

        if(event instanceof EventFormacoes)
        {
            EventFormacoes eventFormacoes = (EventFormacoes) event;
            EventFormacoes eventPersistentFormacoes = (EventFormacoes) eventPersistent;

            eventPersistentFormacoes.setReferencia(eventFormacoes.getReferencia());
            eventPersistentFormacoes.setUnidadeOrganica(eventFormacoes.getUnidadeOrganica());
            eventPersistentFormacoes.setLocalDeRealizacao(eventFormacoes.getLocalDeRealizacao());
            eventPersistentFormacoes.setDominio(eventFormacoes.getDominio());
            eventPersistentFormacoes.setOutroDominio(eventFormacoes.getOutroDominio());
            eventPersistentFormacoes.setDestinatarios(eventFormacoes.getDestinatarios());
            eventPersistentFormacoes.setConteudos(eventFormacoes.getConteudos());

            //CONTROLO FINANCEIRO
            eventPersistentFormacoes.setStatus(eventFormacoes.getStatus());
            eventPersistentFormacoes.setNumeroVagas(eventFormacoes.getNumeroVagas());
            eventPersistentFormacoes.setDuracaoHoras(eventFormacoes.getDuracaoHoras());
            eventPersistentFormacoes.setEcts(eventFormacoes.getEcts());
            eventPersistentFormacoes.setDiasDuracao(eventFormacoes.getDiasDuracao());
            eventPersistentFormacoes.setCustoFormacao(eventFormacoes.getCustoFormacao());
            eventPersistentFormacoes.setPrecoFormando(eventFormacoes.getPrecoFormando());
            eventPersistentFormacoes.setPercentagemMinimaLucro(eventFormacoes.getPercentagemMinimaLucro());
        }
    }

    private void updateFlyer(EventGeneric eventPersistent, FormFile flyer, UserSession userSession) {
        if(flyer != null && flyer.getFileSize() > 0)
        {
            RepositoryService repositoryService = new RepositoryService();
            if(eventPersistent.getFlyerRepositoryStream() != null && eventPersistent.getFlyerRepositoryStream().trim().length() > 0)
            {
                try {
                    repositoryService.updateRepositoryFile(
                            eventPersistent.getFlyerRepositoryStream(),
                            flyer.getInputStream(),
                            flyer.getContentType(),
                            FilesUtils.getExtension(flyer.getFileName()),
                            flyer.getFileSize(),
                            flyer.getFileName(),
                            "Flyer de formacao " + eventPersistent.getTitle(),
                            ResourceAccessControlEnum.publicDomain
                            );
                } catch (1.5.0/docs/api/java/io/IOException.html">IOException e) {
                    logger.error(e,e);
                }
            }
            else
            {
                try {
                   1.5.0/docs/api/java/lang/String.html">String repositoryIdentifier = repositoryService.storeRepositoryFile(
                            flyer.getInputStream(),
                            flyer.getContentType(),
                            FilesUtils.getExtension(flyer.getFileName()),
                            flyer.getFileSize(),
                            flyer.getFileName(),
                            "Flyer de formacao " + eventPersistent.getTitle(),
                            ResourceAccessControlEnum.publicDomain,
                           null, userSession
                    );
                    eventPersistent.setFlyerRepositoryStream(repositoryIdentifier);
                } catch (1.5.0/docs/api/java/io/IOException.html">IOException e) {
                    logger.error(e,e);
                }
            }
        }
    }
}