package com.sc.sicanet.migracion_sicanet.service;

import com.sc.sicanet.migracion_sicanet.DTO.CatContactoDTO;
import com.sc.sicanet.migracion_sicanet.entity.CatContacto;
import com.sc.sicanet.migracion_sicanet.entity.Persona;
import com.sc.sicanet.migracion_sicanet.repository.CatContactoRepository;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.Optional;

@Service
public class ContactoServiceImpl implements ContactoService{
    @Autowired
    private CatContactoRepository catContactoRepository;

    @PersistenceContext
    private EntityManager entityManager;

    @Value("${config.contacto.fktipocontactocelular}")
    private int fkCatTipoContactoCelular;

    public CatContacto guardarContacto(CatContacto catContacto) {
        return catContactoRepository.save(catContacto);
    }

    @Override
    public Optional<CatContacto> consultaContacto(Persona persona) {
        return catContactoRepository.findByPersonaAndEstatus(persona, "A");
    }

    public CatContacto convertirDatosDeContacto(CatContactoDTO catContactoDTO, Persona persona) {
        LocalDateTime fechaActual = LocalDateTime.now();

        CatContacto catContacto = new CatContacto(fechaActual, "", catContactoDTO.getTelefono_celular(),
                "", fkCatTipoContactoCelular,0,0,"API Migracion","A", 1);
        catContacto.setFechaControl(fechaActual);
        catContacto.setFechaRegistro(fechaActual);
        if (persona.getPkPersona() != 0) {
            Optional<CatContacto> catContactoExistente = consultaContacto(persona);
            if (!catContactoExistente.isEmpty()) {
                catContacto.setPkCatContacto(catContactoExistente.get().getPkCatContacto());
                catContacto.setFechaControl(catContactoExistente.get().getFechaControl());
                catContacto.setFechaRegistro(catContactoExistente.get().getFechaRegistro());
            }
        }

        return catContacto;
    }
}
