package com.bizofficer.admin.cache;

import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Service
public class TQCAdminController {
	
	private static final Logger logger = Logger.getLogger(TQCAdminController.class);
	
	@Autowired
	private TQCAdminService serviceObj;
	
	@Autowired
	private SyncAssessmentTreeviewTempService syncTempServiceObj;
	
	@Autowired
	private SyncAssessmentTreeviewService syncServiceObj;

	@Autowired
	private CacheTempAdmService cacheOrgAdmServiceObj;
	
	@Autowired
	private CacheTempTreeviewAdmService cacheTempTreeviewAdmServiceObj;
	
	@RequestMapping(value = {"/topicquestioncount"}, method = {RequestMethod.GET})
	public ResponseEntity<Object> execute(@ModelAttribute("SpringWeb")TQCAdminBean objBean) {
		
		try {
			
			TQCAdminResponseBean tsrbObj = (TQCAdminResponseBean) (Object) syncTempServiceObj.execute(objBean);
			logger.info("ResponseTxt: "+tsrbObj.getResponseTxt());

			if(tsrbObj!=null && tsrbObj.getResponseTxt()!=null && tsrbObj.getResponseTxt().equals("Synchronous_DONE")) {
				TQCAdminResponseBean tsrbAAObj = (TQCAdminResponseBean) (Object) serviceObj.execute(objBean);
				logger.info("ResponseTxt: "+tsrbAAObj.getResponseTxt());
				
				if(tsrbAAObj!=null && tsrbAAObj.getResponseTxt()!=null && tsrbAAObj.getResponseTxt().equals("DONE")) {
					TQCAdminResponseBean tsrbBBObj = (TQCAdminResponseBean) (Object) syncServiceObj.execute(objBean);
					logger.info("ResponseTxt: "+tsrbBBObj.getResponseTxt());
					
					logger.info("**********************************************************************");
					logger.info("**** TEMPLATE CACHE STARTING ");
					logger.info("**********************************************************************");
					cacheOrgAdmServiceObj.execute(objBean);
					
					logger.info("**********************************************************************");
					logger.info("**** TEMPLATE TOPIC TREEVIEW CACHE STARTING ");
					logger.info("**********************************************************************");
					cacheTempTreeviewAdmServiceObj.execute(objBean);
					
				}
				
			}
			
			HttpHeaders headers = new HttpHeaders();
	        ////headers.add("Responded", "UserController");
	        return ResponseEntity.ok().headers(headers).body(tsrbObj);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
	}
	

	
	
}
