chore: add service search
This commit is contained in:
@@ -29,4 +29,6 @@ export class DanakServicesSearchQueryDto extends PaginationDto {
|
|||||||
isDanakSuggest?: number;
|
isDanakSuggest?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class DanakServicesGlobalSearchDto extends PickType(DanakServicesSearchQueryDto, ["q"]) {}
|
||||||
|
|
||||||
export class DanakServicesQueryDto extends PickType(DanakServicesSearchQueryDto, ["limit", "page", "categoryId"] as const) {}
|
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 { CreateCategoryDto } from "./DTO/create-category.dto";
|
||||||
import { CreateServiceDto } from "./DTO/create-service.dto";
|
import { CreateServiceDto } from "./DTO/create-service.dto";
|
||||||
import { DanakServiceReviewQueryDto } from "./DTO/danak-service-review-query.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 { UpdateCategoryDto } from "./DTO/update-category.dto";
|
||||||
import { UpdateReviewStatusDto } from "./DTO/update-review-status.dto";
|
import { UpdateReviewStatusDto } from "./DTO/update-review-status.dto";
|
||||||
import { UpdateServiceDto } from "./DTO/update-service.dto";
|
import { UpdateServiceDto } from "./DTO/update-service.dto";
|
||||||
@@ -112,6 +112,13 @@ export class DanakServicesController {
|
|||||||
return this.danakServicesService.getServicesListForUser(queryDto);
|
return this.danakServicesService.getServicesListForUser(queryDto);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation({ summary: "search danak services" })
|
||||||
|
@AuthGuards()
|
||||||
|
@Get("search")
|
||||||
|
searchServices(@Query() queryDto: DanakServicesGlobalSearchDto) {
|
||||||
|
return this.danakServicesService.searchServices(queryDto);
|
||||||
|
}
|
||||||
|
|
||||||
@AuthGuards()
|
@AuthGuards()
|
||||||
@PermissionsDec(PermissionEnum.SERVICES)
|
@PermissionsDec(PermissionEnum.SERVICES)
|
||||||
@ApiOperation({ summary: "toggle status of danak service => admin route" })
|
@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 { CreateCategoryDto } from "../DTO/create-category.dto";
|
||||||
import { CreateServiceDto } from "../DTO/create-service.dto";
|
import { CreateServiceDto } from "../DTO/create-service.dto";
|
||||||
import { DanakServiceReviewQueryDto } from "../DTO/danak-service-review-query.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 { UpdateCategoryDto } from "../DTO/update-category.dto";
|
||||||
import { UpdateReviewStatusDto } from "../DTO/update-review-status.dto";
|
import { UpdateReviewStatusDto } from "../DTO/update-review-status.dto";
|
||||||
import { UpdateServiceDto } from "../DTO/update-service.dto";
|
import { UpdateServiceDto } from "../DTO/update-service.dto";
|
||||||
@@ -324,6 +324,30 @@ export class DanakServicesService {
|
|||||||
async getServicesListForUser(queryDto: DanakServicesQueryDto) {
|
async getServicesListForUser(queryDto: DanakServicesQueryDto) {
|
||||||
return this.danakServicesRepository.getServicesForUser(queryDto);
|
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