package com.bizofficer.teacher.scheduleliveclass;

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.PgprepLiveClasses;
import com.bizofficer.hibernate.entity.PgprepTeachers;
import com.bizofficer.hibernate.repository.PgprepTeachersRepository;


@Service
public class DeleteLiveClassTeachService{
	
	private static final Logger logger = Logger.getLogger(DeleteLiveClassTeachService.class);
	
	@Autowired
	EntityManagerFactory entityManagerFactory;
	
	@Autowired
	PgprepTeachersRepository teachRepo;
	
	public Object doExecute(Object obj) throws NotFoundException{
		BeanLiveClassTeach objBean = (BeanLiveClassTeach) obj; 	
		LiveClassTeachResponseBean responseObj = new LiveClassTeachResponseBean();
		
		try {
		
			responseObj.setResponseTxt("failed");
			
			logger.info( "schoolId >>> " +  objBean.getSchoolId() );
			logger.info( "LoginId >>> " +  objBean.getLoginId() );
			logger.info( "Token >>> " +  objBean.getToken() );
		
			if(objBean.getId()==null || objBean.getSchoolId()==null || objBean.getLoginId()==null || objBean.getToken()==null) {
				return responseObj;
			}
			
			PgprepTeachers teachObj = (PgprepTeachers) teachRepo.getIdBySchoolIdAndLoginIdAndLoginToken(objBean.getSchoolId(), objBean.getLoginId(), objBean.getToken());
			if(teachObj==null) {
				return responseObj;
			}

			logger.info("Verified ID: " + teachObj.getId() );
			

			EntityManager entityManager = entityManagerFactory.createEntityManager();
			entityManager.getTransaction().begin();
			
			/// DELETE IF EXIST INCOMPLETE TEST 
			TypedQuery<PgprepLiveClasses> querya = (TypedQuery<PgprepLiveClasses>) entityManager.createQuery("from "+PgprepLiveClasses.class.getName()+" where id=:id AND teacherId=:teacherId ", PgprepLiveClasses.class);
			querya.setParameter("id", objBean.getId());
			querya.setParameter("teacherId", teachObj.getId());
			querya.setFirstResult(0);
			querya.setMaxResults(1); 
			List<?> resultList = querya.getResultList();
			Iterator<?> iterator=resultList.iterator();	
			if(iterator.hasNext()){
				PgprepLiveClasses myObj = (PgprepLiveClasses)iterator.next();
				
				PgprepLiveClasses findObj = entityManager.find(PgprepLiveClasses.class, myObj.getId());
				if(findObj != null){					
					entityManager.remove(findObj);
					entityManager.getTransaction().commit();

					responseObj.setResponseTxt("success");
					
					logger.info("**************************************************************");
					logger.info("Successfully Id: "+objBean.getId());
					logger.info("**************************************************************");
					
		        }
			}
			
			entityManager.close();
			
			
		}catch(Exception e) {
			e.getStackTrace();
		}
		
		return responseObj;
	}
	
	
	
}
