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
);
}
}
}
}
}