package com.bizofficer.subscription.courses;



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 CourseDetailsService{
	
    @Autowired
	EntityManagerFactory entityManagerFactory;
	
	public Object execute(Object obj) throws NotFoundException{
		ACoursesBean objBean = (ACoursesBean) obj; 	
		CourseDetailsResponseBean resObj = new CourseDetailsResponseBean();
		
		try {
			
			if(objBean.getWebsiteId()==null || objBean.getCourseId()==null) {
				return resObj;
			}
			
			EntityManager entityManager = entityManagerFactory.createEntityManager();
			entityManager.getTransaction().begin();
			
			TypedQuery<SubscriptionCourses> query = (TypedQuery<SubscriptionCourses>) entityManager.createQuery("from "+SubscriptionCourses.class.getName()+" WHERE status=1 AND websiteId=:websiteId AND courseId=:courseId ", SubscriptionCourses.class);
			query.setParameter("websiteId", objBean.getWebsiteId() );
			query.setParameter("courseId", objBean.getCourseId() );			
			query.setFirstResult(0);
			query.setMaxResults(1);
			List<?> resultList = query.getResultList();
			Iterator<?> iterator=resultList.iterator();
			if(iterator.hasNext()){
				SubscriptionCourses myObj = (SubscriptionCourses)iterator.next();
				
				resObj.setOrganisationId(myObj.getFreeOrganisationId());
				resObj.setOrganisationName(myObj.getFreeOrganisationName());
				
				resObj.setCategoryId(myObj.getCategoryId());
				resObj.setCategoryName(myObj.getCategoryName());
				resObj.setCourseUrl(myObj.getCourseUrl());
				resObj.setCourseTitle(myObj.getCourseTitle());
				resObj.setCourseSubTitle(myObj.getCourseSubTitle());	
				
				resObj.setHeadingDescription(myObj.getHeadingDescription());	
				resObj.setCourseImage(myObj.getCourseImage());	
				resObj.setCourseBannerImage(myObj.getCourseBannerImage());	
				resObj.setRetailPrice(myObj.getRetailPrice());	
				resObj.setSalePrice(myObj.getSalePrice());	
				resObj.setDiscount(myObj.getDiscount());	

				resObj.setValidityNumber(myObj.getValidityNumber());	
				resObj.setValidityUnit(myObj.getValidityUnit());	
				resObj.setLevel(myObj.getLevel());	
				resObj.setTags(myObj.getTags());	
				resObj.setTopics(myObj.getTopics());	
				resObj.setKeywords(myObj.getKeywords());	

				resObj.setCourseDetail(myObj.getCourseDetail());	
				resObj.setMetaTags(myObj.getMetaTags());	
				resObj.setRating(myObj.getRating());	
				resObj.setNumberOfReview(myObj.getNumberOfReview());	
				resObj.setDisplayHome(myObj.getDisplayHome());	

				resObj.setStatus(myObj.getStatus());	
				resObj.setCreatedDateTime(myObj.getCreatedDateTime());	
				resObj.setCreatedBy(myObj.getCreatedBy());	
				resObj.setModifiedDateTime(myObj.getModifiedDateTime());	
				resObj.setModifiedBy(myObj.getModifiedBy());	
				
				
			}	
           
                        
            entityManager.getTransaction().commit();
			entityManager.close();
			
		}catch(Exception e) {
			e.getStackTrace();			
		}
		
		
		return resObj;
	}
	
	
	
	
}
