package com.bizofficer.teacher.schedule;

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.PgprepScheduleClassTest;


@Service
public class DeleteScheduleService{
	
	private static final Logger logger = Logger.getLogger(DeleteScheduleService.class);
	
	@Autowired
	EntityManagerFactory entityManagerFactory;
	
	public Object doExecute(Object obj) throws NotFoundException{
		BeanSchedule objBean = (BeanSchedule) obj; 	
		SaveScheduleResponseBean dataObj = new SaveScheduleResponseBean();
		
		try {
		
			dataObj.setResponseTxt("failed");
			
			if(objBean.getId()==null || objBean.getTopicTestId()==null) {
				return dataObj;
			}

			logger.info("Id: "+objBean.getId());
			logger.info("TopicTestId: "+objBean.getTopicTestId());
			
			EntityManager entityManager = entityManagerFactory.createEntityManager();
			entityManager.getTransaction().begin();
			
			/// DELETE IF EXIST INCOMPLETE TEST
			TypedQuery<PgprepScheduleClassTest> querya = (TypedQuery<PgprepScheduleClassTest>) entityManager.createQuery("from "+PgprepScheduleClassTest.class.getName()+" where id=:id AND topicTestId=:topicTestId ", PgprepScheduleClassTest.class);
			querya.setParameter("id", objBean.getId());
			querya.setParameter("topicTestId", objBean.getTopicTestId());
			querya.setFirstResult(0);
			querya.setMaxResults(1); 
			List<?> resultList = querya.getResultList();
			Iterator<?> iterator=resultList.iterator();	
			if(iterator.hasNext()){
				PgprepScheduleClassTest myObj = (PgprepScheduleClassTest)iterator.next();
				PgprepScheduleClassTest findObj = entityManager.find(PgprepScheduleClassTest.class, myObj.getId());
				if(findObj != null){					
					entityManager.remove(findObj);
					entityManager.getTransaction().commit();

					dataObj.setResponseTxt("OK");
					logger.info("**************************************************************");
					logger.info("Successfully Id: "+objBean.getId());
					logger.info("**************************************************************");
					
		        }
			}
			
			entityManager.close();
			
			
		}catch(Exception e) {
			e.getStackTrace();
		}
		
		return dataObj;
	}
	
	
	
}
