chore: add service search

This commit is contained in:
mahyargdz
2025-03-09 17:08:00 +03:30
parent cb8ecd770c
commit 2b51059bc1
3 changed files with 35 additions and 2 deletions
@@ -29,4 +29,6 @@ export class DanakServicesSearchQueryDto extends PaginationDto {
isDanakSuggest?: number;
}
export class DanakServicesGlobalSearchDto extends PickType(DanakServicesSearchQueryDto, ["q"]) {}
export class DanakServicesQueryDto extends PickType(DanakServicesSearchQueryDto, ["limit", "page", "categoryId"] as const) {}
@@ -6,7 +6,7 @@ import { CategoryListSearchQueryDto, CategorySearchQueryDto } from "./DTO/catego
import { CreateCategoryDto } from "./DTO/create-category.dto";
import { CreateServiceDto } from "./DTO/create-service.dto";
import { DanakServiceReviewQueryDto } from "./DTO/danak-service-review-query.dto";
import { DanakServicesQueryDto, DanakServicesSearchQueryDto } from "./DTO/danak-services-search-query.dto";
import { DanakServicesGlobalSearchDto, DanakServicesQueryDto, DanakServicesSearchQueryDto } from "./DTO/danak-services-search-query.dto";
import { UpdateCategoryDto } from "./DTO/update-category.dto";
import { UpdateReviewStatusDto } from "./DTO/update-review-status.dto";
import { UpdateServiceDto } from "./DTO/update-service.dto";
@@ -112,6 +112,13 @@ export class DanakServicesController {
return this.danakServicesService.getServicesListForUser(queryDto);
}
@ApiOperation({ summary: "search danak services" })
@AuthGuards()
@Get("search")
searchServices(@Query() queryDto: DanakServicesGlobalSearchDto) {
return this.danakServicesService.searchServices(queryDto);
}
@AuthGuards()
@PermissionsDec(PermissionEnum.SERVICES)
@ApiOperation({ summary: "toggle status of danak service => admin route" })
@@ -10,7 +10,7 @@ import { CategoryListSearchQueryDto, CategorySearchQueryDto } from "../DTO/categ
import { CreateCategoryDto } from "../DTO/create-category.dto";
import { CreateServiceDto } from "../DTO/create-service.dto";
import { DanakServiceReviewQueryDto } from "../DTO/danak-service-review-query.dto";
import { DanakServicesQueryDto, DanakServicesSearchQueryDto } from "../DTO/danak-services-search-query.dto";
import { DanakServicesGlobalSearchDto, DanakServicesQueryDto, DanakServicesSearchQueryDto } from "../DTO/danak-services-search-query.dto";
import { UpdateCategoryDto } from "../DTO/update-category.dto";
import { UpdateReviewStatusDto } from "../DTO/update-review-status.dto";
import { UpdateServiceDto } from "../DTO/update-service.dto";
@@ -324,6 +324,30 @@ export class DanakServicesService {
async getServicesListForUser(queryDto: DanakServicesQueryDto) {
return this.danakServicesRepository.getServicesForUser(queryDto);
}
/******************************************** */
async searchServices(queryDto: DanakServicesGlobalSearchDto) {
const servicesQuery = this.danakServicesRepository
.createQueryBuilder("service")
.leftJoin("service.category", "category")
.leftJoin("service.subscriptionPlans", "subscriptionPlans")
.select(["service.id", "service.name", "service.description", "service.icon", "category.id", "category.title"])
.where("service.isActive = :isActive", { isActive: true })
.andWhere("service.deletedAt IS NULL")
.andWhere("category.isActive = :categoryActive", { categoryActive: true })
.andWhere("category.deletedAt IS NULL")
.andWhere("subscriptionPlans.isActive = :planActive", { planActive: true });
if (queryDto.q) {
servicesQuery.andWhere("service.name ILIKE :searchQuery", { searchQuery: `%${queryDto.q}%` });
}
const services = await servicesQuery.getMany();
return {
services,
};
}
/******************************************** */