package com.bizofficer.parents.web;



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.PgprepParentsChildren;
import com.bizofficer.hibernate.repository.PgprepParentsChildrenRepository;


@Service
public class ParentStudentRemoveService{
	
	private static final Logger logger = Logger.getLogger(ParentStudentRemoveService.class);
	
	@Autowired
	EntityManagerFactory entityManagerFactory;
	
	@Autowired
	PgprepParentsChildrenRepository stRepo;
	
	public Object execute(Object obj) throws NotFoundException{
		ParentsRequestBean objBean = (ParentsRequestBean) obj;
		ParentsResponse responseObj = new ParentsResponse();
		
		try {
			
			responseObj.setResponseTxt("failed");
			
			logger.info("id >> " + objBean.getAutoId() );
			logger.info("ParentId >> " + objBean.getParentId() );
			
			if(objBean.getAutoId()==null || objBean.getParentId()==null) {
				return responseObj;
			}
			
				EntityManager entityManager = entityManagerFactory.createEntityManager();
				entityManager.getTransaction().begin();
				
				TypedQuery<PgprepParentsChildren> query = (TypedQuery<PgprepParentsChildren>) entityManager.createQuery("from "+PgprepParentsChildren.class.getName()+" WHERE id=:id AND parentId=:parentId ", PgprepParentsChildren.class);
				query.setParameter("id", objBean.getAutoId());
				query.setParameter("parentId", objBean.getParentId());
				List<?> resultList = query.getResultList();
				Iterator<?> iterator=resultList.iterator();	
				if(iterator.hasNext()){
					PgprepParentsChildren myObj = (PgprepParentsChildren)iterator.next();		
				
					stRepo.deleteById(myObj.getId());
					
					responseObj.setResponseTxt("success");
					
				}
				
				entityManager.getTransaction().commit();
				entityManager.close();
		        
		}catch(Exception e) {
			e.getStackTrace();
		}
		
		
		return responseObj;
	}
	

	
	

	
	
}
