package com.dacrt.SBIABackend.security.service;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;

@Service
@ConditionalOnProperty(name = "app.email.provider", havingValue = "smtp")
public class SmtpEmailService implements EmailService {

    private final JavaMailSender mailSender;

    @Autowired
	PasswordEncoder passworEncoder;

	
	@Value("$(spring.mail.username)")
	private String fromEmailId;
	
	@Value("${spring.mail.port}")
	private String puerto;
	
	@Value("${spring.mail.host}")
	private String hostemail;
		
	@Value("${spring.mail.username}")
	private String usersemail;
	
	@Value("${spring.mail.password}")
	private String pwdemail;
	
	@Value("${spring.mail.protocol}")
	private String protocolo;
	
	@Value("${spring.mail.properties.mail.smtp.auth}")
	private String auth;
	
	@Value("${spring.mail.properties.mail.smtp.starttls.enabled}")
	private String starttls;
	
    @Value("${spring.mail.username}")
    private String usersEmail; // Inyecta el correo remitente desde properties

    public SmtpEmailService(JavaMailSender mailSender) {
        this.mailSender = mailSender;
    }

    @Override
    public void sendEmail(String recipient, String subject, String body) {
    	SimpleMailMessage simpleMailMessage= new SimpleMailMessage();
		 //JavaMailSender mailSender;
		 try {
		MimeMessage message = mailSender.createMimeMessage();
		message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipient));
		message.setContent(body, "text/html; charset=utf-8");
		message.setSubject(subject);
		message.setFrom(new InternetAddress(usersemail));
	        
		mailSender.send(message);
		 } 
		 catch (MessagingException e) {
	            // Manejar excepciones
	            e.printStackTrace();
	        }
    }

    @Override
    public String armarBodySendMailUser(String ruta, String usuario, String saludo, String url, 
                                        String accion, String minlong, String cantMay, 
                                        String cantMin, String cantSimbo, String simPermi) {
String contenido = "";
		
	    contenido = String.format(""+
                 "<html> "+
	        		
                 "<body> "+  
	  	            "<div id='1' style='background-color: #F8F8F8;width: 875px;height: 550px;background-position-x: 320px; background-position-y: 240px;' > "+
                                   "<div style='margin:0 auto;text-align:center;background-color: #354856;width: 377px;height: 170px;background-position-x: 320px; background-position-y: 241px;'> "+ 
                                        "<img style='margin-top: 40px;width: 200px;height: 87px;' src='%s' alt='logo'> "+
                                   "</div> "+
                                   "<div style='border:1px solid #FFF;margin:0 auto;background-color: #FFFFFF;width: 377px;height: 377px;background-position-x: 596px; background-position-y: 404px;'> "+
                                         "<div id='2' > "+
                                            "<div style='font-weight:bold;margin:15px auto 5px auto; text-align:center;font-weight:bold;color: #152228;font-family: Arial, Helvetica, sans-serif;font-size: 18px;line-height: 22px;width: 266px;'> "+
                                               "Hola, <b>%s</b> "+
                                             "</div> "+
                                            "<div style='font-weight:bold;margin:12px auto 20px auto;width:380px;color: #4c4c4d;font-family: Roboto;font-size: 15px;letter-spacing: 0.22px;line-height: 16px;width: 266px;text-align:center;'> "+
                                               " %s" +
                                            "</div> "+
                                          "</div> "+                                          
                                          "<div style='text-align:center;padding: 10px;'> "+
                                           "<a style='background-color: #EA8B1D;border-radius: 9px;text-align:center;padding: 9px 86px;font-family: Arial, Helvetica, sans-serif;text-transform: uppercase;color:#fff;' href='%s'><b> %s </b></a> "+
                                          "</div> "+
	   	                            "<div style='background-color: #f5f3f3;border-radius: 6px;width: 266px;height: 170px;background-position-x: 625px; background-position-y: 585px;margin:10px auto 0 auto;'> "+
                                  "<div id='2' style='padding:10px;color: #828386;font-family: Roboto;font-size: 14px;line-height: 15px;  width: 244px;text-align: left;'> "+
                                  "<div style='font-weight:bold;margin-bottom:7px;color: #828386;font-family: Roboto;font-size: 12px;line-height: 14px;width: 244px;text-align: left;'>Le recordamos que la contraseña debe cumplir con los siguientes requerimientos:</div> "+
                                  "<div style='font-weight:bold;color: #828386;font-family: Roboto;font-size: 12px;line-height: 15px;width: 244px;text-align: left;padding:3px 0;'> &#10004; Longitud Mínima: %s </div> "+
                                  "<div style='font-weight:bold;color: #828386;font-family: Roboto;font-size: 12px;line-height: 15px;width: 244px;text-align: left;padding:3px 0;'> &#10004; Cantidad de Mayúsculas: %s </div> "+
                                  "<div style='font-weight:bold;color: #828386;font-family: Roboto;font-size: 12px;line-height: 15px;width: 244px;text-align: left;padding:3px 0;'> &#10004; Cantidad de Mínúsculas: %s </div> "+
                                  "<div style='font-weight:bold;color: #828386;font-family: Roboto;font-size: 12px;line-height: 15px;width: 244px;text-align: left;padding:3px 0;'> &#10004; Cantidad de Símbolos: %s </div> "+
                                  "<div style='font-weight:bold;color: #828386;font-family: Roboto;font-size: 12px;line-height: 15px;width: 244px;text-align: left;padding:3px 0;'> &#10004; Símbolos Permitidos: %s </div> "+
                                "</div> "+
                           "</div> "+
                       "</div> "+
                     "</div> "+
                  "</body> "+
             "</html>", ruta,usuario,saludo,url,accion,minlong,cantMay,cantMin,cantSimbo,simPermi);
	
		
	    return contenido;
    }
}
