class {{ service_name.capitalize() }}_{{ entity_name.capitalize() }}_service:
    """
    Servicio de aplicación para manejar la lógica de negocio de {{ service_name.lower() }} en la entidad {{ entity_name.capitalize() }}.
    
    Este servicio actúa como un puente entre las entidades, repositorios y otras partes
    del sistema, encapsulando la lógica de negocio para garantizar cohesión.
    """

    #Si necesitas mantener un estado de lista de entidades
    {{ entity_name.capitalize() }}_list = []

    def __init__(self, repository):
        """
        Constructor del servicio.
        
        :param repository: Instancia del repositorio relacionado con la entidad {{ entity_name.capitalize() }}.
        """
        self.repository = repository

    def validate(self, data) -> None:
        """
        Valida los datos antes de ejecutar la lógica de negocio para la entidad {{ entity_name.capitalize() }}.
        
        Lógica de negocio y coordinación entre entidades/repositorios:
        - Validaciones específicas de la entidad {{ entity_name.capitalize() }}.
        - Reglas de negocio.
        - Dependencias externas.
        - Coordinación entre entidades.
        
        :param data: Diccionario o DTO para validar.   
        :raise ValueError: Si los datos no son válidos.
        """
        # Implementa validaciones específicas relacionadas con {{ entity_name.capitalize() }}
        # Por ejemplo:
        # if data.name and len(data.name) < 10:
        #   raise ValueError("The name must have at least 10 characters")
        # TODO: Agrega las validaciones aquí.
        pass

    def execute(self, data) -> dict:
        """
        Método principal para ejecutar la lógica de negocio para {{ service_name.lower() }} en la entidad {{ entity_name.capitalize() }}.
        
        :param data: Diccionario o DTO con Argumentos dinámicos para ejecutar la lógica.    
        :return: Un diccionario con los resultados de la operación.
        """

        #validaciones
        self.validate(data)

        # Implementa la lógica del servicio específico para la entidad {{ entity_name.capitalize() }}
        # Por ejemplo:
        # result = self.repository.get_by_id(data.id)
        # TODO: Agrega la lógica de negocio aquí.
        raise NotImplementedError("Debes implementar la lógica de negocio para {{ service_name.lower() }} en {{ entity_name.capitalize() }}.")        

