TavernerPOS - Source Code

Clone: 

git clone http://www.librarysmith.co.uk/tavernerPOS

 

package com.floreantpos.model.dao;

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

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import com.floreantpos.Messages;
import com.floreantpos.PosException;
import com.floreantpos.model.AttendenceHistory;
import com.floreantpos.model.Shift;
import com.floreantpos.model.Terminal;
import com.floreantpos.model.Ticket;
import com.floreantpos.model.User;
import com.floreantpos.report.PayrollReportData;

public class AttendenceHistoryDAO extends BaseAttendenceHistoryDAO {

	/**
	 * Default constructor.  Can be used in place of getInstance()
	 */
	public AttendenceHistoryDAO() {
	}

	public List<User> findNumberOfClockedInUserAtHour(Date fromDay, Date toDay, int hour, String userType, Terminal terminal) {
		Session session = null;

		ArrayList<User> users = new ArrayList<User>();

		try {
			session = getSession();
			Criteria criteria = session.createCriteria(getReferenceClass());
			criteria.add(Restrictions.ge(AttendenceHistory.PROP_CLOCK_IN_TIME, fromDay));
			criteria.add(Restrictions.le(AttendenceHistory.PROP_CLOCK_IN_TIME, toDay));
			criteria.add(Restrictions.le(AttendenceHistory.PROP_CLOCK_IN_HOUR, new Short((short) hour)));

			if (userType != null) {
				criteria.createAlias(AttendenceHistory.PROP_USER, "u"); //$NON-NLS-1$
				criteria.add(Restrictions.eq("u.type", userType)); //$NON-NLS-1$
			}
			if (terminal != null) {
				criteria.add(Restrictions.eq(Ticket.PROP_TERMINAL, terminal));
			}

			List list = criteria.list();
			for (Object object : list) {
				AttendenceHistory history = (AttendenceHistory) object;

				if (!history.isClockedOut()) {
					users.add(history.getUser());
				}
				else if (history.getClockOutHour() >= hour) {
					users.add(history.getUser());
				}
			}
			return users;
		} catch (Exception e) {
			throw new PosException(Messages.getString("AttendenceHistoryDAO.2"), e); //$NON-NLS-1$
		} finally {
			if (session != null) {
				closeSession(session);
			}
		}
	}
	public List<User> findNumberOfClockedInUserAtShift(Date fromDay, Date toDay, Shift shift, String userType, Terminal terminal) {
		Session session = null;

		ArrayList<User> users = new ArrayList<User>();

		try {
			session = getSession();
			Criteria criteria = session.createCriteria(getReferenceClass());
			criteria.add(Restrictions.ge(AttendenceHistory.PROP_CLOCK_IN_TIME, fromDay));
			criteria.add(Restrictions.le(AttendenceHistory.PROP_CLOCK_IN_TIME, toDay));
			criteria.add(Restrictions.le(AttendenceHistory.PROP_SHIFT, shift));

			if (userType != null) {
				criteria.createAlias(AttendenceHistory.PROP_USER, "u"); //$NON-NLS-1$
				criteria.add(Restrictions.eq("u.type", userType)); //$NON-NLS-1$
			}
			if (terminal != null) {
				criteria.add(Restrictions.eq(Ticket.PROP_TERMINAL, terminal));
			}

			List list = criteria.list();
			for (Object object : list) {
				AttendenceHistory history = (AttendenceHistory) object;

//				if (!history.isClockedOut()) {
//					users.add(history.getUser());
//				}
//				else if (history.getClockOutHour() >= hour) {
//					users.add(history.getUser());
//				}
				users.add(history.getUser());
			}
			return users;
		} catch (Exception e) {
			throw new PosException(Messages.getString("AttendenceHistoryDAO.5"), e); //$NON-NLS-1$
		} finally {
			if (session != null) {
				closeSession(session);
			}
		}
	}

	public AttendenceHistory findHistoryByClockedInTime(User user) {
		Session session = null;

		try {
			session = getSession();
			Criteria criteria = session.createCriteria(AttendenceHistory.class);
			criteria.add(Restrictions.eq(AttendenceHistory.PROP_CLOCK_IN_TIME, user.getLastClockInTime()));
			criteria.add(Restrictions.eq(AttendenceHistory.PROP_USER, user));

			return (AttendenceHistory) criteria.uniqueResult();
		} finally {
			if (session != null) {
				closeSession(session);
			}
		}
	}

	public List<PayrollReportData> findPayroll(Date from, Date to) {
		Session session = null;

		ArrayList<PayrollReportData> list = new ArrayList<PayrollReportData>();

		try {
			session = getSession();
			Criteria criteria = session.createCriteria(AttendenceHistory.class);
			criteria.add(Restrictions.ge(AttendenceHistory.PROP_CLOCK_IN_TIME, from));
			criteria.add(Restrictions.le(AttendenceHistory.PROP_CLOCK_OUT_TIME, to));
			criteria.addOrder(Order.asc(AttendenceHistory.PROP_USER));
			List list2 = criteria.list();

			for (Iterator iterator = list2.iterator(); iterator.hasNext();) {
				AttendenceHistory history = (AttendenceHistory) iterator.next();
				PayrollReportData data = new PayrollReportData();
				data.setFrom(history.getClockInTime());
				data.setTo(history.getClockOutTime());
				data.setDate(history.getClockInTime());
				data.setUser(history.getUser());
				data.calculate();

				list.add(data);
			}

			return list;
		} catch (Exception e) {
			throw new PosException(Messages.getString("AttendenceHistoryDAO.6"), e); //$NON-NLS-1$
		} finally {
			if (session != null) {
				session.close();
			}
		}
	}
}

Add comment
These comments are moderated so so won't be published until reviewed.