package com.bizofficer.admin.navigation;



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.PgprepAdministrator;
import com.bizofficer.hibernate.entity.PgprepOrganisationMenu;
import com.bizofficer.hibernate.repository.PgprepAdministratorRepository;
import com.bizofficer.hibernate.repository.PgprepOrganisationMenuRepository;


@Service
public class NavigationAdminService{
	
	private static final Logger logger = Logger.getLogger(NavigationAdminService.class);
	
	@Autowired
	EntityManagerFactory entityManagerFactory;
	
	@Autowired
	PgprepAdministratorRepository adminRepo;
	
	@Autowired
	PgprepOrganisationMenuRepository orgMenuRepo;
	
	public Object execute(Object obj) throws NotFoundException{
		NavigationAdminBean objBean = (NavigationAdminBean) obj;
		NavigationAdminResponseBean responseObj = new NavigationAdminResponseBean();
		
		try {
			
			logger.info("LoginEmailId >> " + objBean.getLoginEmailId() );
			logger.info("Token >> " + objBean.getToken() );
			logger.info("OrganisationId >> " + objBean.getOrganisationId() );
			
			if(objBean.getLoginEmailId()==null || objBean.getToken()==null || objBean.getOrganisationId()==null) {
				return responseObj;
			}
			
			PgprepAdministrator adminObj = (PgprepAdministrator) adminRepo.findByEmailIdAndLoginToken(objBean.getLoginEmailId(), objBean.getToken());
			if(adminObj==null) {
				logger.info("InvalidToken");
				///responseObj.setResponseTxt("InvalidToken");
				return responseObj;
			}

			logger.info("Verify >> " + adminObj.getId() );

			PgprepOrganisationMenu pgOrgMenuObj = orgMenuRepo.findByOrganisationId(objBean.getOrganisationId());
			
			if(pgOrgMenuObj.getDashboard()!=null && pgOrgMenuObj.getDashboard()==1) {
				responseObj.setDashboard(true);
			}else {
				responseObj.setDashboard(false);
			}
			
			if(pgOrgMenuObj.getClassTest()!=null && pgOrgMenuObj.getClassTest()==1) {
				responseObj.setClassTest(true);
			}else {
				responseObj.setClassTest(false);
			}
			
			if(pgOrgMenuObj.getMockTest()!=null && pgOrgMenuObj.getMockTest()==1) {
				responseObj.setMockTest(true);
			}else {
				responseObj.setMockTest(false);
			}

			if(pgOrgMenuObj.getReport()!=null && pgOrgMenuObj.getReport()==1) {
				responseObj.setReport(true);
			}else {
				responseObj.setReport(false);
			}

			if(pgOrgMenuObj.getSelfTest()!=null && pgOrgMenuObj.getSelfTest()==1) {
				responseObj.setSelfTest(true);
			}else {
				responseObj.setSelfTest(false);
			}
			
			if(pgOrgMenuObj.getSmartLearning()!=null && pgOrgMenuObj.getSmartLearning()==1) {
				responseObj.setSmartLearning(true);
			}else {
				responseObj.setSmartLearning(false);
			}
			
			if(pgOrgMenuObj.getTopicTest()!=null && pgOrgMenuObj.getTopicTest()==1) {
				responseObj.setTopicTest(true);
			}else {
				responseObj.setTopicTest(false);
			}
			
			if(pgOrgMenuObj.getTopicTest()!=null && pgOrgMenuObj.getTopicTest()==1) {
				responseObj.setTopicTest(true);
			}else {
				responseObj.setTopicTest(false);
			}
			
			if(pgOrgMenuObj.getTeacherHelp()!=null && pgOrgMenuObj.getTeacherHelp()==1) {
				responseObj.setTeacherHelp(true);
			}else {
				responseObj.setTeacherHelp(false);
			}
			
		        
		}catch(Exception e) {
			e.getStackTrace();
		}
		
		
		return responseObj;
	}
	

	
	

	
	
}
