package jumapacelaya.gob.mx.infowall.controlador;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;
import jakarta.inject.Inject;
import jumapacelaya.gob.mx.infowall.dto.cobFacVtaDiaDTO;
import jumapacelaya.gob.mx.infowall.dto.compCvDTO;
import jumapacelaya.gob.mx.infowall.dto.otReconexDiaDTO;
import jumapacelaya.gob.mx.infowall.dto.otSuspensionDTO;
import jumapacelaya.gob.mx.infowall.dto.totalCobrosHoyDTO;
import jumapacelaya.gob.mx.infowall.dto.totalPagosHoyDTO;
import jumapacelaya.gob.mx.infowall.dto.totalPagosMesDTO;
import jumapacelaya.gob.mx.infowall.servicio.InfowallServicio;

@Controller("/infowall")
public class InfowallControlador {

    @Inject
    InfowallServicio servicio;

    @Get("/totalpagoshoy/{entidad}/{punto}")
    public totalPagosHoyDTO obtenerTotalPagosHoy(String entidad, String punto) {
        List<Integer> entidadIds = Arrays.stream(entidad.split(","))
                                        .map(String::trim)
                                        .map(Integer::parseInt)
                                        .collect(Collectors.toList());

        List<Integer> puntoIds = Arrays.stream(punto.split(","))
                                    .map(String::trim)
                                    .map(Integer::parseInt)
                                    .collect(Collectors.toList());

        return servicio.obtenerTotalPagosHoy(entidadIds, puntoIds);
    }

    @Get("/totalcobroshoy/{entidad}/{punto}")
    public totalCobrosHoyDTO obtenerTotalCobrosHoy(String entidad, String punto) {
        List<Integer> entidadIds = Arrays.stream(entidad.split(","))
                                        .map(String::trim)
                                        .map(Integer::parseInt)
                                        .collect(Collectors.toList());

        List<Integer> puntoIds = Arrays.stream(punto.split(","))
                                    .map(String::trim)
                                    .map(Integer::parseInt)
                                    .collect(Collectors.toList());

        return servicio.obtenerTotalCobrosHoy(entidadIds, puntoIds);
    }

    @Get("/totalpagosanualxmes")
    public List<totalPagosMesDTO> obtenerTotalPagosAnualPorMes() {
        return servicio.obtenerTotalPagosAnualPorMes();
    }

    @Get("/otssuspension")
    public List<otSuspensionDTO> obtenerOtSuspension() {
        return servicio.obtenerOtSuspension();
    }

    @Get("/otsreconexdia")
    public otReconexDiaDTO obtenerOtsReconexDia() {
        return servicio.obtenerOtsReconexDia();
    }

    @Get("/cobfacvtadia/{tipofacvta}")
    public List<cobFacVtaDiaDTO> obtenerCobFacVtaDia(String tipofacvta) {
        return servicio.obtenerCobFacVtaDia(tipofacvta);
    }

    @Get("/compcv")
    public compCvDTO obtenerCompCv() {
        return servicio.obtenerCompCv();
    }
}
