blob: c2e5d54bf84f4230b6f8ed5874329ccfec628215 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License") + you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.openmeetings.data.calendar.daos;
import java.util.Date;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import org.apache.openmeetings.OpenmeetingsVariables;
import org.apache.openmeetings.data.user.dao.UsersDao;
import org.apache.openmeetings.persistence.beans.basic.OmTimeZone;
import org.apache.openmeetings.persistence.beans.calendar.MeetingMember;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
@Transactional
public class MeetingMemberDao {
private static final Logger log = Red5LoggerFactory.getLogger(
MeetingMemberDao.class, OpenmeetingsVariables.webAppRootKey);
@PersistenceContext
private EntityManager em;
@Autowired
private AppointmentDao appointmentDao;
@Autowired
private UsersDao usersDao;
public MeetingMember getMeetingMemberById(Long meetingMemberId) {
try {
log.debug("getMeetingMemberById: " + meetingMemberId);
String hql = "select app from MeetingMember app "
+ "WHERE app.deleted <> :deleted "
+ "AND app.meetingMemberId = :meetingMemberId";
TypedQuery<MeetingMember> query = em.createQuery(hql, MeetingMember.class);
query.setParameter("deleted", true);
query.setParameter("meetingMemberId", meetingMemberId);
MeetingMember meetingMember = null;
try {
meetingMember = query.getSingleResult();
} catch (NoResultException ex) {
}
return meetingMember;
} catch (Exception ex2) {
log.error("[getMeetingMemberById]: ", ex2);
}
return null;
}
public List<MeetingMember> getMeetingMembers() {
try {
String hql = "select app from MeetingMember app";
TypedQuery<MeetingMember> query = em.createQuery(hql, MeetingMember.class);
List<MeetingMember> meetingMembers = query.getResultList();
return meetingMembers;
} catch (Exception ex2) {
log.error("[getMeetingMembers]: ", ex2);
}
return null;
}
public List<MeetingMember> getMeetingMemberByAppointmentId(
Long appointmentId) {
try {
log.debug("getMeetingMemberByAppointmentId: " + appointmentId);
String hql = "select app from MeetingMember app "
+ "WHERE app.deleted <> :deleted "
+ "AND app.appointment.appointmentId = :appointmentId";
TypedQuery<MeetingMember> query = em.createQuery(hql, MeetingMember.class);
query.setParameter("deleted", true);
query.setParameter("appointmentId", appointmentId);
List<MeetingMember> listmeetingMember = query.getResultList();
return listmeetingMember;
} catch (Exception ex2) {
log.error("[getMeetingMemberByAppointmentId]: ", ex2);
}
return null;
}
/**
* Updating MeetingMember
*/
// -------------------------------------------------------------------------------
public MeetingMember updateMeetingMember(MeetingMember meetingMember) {
log.debug("");
if (meetingMember.getMeetingMemberId() > 0) {
try {
if (meetingMember.getMeetingMemberId() == null) {
em.persist(meetingMember);
} else {
if (!em.contains(meetingMember)) {
meetingMember = em.merge(meetingMember);
}
}
return meetingMember;
} catch (Exception ex2) {
log.error("[updateMeetingMember] ", ex2);
}
} else {
log.error("[updateUser] " + "Error: No MeetingMemberId given");
}
return null;
}
// -------------------------------------------------------------------------------
public Long updateMeetingMember(Long meetingMemberId, String firstname,
String lastname, String memberStatus, String appointmentStatus,
Long appointmentId, Long userid, String email, String phone) {
try {
MeetingMember gm = this.getMeetingMemberById(meetingMemberId);
/*
* if (gm == null) { log.debug("ALERT Object with ID: "+
* MeetingMemberId +" does not exist yet"); return null; }
*/
gm.setFirstname(firstname);
gm.setLastname(lastname);
// gm.setLanguageId(Languagemanagement.getInstance().getFieldLanguageById(languageId));
gm.setMemberStatus(memberStatus);
gm.setAppointmentStatus(appointmentStatus);
gm.setAppointment(appointmentDao.getAppointmentById(appointmentId));
gm.setDeleted(false);
gm.setUpdatetime(new Date());
gm.setUserid(usersDao.get(userid));
gm.setEmail(email);
gm.setPhone(phone);
if (gm.getMeetingMemberId() == null) {
em.persist(gm);
} else {
if (!em.contains(gm)) {
gm = em.merge(gm);
}
}
meetingMemberId = gm.getMeetingMemberId();
return meetingMemberId;
} catch (Exception ex2) {
log.error("[updateMeetingMember]: ", ex2);
}
return null;
}
public Long addMeetingMember(String firstname, String lastname,
String memberStatus, String appointmentStatus, Long appointmentId,
Long userid, String email, String phone, Boolean moderator, OmTimeZone omTimeZone,
Boolean isConnectedEvent) {
try {
MeetingMember gm = new MeetingMember();
gm.setFirstname(firstname);
gm.setLastname(lastname);
gm.setMemberStatus(memberStatus);
gm.setAppointmentStatus(appointmentStatus);
gm.setAppointment(appointmentDao.getAppointmentById(appointmentId));
gm.setUserid(userid == null ? null : usersDao.get(userid));
gm.setEmail(email);
gm.setPhone(phone);
gm.setStarttime(new Date());
gm.setDeleted(false);
gm.setInvitor(moderator);
gm.setIsConnectedEvent(isConnectedEvent);
gm.setOmTimeZone(omTimeZone);
gm = em.merge(gm);
Long group_member_id = gm.getMeetingMemberId();
return group_member_id;
} catch (Exception ex2) {
log.error("[addMeetingMember]: ", ex2);
}
return null;
}
public Long addMeetingMemberByObject(MeetingMember gm) {
try {
gm = em.merge(gm);
Long group_member_id = gm.getMeetingMemberId();
return group_member_id;
} catch (Exception ex2) {
log.error("[addMeetingMember]: ", ex2);
}
return null;
}
public Long deleteMeetingMember(Long meetingMemberId) {
log.debug("MeetingMemnerDAoImpl.deleteMeetingMember : "
+ meetingMemberId);
try {
MeetingMember gm = this.getMeetingMemberById(meetingMemberId);
log.debug("ac: " + gm);
if (gm == null) {
log.debug("Already deleted / Could not find: "
+ meetingMemberId);
return null;
}
gm.setUpdatetime(new Date());
gm.setDeleted(true);
if (gm.getMeetingMemberId() == null) {
em.persist(gm);
} else {
if (!em.contains(gm)) {
em.merge(gm);
}
}
return meetingMemberId;
} catch (Exception ex2) {
log.error("[deleteMeetingMember]: ", ex2);
}
return null;
}
}