Package appointment.business

Source Code of appointment.business.IAppointmentManagement

package appointment.business;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import appointment.objects.Appointment;
import appointment.objects.AppointmentState;
import appointment.objects.User;

@Stateless
public class IAppointmentManagement implements IAppointmentManagementLocal {

  @PersistenceContext
  EntityManager entityManager;

  public List<Appointment> getOverlappedAppointments(User user,
      Date startTime, Date endTime, AppointmentState state) {
 
    List<Appointment> overlappedAppointments = new ArrayList<Appointment>();
   
    long newStart = startTime.getTime();
    long newEnd = endTime.getTime();
   
    for (Appointment appointment : user.getAppointments()) {
     
      long appStart = appointment.getStartTime().getTime();
      long appEnd = appointment.getEndTime().getTime();
     
      boolean overlapped =
      ((newStart < appStart) && (newStart < appEnd) && (newEnd > appStart)&& (newEnd < appEnd))||
       ((newStart > appEnd) && (newStart < appEnd) && (newEnd > appStart)&& (newEnd < appEnd))||
       ((newStart > appStart) && (newStart < appEnd) && (newEnd > appStart)&& (newEnd > appEnd));
      
      if ((overlapped && !hasFreeState(appointment.getStatus()) && !hasFreeState(state)) && (appointment.getIsPrivate())) {
        overlappedAppointments.add(appointment);
      }
     
    }
   
    return overlappedAppointments;
  }

  public boolean addAppointment(User user, Date startTime, Date endTime,
      String title, String notes, AppointmentState status, Boolean visible) {

    Appointment appointment = new Appointment(startTime,
        endTime, title, notes, status, visible);

    return addAppointmentToUser(appointment, user);
   
    // Appointment should be added
//    if (addAppointmentToUser(appointment, user))
//    {
//      return getAppointment(appointment.getId()).getUsers().contains(user);
//     
////      return entityManager.find(User.class, user.getUsername())
////          .getAppointments().contains(appointment);
//    }
  }
 
  private boolean addAppointmentToUser(Appointment appointment, User user)
  {
    if (appointment.addUserToAppointment(user)) {
     
      try {
        entityManager.persist(appointment);
      } catch (Exception e) {
        System.out.println(e.toString());
      }
     
      // update user relations
      user.getAppointments().add(appointment);
     
      try {
        user = entityManager.merge(user);
      } catch (Exception e) {
        System.out.println(e.toString());
      }
     
      return true;
    }
   
    return false;
  }

  @SuppressWarnings("unchecked")
  public List<Appointment> getAppointments(User user) {
    List<Appointment> all = entityManager.createQuery(
        "SELECT u.appointments FROM User u WHERE u.id = '"
            + user.getUsername() + "'").getResultList();

    return all;
  }

  @SuppressWarnings("unchecked")
  public List<Appointment> getAppointments(User user, Date startDate,
      Date endDate) {

    long start = startDate.getTime();
    long end = endDate.getTime();

    List<Appointment> all = entityManager.createQuery(
        "SELECT a FROM Appointment a " + " WHERE '"
            + user.getUsername()
            + "' IN (SELECT u.username FROM a.users u )"
            + " AND (( a.startTime > " + start
            + " AND a.startTime < " + end + " ) OR ( a.endTime > "
            + start + " AND a.endTime < " + end + " )) ")
        .getResultList();

    return all;

  }

  @SuppressWarnings("unchecked")
  public Appointment getAppointment(Long id) {

    List<Appointment> resList = entityManager.createQuery(
        "SELECT a FROM Appointment a WHERE a.id = '" + id.toString()
            + "'").getResultList();

    if (resList.size() > 0)
      return resList.get(0);
    else
      return null;

  }

  public List<Long> getIdList(List<Appointment> appointments) {

    List<Long> appointmentLongList = new ArrayList<Long>();

    for (Appointment appointment : appointments) {
      appointmentLongList.add(appointment.getId());
    }
    return appointmentLongList;

  }
 
  public boolean removeAppointments(User user) {
    for (Appointment appointment : user.getAppointments()) {
      entityManager.remove(appointment);
    }
   
    return false;
  }
 
  private boolean hasFreeState(AppointmentState state)
  {
    return state.equals(AppointmentState.FREE);
  }
}
TOP

Related Classes of appointment.business.IAppointmentManagement

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.