package fi.arcusys.koku.common.service;
import java.util.List;
import java.util.Set;
import fi.arcusys.koku.common.service.datamodel.Appointment;
import fi.arcusys.koku.common.service.datamodel.AppointmentResponse;
import fi.arcusys.koku.common.service.datamodel.AppointmentStatus;
import fi.arcusys.koku.common.service.datamodel.User;
import fi.arcusys.koku.common.service.dto.AppointmentDTOCriteria;
/**
* DAO interface for CRUD operations with 'Appointment' Entity
*
* @author Dmitry Kudinov (dmitry.kudinov@arcusys.fi)
* Jul 21, 2011
*/
public interface AppointmentDAO extends AbstractEntityDAO<Appointment>{
@Override
Appointment create(final Appointment entity);
/**
* @param string
* @param created
* @return
*/
List<Appointment> getUserAppointments(final User user, final Set<AppointmentStatus> statuses);
List<Appointment> getUserAppointments(final User user, final Set<AppointmentStatus> statuses, final int startNum, final int maxNum);
/**
* @param next
* @return
*/
List<Appointment> getAssignedAppointments(final User user);
List<Appointment> getAssignedAppointments(final User user, final int startNum, final int maxNum);
/**
* @param orCreateUser
* @param statuses
* @return
*/
Long getTotalAppointments(final User user, final Set<AppointmentStatus> statuses);
/**
* @param orCreateUser
* @return
*/
Long getTotalAssignedAppointments(final User user);
/**
* @param orCreateUser
* @return
*/
List<Appointment> getProcessedAppointments(final User user, final int startNum, final int maxResults, final AppointmentDTOCriteria criteria);
/**
* @param orCreateUser
* @return
*/
Long getTotalProcessedAppointments(User user, final AppointmentDTOCriteria criteria);
/**
* @param orCreateUser
* @param startNum
* @param i
* @return
*/
List<Appointment> getCreatedAppointments(User user, int startNum, int maxResults, final AppointmentDTOCriteria criteria);
/**
* @param orCreateUser
* @return
*/
Long getTotalCreatedAppointments(User user, final AppointmentDTOCriteria criteria);
/**
* @param orCreateUser
* @param startNum
* @param i
* @return
*/
List<AppointmentResponse> getAppointmentResponses(User user, int startNum, int maxResults);
/**
* @param orCreateUser
* @return
*/
Long getTotalRespondedAppointments(User user);
/**
* @param orCreateUser
* @param startNum
* @param i
* @return
*/
List<AppointmentResponse> getOldAppointmentResponses(User user, int startNum, int maxResults);
/**
* @param orCreateUser
* @return
*/
Long getTotalOldRespondedAppointments(User user);
}