package com.saas.tenant.service;

import com.saas.tenant.entity.RetellAgent;
import com.saas.tenant.repository.RetellAgentRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * Tenant Retell Agent Service (Phase 4.3)
 * Pure JPA - NO SQL hardcoded
 * Multi-tenant routing via TenantContext
 */
@Service
@RequiredArgsConstructor
@Slf4j
public class TenantRetellAgentService {
    
    private final RetellAgentRepository retellAgentRepository;
    
    @Transactional(transactionManager = "tenantTransactionManager")
    public RetellAgent createAgent(RetellAgent agent) {
        log.info("Creating Retell agent: {}", agent.getName());
        return retellAgentRepository.save(agent);
    }
    
    @Transactional(transactionManager = "tenantTransactionManager", readOnly = true)
    public List<RetellAgent> getAllActiveAgents() {
        return retellAgentRepository.findByStatus("ACTIVE");
    }
    
    @Transactional(transactionManager = "tenantTransactionManager", readOnly = true)
    public RetellAgent getByRetellAgentId(String retellAgentId) {
        return retellAgentRepository.findByRetellAgentId(retellAgentId)
                .orElseThrow(() -> new RuntimeException("Retell agent not found: " + retellAgentId));
    }
    
    @Transactional(transactionManager = "tenantTransactionManager")
    public void deleteAgent(Long id) {
        log.warn("Deleting Retell agent: {}", id);
        retellAgentRepository.deleteById(id);
    }
}
