import { Connection } from "typeorm"; import { BaseRepository, Utils } from "@leal.api/api_utils"; import { Usuario, ResponseModel } from "@leal.api/api_models"; import { IComercioRepository } from "../interfaces"; import { ComercioViewModel } from "../models"; export class ComercioRepository extends BaseRepository implements IComercioRepository { private baseUrl: string; constructor(connection: Connection, env: string = "test") { super(connection, Usuario); this.baseUrl = Utils.BASE_URL(env); } //Consulta la informacion de las 16 comerciosrecomendados async comercioRecomendados(limit: number = 16, uid?: string, latitud: number = 0, longitud: number = 0): Promise> { try { let result: ComercioViewModel[]; if (latitud != 0 && longitud != 0) { //TODO: need to work on this part to return nearest sucursales let Q = `SELECT t1.nombre, t1.id_comercio as idComercio, t4.id_sucursal as idSucursal, CONCAT('${this.baseUrl}', t1.logo) AS logo, count(t3.uid) AS count FROM com_comercios AS t1 INNER JOIN usu_usuarios_comercios AS t3 ON t1.id_comercio = t3.id_comercio ${uid ? `AND t3.uid != '${uid}'` : ""} INNER JOIN com_sucursales t4 on t1.id_comercio = t4.id_comercio ${uid ? `LEFT JOIN usu_usuarios t5 on '${uid}' = t5.uid AND t1.id_ciudad = t5.cod_ciudad` : ""} WHERE t1.estado = 'activo' AND t1.visible_app='si' GROUP BY t1.id_comercio ORDER BY count DESC LIMIT ${limit}`; console.log("query:", Q); result = (await this.repo.query(Q)) as ComercioViewModel[]; } else { let Q = `SELECT t1.nombre, t1.id_comercio as idComercio, t4.id_sucursal as idSucursal, CONCAT('${this.baseUrl}', t1.logo) AS logo, count(t3.uid) AS count FROM com_comercios AS t1 INNER JOIN usu_usuarios_comercios AS t3 ON t1.id_comercio = t3.id_comercio ${uid ? `AND t3.uid != '${uid}'` : ""} INNER JOIN com_sucursales t4 on t1.id_comercio = t4.id_comercio ${uid ? `LEFT JOIN usu_usuarios t5 on '${uid}' = t5.uid AND t1.id_ciudad = t5.cod_ciudad` : ""} WHERE t1.estado = 'activo' AND t1.visible_app='si' GROUP BY t1.id_comercio ORDER BY count DESC LIMIT ${limit}`; console.log("query:", Q); result = (await this.repo.query(Q)) as ComercioViewModel[]; } // console.log(result); if (result.length > 0) { return new ResponseModel(100, result); } else { return new ResponseModel(104, undefined, "No se encontraron resultados"); } } catch (error) { return new ResponseModel(105, undefined, error); } } }