package dev.sonpx.loyalty.mcp.service;

import dev.sonpx.loyalty.mcp.model.Result;
import dev.sonpx.loyalty.mcp.reward.client.PoolDefinitionClient;
import dev.sonpx.loyalty.mcp.reward.model.PoolDefinition;
import java.util.Arrays;
import java.util.List;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

@Service
@Slf4j
@RequiredArgsConstructor
public class PoolDefinitionService {

    private final PoolDefinitionClient poolDefinitionClient;

    public Result<PoolDefinition> findById(String poolId) {
        PoolDefinition pool = poolDefinitionClient.findById(poolId);
        return Result.of(pool, """
                Trả lời tự nhiên bằng tiếng Việt. Trình bày chi tiết thông tin Point Pool một cách rõ ràng:
                - Thông tin cơ bản: Tên Pool, Mã Pool, Đơn vị tiền tệ.
                - Loại Pool, Cấp độ Pool (Entity Level).
                - Nhóm Pool (Pool Group), Tài khoản kế toán (GL Account).
                Dùng bullet list hoặc dạng key-value dễ đọc.
                """);
    }

    public Result<List<PoolDefinition>> findActiveByIds(String ids) {
        List<String> idList = Arrays.asList(ids.split(",\\s*"));
        List<PoolDefinition> pools = poolDefinitionClient.findActiveByIds(idList);
        return Result.of(pools, """
                Trả lời tự nhiên bằng tiếng Việt. Hiển thị danh sách các Pool, mỗi pool ghi: Tên, Mã, Loại Pool.
                Không dùng markdown table.
                """);
    }
}
