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.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.crossstore.ChangeSetPersister.NotFoundException;
import org.springframework.stereotype.Service;

import com.bizofficer.hibernate.entity.SubscriptionCourses;


@Service
public class CoursesService{
	
    @Autowired
	EntityManagerFactory entityManagerFactory;
	
	public List<?> execute(Object obj) throws NotFoundException{
		ACoursesBean objBean = (ACoursesBean) obj; 	
		List<CoursesResponseBean> dataList = new ArrayList<CoursesResponseBean>();
		
		try {
			
			if(objBean.getWebsiteId()==null || objBean.getCategoryId()==null) {
				return dataList;
			}
			
			if(objBean.getMaxRows()==null || objBean.getMaxRows()==0) {
				objBean.setMaxRows(100);
			}
			
			EntityManager entityManager = entityManagerFactory.createEntityManager();
			entityManager.getTransaction().begin();

			CoursesResponseBean resObj = new CoursesResponseBean();
			
			TypedQuery<SubscriptionCourses> query = (TypedQuery<SubscriptionCourses>) entityManager.createQuery("from "+SubscriptionCourses.class.getName()+" WHERE status=1 AND websiteId=:websiteId AND categoryId=:categoryId ", SubscriptionCourses.class);
			query.setParameter("websiteId", objBean.getWebsiteId() );
			query.setParameter("categoryId", objBean.getCategoryId() );			
			query.setFirstResult(0);
			query.setMaxResults(objBean.getMaxRows());
			List<?> resultList = query.getResultList();
			Iterator<?> iterator=resultList.iterator();
			while(iterator.hasNext()){
				SubscriptionCourses myObj = (SubscriptionCourses)iterator.next();
				
				resObj = new CoursesResponseBean();
				resObj.setCourseId(myObj.getCourseId());
				resObj.setCourseTitle(myObj.getCourseTitle());
				resObj.setCourseUrl(myObj.getCourseUrl());
				resObj.setCourseSubTitle(myObj.getCourseSubTitle());				
				dataList.add(resObj);
				
			}	
           
                        
            entityManager.getTransaction().commit();
			entityManager.close();
			
		}catch(Exception e) {
			e.getStackTrace();			
		}
		
		
		return dataList;
	}
	
	
	
	
}
