package javauction.service;

import javauction.model.BidEntity;
import javauction.util.HibernateUtil;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.CriteriaSpecification;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import java.util.List;


public class BidService {

    /**
     * @param uid userId
     * @return a list of auction-ids that user with uid has bided
     */
    public List getAllUserBids(long uid) {
        Session session = HibernateUtil.getSession();
        List bids = null;
        try {
            Criteria criteria = session.createCriteria( BidEntity.class );
            criteria.add(Restrictions.eq("bidderId", uid));
            criteria.setProjection( Projections.distinct( Projections.property( "auctionId" ) ));
            criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
            bids = criteria.list();
        } catch (HibernateException e) {
            e.printStackTrace();
        } finally {
            try { if (session != null) session.close(); } catch (Exception ignored) {}
        }
        return bids;
    }

}