chore: ticket service but not tested
This commit is contained in:
@@ -8,7 +8,9 @@ import { DanakServicesService } from "./providers/danak-services.service";
|
||||
import { AuthGuards } from "../../common/decorators/auth-guard.decorator";
|
||||
import { Pagination } from "../../common/decorators/pagination.decorator";
|
||||
import { Roles } from "../../common/decorators/roles.decorator";
|
||||
import { UserDec } from "../../common/decorators/user.decorator";
|
||||
import { ParamDto } from "../../common/DTO/param.dto";
|
||||
import { User } from "../users/entities/user.entity";
|
||||
import { RoleEnum } from "../users/enums/role.enum";
|
||||
|
||||
@Controller("services")
|
||||
@@ -19,7 +21,7 @@ export class DanakServicesController {
|
||||
//
|
||||
@AuthGuards()
|
||||
@Roles(RoleEnum.ADMIN)
|
||||
@ApiOperation({ summary: "Create a new service category" })
|
||||
@ApiOperation({ summary: "Create a new service category => admin route" })
|
||||
@Post("category")
|
||||
createCategory(@Body() createDto: CreateCategoryDto) {
|
||||
return this.danakServicesService.createCategory(createDto);
|
||||
@@ -27,7 +29,7 @@ export class DanakServicesController {
|
||||
|
||||
@AuthGuards()
|
||||
@Roles(RoleEnum.ADMIN)
|
||||
@ApiOperation({ summary: "Get all service categories" })
|
||||
@ApiOperation({ summary: "Get all service categories => admin route" })
|
||||
@Get("category")
|
||||
getCategories(@Query() queryDto: CategorySearchQueryDto) {
|
||||
return this.danakServicesService.getCategories(queryDto);
|
||||
@@ -35,7 +37,7 @@ export class DanakServicesController {
|
||||
|
||||
@AuthGuards()
|
||||
@Roles(RoleEnum.ADMIN)
|
||||
@ApiOperation({ summary: "Get all service categories" })
|
||||
@ApiOperation({ summary: "Get all service categories => admin route" })
|
||||
@Pagination()
|
||||
@Get("category-list")
|
||||
getCategoryList(@Query() queryDto: CategoryListSearchQueryDto) {
|
||||
@@ -44,7 +46,7 @@ export class DanakServicesController {
|
||||
|
||||
@AuthGuards()
|
||||
@Roles(RoleEnum.ADMIN)
|
||||
@ApiOperation({ summary: "toggle status of categories" })
|
||||
@ApiOperation({ summary: "toggle status of categories => admin route" })
|
||||
@HttpCode(HttpStatus.OK)
|
||||
@Post("category/toggle-status/:id")
|
||||
toggleCategoryStatus(@Param() paramDto: ParamDto) {
|
||||
@@ -53,9 +55,17 @@ export class DanakServicesController {
|
||||
|
||||
@AuthGuards()
|
||||
@Roles(RoleEnum.ADMIN)
|
||||
@ApiOperation({ summary: "create new danak services" })
|
||||
@ApiOperation({ summary: "create new danak services => admin route" })
|
||||
@Post()
|
||||
createService(@Body() createDto: CreateServiceDto) {
|
||||
return this.danakServicesService.createService(createDto);
|
||||
}
|
||||
|
||||
@AuthGuards()
|
||||
@Roles(RoleEnum.USER)
|
||||
@ApiOperation({ summary: "get all user purchased danak services" })
|
||||
@Get("user-services")
|
||||
getUserServices(@UserDec() user: User) {
|
||||
return this.danakServicesService.getUserServices(user.id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
import { Column, Entity, ManyToOne, OneToMany } from "typeorm";
|
||||
import { Column, Entity, ManyToMany, ManyToOne, OneToMany } from "typeorm";
|
||||
|
||||
import { DanakServiceCategory } from "./danak-service-category.entity";
|
||||
import { DanakServiceImage } from "./danak-service-image.entity";
|
||||
import { BaseEntity } from "../../../common/entities/base.entity";
|
||||
import { Ticket } from "../../tickets/entities/ticket.entity";
|
||||
import { User } from "../../users/entities/user.entity";
|
||||
import { ServiceStatus } from "../enums/service-status.enum";
|
||||
import { ServicesLanguage } from "../enums/services-language.enum";
|
||||
|
||||
@Entity()
|
||||
export class DanakService extends BaseEntity {
|
||||
@Column({ type: "varchar", length: 100, nullable: false })
|
||||
@Column({ type: "varchar", length: 100, nullable: false, unique: true })
|
||||
name: string;
|
||||
|
||||
@Column({ type: "boolean", nullable: false, default: false })
|
||||
@@ -44,12 +46,18 @@ export class DanakService extends BaseEntity {
|
||||
@Column({ type: "varchar", length: 255, nullable: false })
|
||||
icon: string;
|
||||
|
||||
@OneToMany(() => DanakServiceImage, (danakServiceImage) => danakServiceImage.danakService, { eager: true, cascade: true })
|
||||
images: DanakServiceImage[];
|
||||
|
||||
@ManyToOne(() => DanakServiceCategory, (danakServiceCategory) => danakServiceCategory.danakService, {
|
||||
nullable: false,
|
||||
onDelete: "RESTRICT",
|
||||
})
|
||||
category: DanakServiceCategory;
|
||||
|
||||
@OneToMany(() => DanakServiceImage, (danakServiceImage) => danakServiceImage.danakService, { eager: true, cascade: true })
|
||||
images: DanakServiceImage[];
|
||||
|
||||
@OneToMany(() => Ticket, (ticket) => ticket.danakService)
|
||||
tickets: Ticket[];
|
||||
|
||||
@ManyToMany(() => User, (user) => user.danakServices)
|
||||
users: User[];
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ import { BadRequestException, Injectable } from "@nestjs/common";
|
||||
import { FindOptionsWhere, IsNull } from "typeorm";
|
||||
|
||||
import { ParamDto } from "../../../common/DTO/param.dto";
|
||||
import { CategoryMessage, CommonMessage } from "../../../common/enums/message.enum";
|
||||
import { CategoryMessage, CommonMessage, ServiceMessage } from "../../../common/enums/message.enum";
|
||||
import { PaginationUtils } from "../../utils/providers/pagination.utils";
|
||||
import { CategoryListSearchQueryDto, CategorySearchQueryDto } from "../DTO/category-search-query.dto";
|
||||
import { CreateCategoryDto } from "../DTO/create-category.dto";
|
||||
@@ -78,6 +78,17 @@ export class DanakServicesService {
|
||||
}
|
||||
/******************************************** */
|
||||
|
||||
async getUserServices(userId: string) {
|
||||
const userServices = await this.danakServicesRepository.find({
|
||||
where: { users: { id: userId } },
|
||||
});
|
||||
|
||||
return {
|
||||
userServices,
|
||||
};
|
||||
}
|
||||
/******************************************** */
|
||||
|
||||
async toggleCategoryStatus(paramDto: ParamDto) {
|
||||
const category = await this.danakServicesCategoryRepository.findOneById(paramDto.id);
|
||||
if (!category) throw new BadRequestException(CategoryMessage.CATEGORY_NOT_EXIST);
|
||||
@@ -93,6 +104,9 @@ export class DanakServicesService {
|
||||
const category = await this.danakServicesCategoryRepository.findOneById(createDto.categoryId);
|
||||
if (!category) throw new BadRequestException(CategoryMessage.CATEGORY_NOT_EXIST);
|
||||
|
||||
const existService = await this.danakServicesRepository.findOneByName(createDto.name);
|
||||
if (existService) throw new BadRequestException(ServiceMessage.NAME_EXIST);
|
||||
|
||||
const images = createDto.images.map((image) => {
|
||||
return { imageUrl: image };
|
||||
});
|
||||
@@ -104,6 +118,13 @@ export class DanakServicesService {
|
||||
service,
|
||||
};
|
||||
}
|
||||
/******************************************** */
|
||||
|
||||
async getServiceByName(name: string) {
|
||||
const danakService = await this.danakServicesRepository.findOneByName(name);
|
||||
if (!danakService) throw new BadRequestException(ServiceMessage.SERVICE_NOT_EXIST);
|
||||
return danakService;
|
||||
}
|
||||
|
||||
/******************************************** */
|
||||
/******************************************** */
|
||||
|
||||
@@ -9,4 +9,8 @@ export class DanakServicesRepository extends Repository<DanakService> {
|
||||
constructor(@InjectRepository(DanakService) danakServicesRepository: Repository<DanakService>) {
|
||||
super(danakServicesRepository.target, danakServicesRepository.manager, danakServicesRepository.queryRunner);
|
||||
}
|
||||
|
||||
async findOneByName(name: string): Promise<DanakService | null> {
|
||||
return this.findOneBy({ name });
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user