log.debug("addInvitationIcalLink");
try {
if (AuthLevelmanagement.getInstance().checkUserLevel(user_level)){
Invitations invitation = new Invitations();
invitation.setIsPasswordProtected(isPasswordProtected);
if (isPasswordProtected){
invitation.setInvitationpass(ManageCryptStyle.getInstance().getInstanceOfCrypt().createPassPhrase(invitationpass));
}
invitation.setInvitationWasUsed(false);
//valid period of Invitation
if (valid == 1) {
//endless
invitation.setIsValidByTime(false);
invitation.setCanBeUsedOnlyOneTime(false);
} else if (valid == 2){
//period
invitation.setIsValidByTime(true);
invitation.setCanBeUsedOnlyOneTime(false);
//This has to be in the Server's time cause otherwise it is not
//in the correct time-zone for the comparison later on if the invitation is still valid
// and subtract 5 minutes for users to access early
// Calendar cal = Calendar.getInstance();
// int offset = cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET);
//
// log.debug("addAppointment offset :: "+offset);
//
// Date appointmentstart = new Date(gmtTimeStart.getTime() + offset);
// Date appointmentend = new Date(gmtTimeEnd.getTime() + offset);
//
// Date gmtTimeStartShifted = new Date(appointmentstart.getTime() - ( 5 * 60 * 1000 ) );
Date gmtTimeStartShifted = new Date(gmtTimeStart.getTime() - ( 5 * 60 * 1000 ) );
invitation.setValidFrom(gmtTimeStartShifted);
invitation.setValidTo(gmtTimeEnd);
} else {
//one-time
invitation.setIsValidByTime(false);
invitation.setCanBeUsedOnlyOneTime(true);
invitation.setInvitationWasUsed(false);
}
invitation.setDeleted("false");
Users us = UsersDaoImpl.getInstance().getUser(createdBy);
String hashRaw = "InvitationHash"+(System.currentTimeMillis());
log.debug("addInvitationIcalLink : rawHash = " + hashRaw);
invitation.setHash(MD5.do_checksum(hashRaw));
invitation.setInvitedBy(us);
invitation.setBaseUrl(baseurl);
invitation.setInvitedname(username);
invitation.setInvitedEMail(email);
invitation.setRoom(Roommanagement.getInstance().getRoomById(rooms_id));
invitation.setConferencedomain(conferencedomain);
invitation.setStarttime(new Date());
invitation.setAppointmentId(appointmentId);
Object idf = PersistenceSessionUtil.createSession();
EntityManager session = PersistenceSessionUtil.getSession();
EntityTransaction tx = session.getTransaction();
tx.begin();
invitation = session.merge(invitation);
session.flush();
long invitationId = invitation.getInvitations_id();
tx.commit();
PersistenceSessionUtil.closeSession(idf);
if (invitationId > 0) {
this.sendInvitionIcalLink(username, message, baseurl,
email, subject, invitation.getHash(),
appointMentId, createdBy, invitor, language_id,
validFrom, validTo, jNameTimeZone);
return invitationId;
}
}