package com.bizofficer.teacher.classes;



import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;

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.PgprepSchoolClasses;
import com.bizofficer.hibernate.repository.PgprepSchoolClassesRepository;
import com.bizofficer.hibernate.repository.PgprepSchoolUsersRepository;


@Service
public class ClassesCreationTeacherService{
	
	private static final Logger logger = Logger.getLogger(ClassesCreationTeacherService.class);
	
	@Autowired
	EntityManagerFactory entityManagerFactory;
	
	@Autowired
	PgprepSchoolUsersRepository adminRepo;
	
	@Autowired
	PgprepSchoolClassesRepository clsRepo;
	
	public Object execute(Object obj) throws NotFoundException{
		ClassesRequest objBean = (ClassesRequest) obj;
		ClassesTeacherResponse responseListObj = new ClassesTeacherResponse();
		
		try {
			
			responseListObj.setResponseTxt("failed");
			
			logger.info("SchoolId >> " + objBean.getSchoolId() );
			logger.info("SchoolName >> " + objBean.getSchoolName() );
			logger.info("ClassName >> " + objBean.getClassName() );
			logger.info("ClassName >> " + objBean.getClassName() );
			logger.info("Course Id >> " + objBean.getCourseId() );
			logger.info("Course Title >> " + objBean.getCourseTitle() );
			logger.info("Organisation Id >> " + objBean.getOrganisationId() );
			

			PgprepSchoolClasses clssObj = clsRepo.getIdBySchoolIdAndClassName(objBean.getSchoolId(), objBean.getClassName());			
			if(clssObj!=null && clssObj.getId()>0) {
				logger.info("Existing Class >> " + objBean.getClassName() );
				responseListObj.setResponseTxt("AlreadyExistsError");
				return responseListObj;
			}

				logger.info("New Class Name >> " + objBean.getClassName() );
			
				EntityManager entityManager = entityManagerFactory.createEntityManager();
				entityManager.getTransaction().begin();
			
				PgprepSchoolClasses saveObj = new PgprepSchoolClasses();
				
				saveObj.setSchoolId(objBean.getSchoolId());
				saveObj.setSchoolName(objBean.getSchoolName());
				saveObj.setClassName(objBean.getClassName());
				saveObj.setCourseId(objBean.getCourseId());
				saveObj.setCourseTitle(objBean.getCourseTitle());
				saveObj.setOrganisationId(objBean.getOrganisationId());
				clsRepo.save(saveObj);
	
				responseListObj.setResponseTxt("success");
				
				entityManager.getTransaction().commit();
				entityManager.close();
		        
		}catch(Exception e) {
			e.getStackTrace();
		}
		
		
		return responseListObj;
	}
	

	
	

	
	
}
