import { connect } from "mongoose";

import { TextObjectFilterResult } from "../../Models/TextObjectFilter.model";
import { FindProvinciasParams } from "../../Models/Provincias/Provincias.interface";
import ProvinciasList from "../../Models/Provincias/Provincias";
import { FindPartidosParams } from "../../Models/Partidos/Partidos.interface";
import PartidosList from "../../Models/Partidos/Partidos";
import {
    FindLocalidadesParams,
    PaginateFilterBlockParams,
} from "../../Models/Localidades/Localidades.interface";
import LocalidadesList from "../../Models/Localidades/Localidades";

export class LocationService {
    public async textObjectFilterProvincias(
        data: FindProvinciasParams
    ): Promise<TextObjectFilterResult[]> {
        await connect(`${process.env.DATABASE_CONNECTION}`);

        const provincias = await ProvinciasList.filterAll(data);

        return provincias;
    }

    public async textObjectFilterPartidos(
        data: FindPartidosParams
    ): Promise<TextObjectFilterResult[]> {
        await connect(`${process.env.DATABASE_CONNECTION}`);

        const partidos = await PartidosList.filterAll(data);

        return partidos;
    }

    public async textObjectFilterLocalidades(
        data: FindLocalidadesParams
    ): Promise<TextObjectFilterResult[]> {
        await connect(`${process.env.DATABASE_CONNECTION}`);

        const localidades = await LocalidadesList.filterAll(data);

        return localidades;
    }

    public async paginateFilterLocalidades(
        data: PaginateFilterBlockParams
    ): Promise<TextObjectFilterResult[]> {
        await connect(`${process.env.DATABASE_CONNECTION}`);

        const localidades = await LocalidadesList.paginate(data);

        return localidades;
    }
}
