package com.book.healthapp.repositories;

import java.util.List;

import javax.persistence.TypedQuery;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import com.book.healthapp.controllers.RxController;
import com.book.healthapp.domain.Doctor;
import com.book.healthapp.domain.Rx;

@Repository
@Transactional
public class RxDAOImpl implements RxDAO {
	
	final static Logger logger = LoggerFactory.getLogger(RxDAOImpl.class);

	private SessionFactory sessionFactory;
    
	@Autowired 
	public RxDAOImpl(SessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}
	
	@Override
	public List<Rx> findByDoctorId(int doctorId) {
		Session session = this.sessionFactory.getCurrentSession();
        TypedQuery<Rx> query = session.getNamedQuery("findByDoctorId");  
        query.setParameter("id", doctorId);
        List<Rx> rxList = query.getResultList();
		return rxList;
	}

	@Override
	public List<Rx> findByUserId(int userId) {
		Session session = this.sessionFactory.getCurrentSession();
        TypedQuery<Rx> query = session.getNamedQuery("findByUserId");  
        query.setParameter("id", userId);
        List<Rx> rxList = query.getResultList();
		return rxList;
	}

	@Override
	public Rx save(Rx rx) {
		Session session = this.sessionFactory.openSession();
		session.save(rx);
		session.close();
		return rx;
	}
	

}