chore: create legal and real user data info

This commit is contained in:
Matin
2025-02-17 15:43:12 +03:30
parent 14373bb665
commit 8b8ddb693e
18 changed files with 390 additions and 20 deletions
@@ -1,5 +1,6 @@
import { Injectable } from "@nestjs/common";
import { BadRequestException, Injectable } from "@nestjs/common";
import { CityMessage, ProvinceMessage } from "../../../common/enums/message.enum";
import { PaginationUtils } from "../../utils/providers/pagination.utils";
import { SearchCitiesDto } from "../DTO/cities-search-query.dto";
import { CityRepository } from "../repositories/city.repository";
@@ -51,4 +52,59 @@ export class AddressService {
paginate: true,
};
}
async getProvince(id: number) {
const province = await this.provinceRepository.findOneBy({
id,
});
if (!province) throw new BadRequestException(CityMessage.NOT_FOUND);
return { province };
}
async getCity(id: number) {
const city = await this.cityRepository.findOneBy({
id,
});
if (!city) throw new BadRequestException(CityMessage.NOT_FOUND);
return { city };
}
async getCitiesByProvince(queryDto: SearchCitiesDto, id: number) {
const { limit, skip } = PaginationUtils(queryDto);
const province = await this.provinceRepository.findOneBy({
id,
});
if (!province) throw new BadRequestException(CityMessage.NOT_FOUND);
const queryBuilder = this.cityRepository.createQueryBuilder("city").where("city.provinceId = :provinceId", { provinceId: province.id });
if (queryDto.q) {
queryBuilder.andWhere("city.name ILIKE :q", { q: `%${queryDto.q}%` });
}
queryBuilder.skip(skip).take(limit);
const [cities, count] = await queryBuilder.getManyAndCount();
return {
cities,
count,
pagination: true,
};
}
async getProvinceByCity(id: number) {
const province = await this.provinceRepository.findOne({
where: {
cities: {
id,
},
},
});
if (!province) throw new BadRequestException(ProvinceMessage.NOT_FOUND);
return { province };
}
}