chore: add service search
This commit is contained in:
@@ -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,
|
||||
};
|
||||
}
|
||||
|
||||
/******************************************** */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user