package com.ejie.ab39a.service;

import java.text.MessageFormat;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.ejie.ab39a.dao.PlanEstrategicoDao;
import com.ejie.ab39a.model.MailModel;
import com.ejie.ab39a.model.PlanesEstrategicos;
import com.ejie.ab39a.model.TecnicosEntidad;
import com.ejie.ab39a.util.Constantes;
import com.ejie.ab39a.util.PropertiesUtil;
import com.ejie.ab39a.util.Utilidades;

/**
 * 
 *  
 *
 */
@Service(value="planEstrategicoService")
public class PlanEstrategicoServiceImpl implements PlanEstrategicoService{
	
	private static final Logger logger= LoggerFactory.getLogger(PlanEstrategicoServiceImpl.class); 
	
	@Autowired
	private PlanEstrategicoDao planEDao; 

	@Override
	public Long getPlanesEstrategicosCount() {
		return this.planEDao.getPlanesEstrategicosCount();
	}
	
	
	@Override
	public void enviarCorreos(Integer mesesAntes) throws Exception {
		StringBuilder strAsuntoCas =new StringBuilder(Constantes.STRING_BUILDER_INIT);
		StringBuilder strAsuntoEus =new StringBuilder(Constantes.STRING_BUILDER_INIT);
		StringBuilder strMensajeCas =new StringBuilder(Constantes.STRING_BUILDER_INIT);
		StringBuilder strMensajeEus =new StringBuilder(Constantes.STRING_BUILDER_INIT);
		strAsuntoCas.append(PropertiesUtil.getProperty(Constantes.MAIL_ASUNTO_CAS));
		strAsuntoEus.append(PropertiesUtil.getProperty(Constantes.MAIL_ASUNTO_EUS));
		strMensajeCas.append(PropertiesUtil.getProperty(Constantes.MAIL_MENSAJE_CAS));
		strMensajeEus.append(PropertiesUtil.getProperty(Constantes.MAIL_MENSAJE_EUS));
		
		MailModel model = new MailModel();
		model.setAsunto_es(strAsuntoCas.toString());
		model.setAsunto_eu(strAsuntoEus.toString());
		
		String mensajeCas = strMensajeCas.toString();
		String mensajeEus=strMensajeEus.toString();
		
		String[] msgArgumentos = new String[2];
		
		//Recorro los planesEstrategicos
		List<PlanesEstrategicos> listaPlanesEstrategicos = this.planEDao.getPlanesEstrategicos(mesesAntes);
		for(PlanesEstrategicos planesEstrategicos : listaPlanesEstrategicos){
			//recorro los tecnicos de cada entidad
			List<TecnicosEntidad> listaTecnicos = this.planEDao.getTecnicosEntidad(planesEstrategicos);
			StringBuilder destinatario = new StringBuilder();
			boolean esPrimeraVez = true;
			for(TecnicosEntidad tecnicos : listaTecnicos){
				if(tecnicos.getEmail()!=null){
					if(!esPrimeraVez){
						destinatario.append(",");
					}
					esPrimeraVez=false;
					destinatario.append(tecnicos.getEmail());
				}
			}
			model.setDestinatario(destinatario.toString());
			
			
			if (planesEstrategicos.getEntidad() != null){
				msgArgumentos[1]=planesEstrategicos.getEntidad().getDesentidad();
			}else{
				msgArgumentos[1]="";
			}
					
			msgArgumentos[0]=planesEstrategicos.getNombre();
			model.setMensaje_es(MessageFormat.format(mensajeCas,msgArgumentos));
			
			msgArgumentos[0]=planesEstrategicos.getNombreeus();
			
			
			model.setMensaje_eu(MessageFormat.format(mensajeEus,msgArgumentos));
			
		
			//enviar mail
			Utilidades.sendEmail(model);
		}
	}
	

}