package com.dacrt.SBIABackend.security.service;

import javax.transaction.Transactional;

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

import com.dacrt.SBIABackend.security.dto.ParametrosSeguridadDto;
import com.dacrt.SBIABackend.security.entity.ParametrosSeguridad;
import com.dacrt.SBIABackend.security.repository.ParametrosSeguridadRepository;

@Service
@Transactional
public class ParametrosSeguridadService {
	
	Logger logger = LoggerFactory.getLogger(ParametrosSeguridadService.class);
	
	@Autowired
	ParametrosSeguridadRepository parametrosSeguridadRepository;
	
	public ParametrosSeguridad findById(Integer id) {
		ParametrosSeguridad parametrosSeguridad = parametrosSeguridadRepository.findById(id).orElseThrow(() ->
        new IllegalArgumentException(
                "Parámetro con id: " + id + " no puede ser encontrado"));
		return parametrosSeguridad;
	}

	public ParametrosSeguridadDto getParametrosSeguridad() {
		ParametrosSeguridad parametrosSeguridad = findById(1);

		return new ParametrosSeguridadDto( parametrosSeguridad.getId_parseg()  //id_parseg
				                         , parametrosSeguridad.getMaximoIntentosFallidos() //maximoIntentosFallidos
				                         , parametrosSeguridad.getMinimaLongitudClave()//minimaLongitudClave
				                         , parametrosSeguridad.getDiasValidezClave()//diasValidezClave
				                         , parametrosSeguridad.getTiempoInactividad()//TiempoInactividad
				                         );
	}

	public ParametrosSeguridad editParametrosSeguridad(ParametrosSeguridadDto parametrosSeguridadDto) {
		ParametrosSeguridad parametrosSeguridadEdit = findById(1);
		
		parametrosSeguridadEdit.setMaximoIntentosFallidos(parametrosSeguridadDto.getMaximoIntentosFallidos());
		parametrosSeguridadEdit.setMinimaLongitudClave(parametrosSeguridadDto.getMinimaLongitudClave());
		parametrosSeguridadEdit.setDiasValidezClave(parametrosSeguridadDto.getDiasValidezClave());
		parametrosSeguridadEdit.setTiempoInactividad(parametrosSeguridadDto.getTiempoInactividad());
		
		return parametrosSeguridadRepository.save(parametrosSeguridadEdit);
	}
}
