package com.bizofficer.school.teachers;



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.PgprepTeachers;
import com.bizofficer.hibernate.repository.PgprepSchoolUsersRepository;
import com.bizofficer.hibernate.repository.PgprepTeachersRepository;
import com.bizofficer.util.system.General;


@Service
public class TeachCreationService{
	
	private static final Logger logger = Logger.getLogger(TeachCreationService.class);
	
	@Autowired
	EntityManagerFactory entityManagerFactory;
	
	@Autowired
	PgprepSchoolUsersRepository adminRepo;
	
	@Autowired
	PgprepTeachersRepository techRepo;
	
	public Object execute(Object obj) throws NotFoundException{
		TeachBean objBean = (TeachBean) obj;
		TeacherSchoolResponseBean responseObj = new TeacherSchoolResponseBean();
		
		try {
			
			responseObj.setResponseTxt("failed");
			
			logger.info("SchoolName >> " + objBean.getSchoolName() );
			logger.info("SchoolId >> " + objBean.getSchoolId() );
			logger.info("LoginId >> " + objBean.getLoginId() );
			logger.info("EmailId >> " + objBean.getEmailId() );
			logger.info("TeacherName >> " + objBean.getTeacherName() );			
			logger.info("AccountStatus >> " + objBean.getAccountStatus() );
			logger.info("Role >> " + objBean.getRole() );
			
			if(objBean.getLoginId()==null || objBean.getTeacherName()==null) {
				return responseObj;
			}
			
			
			PgprepTeachers teachObj = techRepo.getIdByLoginId(objBean.getLoginId());			
			if(teachObj!=null && teachObj.getId()>0) {
				logger.info("Existing Email >> " + teachObj.getEmailId() );
				responseObj.setResponseTxt("AlreadyExistsError");
				return responseObj;
			}

				logger.info("No Existing LoginId >> " + objBean.getLoginId() );
			
				EntityManager entityManager = entityManagerFactory.createEntityManager();
				entityManager.getTransaction().begin();
				General gen = new General();
			
				PgprepTeachers saveObj = new PgprepTeachers();
				
				saveObj.setSchoolId(objBean.getSchoolId());
				saveObj.setSchoolName(objBean.getSchoolName());
				saveObj.setLoginId(objBean.getLoginId());
				
				if(objBean.getNewPassword()!=null && objBean.getNewPassword().length()>2 ) {
					saveObj.setPassword(gen.getMD5Hashing(objBean.getNewPassword()));
				}
				
				saveObj.setEmailId(objBean.getEmailId());
				saveObj.setTeacherName(objBean.getTeacherName());
				saveObj.setAccountStatus(1);
				saveObj.setRole(objBean.getRole());
				techRepo.save(saveObj);
	
				responseObj.setResponseTxt("success");
				
				entityManager.getTransaction().commit();
				entityManager.close();
		        
		}catch(Exception e) {
			e.getStackTrace();
		}
		
		
		return responseObj;
	}
	

	
	

	
	
}
