package com.bizofficer.subscription.courses;


import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.TypedQuery;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.crossstore.ChangeSetPersister.NotFoundException;
import org.springframework.stereotype.Service;

import com.bizofficer.hibernate.entity.PgprepStudentCourses;

@Service
public class MySelectedCourseService{
	
	private static final Logger logger = Logger.getLogger(MySelectedCourseService.class);
	
    @Autowired
	EntityManagerFactory entityManagerFactory;
    
	public Object execute(Object obj) throws NotFoundException{
		ACoursesBean objBean = (ACoursesBean) obj; 	
		MySelectedCoursesRespoBean respObj = new MySelectedCoursesRespoBean();
		
		try {
			
			respObj.setResponseTxt("failed");
			
			logger.info("StudentId: "+objBean.getStudentId() );
			
			if(objBean.getStudentId()==null) {
				return respObj;
			}
			
			EntityManager entityManager = entityManagerFactory.createEntityManager();
			entityManager.getTransaction().begin();
			
			List<Integer> myCourses = new ArrayList<Integer>();
			
			TypedQuery<PgprepStudentCourses> query = (TypedQuery<PgprepStudentCourses>) entityManager.createQuery("from "+PgprepStudentCourses.class.getName()+" WHERE studentId=:studentId ", PgprepStudentCourses.class);
			query.setParameter("studentId", objBean.getStudentId() );
			query.setFirstResult(0);
			query.setMaxResults(100);
			List<?> resultList = query.getResultList();
			Iterator<?> iterator=resultList.iterator();
			while(iterator.hasNext()){
				PgprepStudentCourses myCors = (PgprepStudentCourses)iterator.next();
				myCourses.add(myCors.getCourseId());
			}
                
            if(myCourses!=null && myCourses.size()>0) { 
               respObj.setResponseTxt("success");
               respObj.setCourses(myCourses);
            }
               
            entityManager.getTransaction().commit();
			entityManager.close();
			
		}catch(Exception e) {
			e.getStackTrace();			
		}
		
		
		return respObj;
	}
	
	
	
	
}
