package com.bizofficer.teacher.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.SubscriptionCourses;
import com.bizofficer.hibernate.repository.PgprepSchoolUsersRepository;


@Service
public class TeacherCoursesService{
	
	private static final Logger logger = Logger.getLogger(TeacherCoursesService.class);
	
    @Autowired
	EntityManagerFactory entityManagerFactory;
    
    @Autowired
	PgprepSchoolUsersRepository schoolUsrRepo;

	public Object execute(TeacherCoursesaRequests objBean) throws NotFoundException{
		TeacherCourseszResponse responseObj = new TeacherCourseszResponse();
		
		try {
			
			responseObj.setResponseTxt("failed");
			
			logger.info("*********************Website COURSES******************************");
			logger.info("WebCoursesService LoginEmailId >> " + objBean.getLoginEmailId() );
			logger.info("WebCoursesService Token >> " + objBean.getToken() );
			logger.info("WebCoursesService WebsiteId: "+objBean.getWebsiteId());
			
			if(objBean.getWebsiteId()==null) {
				objBean.setWebsiteId(1);
			}
			
			EntityManager entityManager = entityManagerFactory.createEntityManager();
			entityManager.getTransaction().begin();

			List<TeacherCoursesBean> dataList = new ArrayList<TeacherCoursesBean>();
			
			TeacherCoursesBean resObj = new TeacherCoursesBean();
			
			TypedQuery<SubscriptionCourses> query = (TypedQuery<SubscriptionCourses>) entityManager.createQuery("from "+SubscriptionCourses.class.getName()+" WHERE status=1 AND websiteId=:websiteId ", SubscriptionCourses.class);
			query.setParameter("websiteId", objBean.getWebsiteId() );
			query.setFirstResult(0);
			query.setMaxResults(200);
			List<?> resultList = query.getResultList();
			Iterator<?> iterator=resultList.iterator();
			while(iterator.hasNext()){
				SubscriptionCourses myObj = (SubscriptionCourses)iterator.next();
				
				resObj = new TeacherCoursesBean();
				resObj.setOrganisationId(myObj.getPaidOrganisationId());
				resObj.setCourseId(myObj.getCourseId());
				resObj.setCourseTitle(myObj.getCourseTitle());
				resObj.setCourseUrl(myObj.getCourseUrl());
				resObj.setCourseSubTitle(myObj.getCourseSubTitle());				
				dataList.add(resObj);
				
			}	
           
			if(dataList!=null) {
				logger.info("Total COURSES: "+dataList.size());
			}
			
            entityManager.getTransaction().commit();
			entityManager.close();
			
			responseObj.setList(dataList);
			
			responseObj.setResponseTxt("success");
			
		}catch(Exception e) {
			e.getStackTrace();			
		}
		
		
		return responseObj;
	}
	
	
	
	
}
