130 lines
4.2 KiB
TypeScript
130 lines
4.2 KiB
TypeScript
import { Controller, Get, Post, Body, Patch, Param, Delete, UseInterceptors, UploadedFiles } from '@nestjs/common';
|
|
import { IconService } from '../providers/icon.service';
|
|
import { GroupService } from '../providers/group.service';
|
|
import { CreateIconDto } from '../dto/create-icon.dto';
|
|
import { UpdateIconDto } from '../dto/update-icon.dto';
|
|
import { CreateGroupDto } from '../dto/create-group.dto';
|
|
import { UpdateGroupDto } from '../dto/update-group.dto';
|
|
import { ApiTags, ApiOperation, ApiParam, ApiBody, ApiBearerAuth, ApiConsumes } from '@nestjs/swagger';
|
|
import { SuperAdminAuthGuard } from 'src/modules/auth/guards/superAdminAuth.guard';
|
|
import { UseGuards } from '@nestjs/common';
|
|
import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard';
|
|
import { FilesInterceptor } from '@nest-lab/fastify-multer';
|
|
import { File } from '@nest-lab/fastify-multer';
|
|
import { CreateBatchIconsDto } from '../dto/create-batch-icons.dto';
|
|
|
|
@ApiTags('icons')
|
|
@Controller()
|
|
export class IconsController {
|
|
constructor(
|
|
private readonly iconService: IconService,
|
|
private readonly groupService: GroupService,
|
|
) { }
|
|
|
|
@Get('admin/groups/icons')
|
|
@UseGuards(AdminAuthGuard)
|
|
@ApiBearerAuth()
|
|
@ApiOperation({ summary: 'Get all icons' })
|
|
findAllPublicIcons() {
|
|
return this.groupService.findAllGroups();
|
|
}
|
|
|
|
/**
|
|
* Super Admin Endpoints
|
|
*/
|
|
@Post('super-admin/icons')
|
|
@UseGuards(SuperAdminAuthGuard)
|
|
@ApiOperation({ summary: 'Create icon' })
|
|
@ApiBody({ type: CreateIconDto })
|
|
createIcon(@Body() dto: CreateIconDto) {
|
|
return this.iconService.create(dto);
|
|
}
|
|
|
|
@Get('super-admin/icons')
|
|
@UseGuards(SuperAdminAuthGuard)
|
|
@ApiOperation({ summary: 'Get all icons' })
|
|
findAllIcons() {
|
|
return this.iconService.findAll();
|
|
}
|
|
|
|
@Get('super-admin/icons/:id')
|
|
@UseGuards(SuperAdminAuthGuard)
|
|
@ApiOperation({ summary: 'Get icon by id' })
|
|
@ApiParam({ name: 'id', required: true, type: String })
|
|
findOneIcon(@Param('id') id: string) {
|
|
return this.iconService.findOne(id);
|
|
}
|
|
|
|
@Patch('super-admin/icons/:id')
|
|
@UseGuards(SuperAdminAuthGuard)
|
|
@ApiOperation({ summary: 'Update icon' })
|
|
@ApiParam({ name: 'id' })
|
|
@ApiBody({ type: UpdateIconDto })
|
|
updateIcon(@Param('id') id: string, @Body() dto: UpdateIconDto) {
|
|
return this.iconService.update(id, dto);
|
|
}
|
|
|
|
@Delete('super-admin/icons/:id')
|
|
@UseGuards(SuperAdminAuthGuard)
|
|
@ApiOperation({ summary: 'Delete icon' })
|
|
@ApiParam({ name: 'id' })
|
|
removeIcon(@Param('id') id: string) {
|
|
return this.iconService.remove(id);
|
|
}
|
|
|
|
// Group endpoints (must come before :id routes to avoid route conflicts)
|
|
@Post('super-admin/icons/groups')
|
|
@UseGuards(SuperAdminAuthGuard)
|
|
@ApiOperation({ summary: 'Create icon group' })
|
|
@ApiBody({ type: CreateGroupDto })
|
|
createGroup(@Body() dto: CreateGroupDto) {
|
|
return this.groupService.create(dto);
|
|
}
|
|
|
|
@Get('super-admin/icons/groups')
|
|
@UseGuards(SuperAdminAuthGuard)
|
|
@ApiOperation({ summary: 'Get all icon groups' })
|
|
async findAllGroups() {
|
|
console.log('find icona');
|
|
const a = await this.groupService.findAllGroups();
|
|
console.log(a);
|
|
return a;
|
|
}
|
|
|
|
@Get('super-admin/icons/groups/:id')
|
|
@UseGuards(SuperAdminAuthGuard)
|
|
@ApiOperation({ summary: 'Get icon group by id' })
|
|
@ApiParam({ name: 'id', required: true, type: String })
|
|
findOneGroup(@Param('id') id: string) {
|
|
return this.groupService.findOne(id);
|
|
}
|
|
|
|
@Patch('super-admin/icons/groups/:id')
|
|
@UseGuards(SuperAdminAuthGuard)
|
|
@ApiOperation({ summary: 'Update icon group' })
|
|
@ApiParam({ name: 'id' })
|
|
updateGroup(@Param('id') id: string, @Body() dto: UpdateGroupDto) {
|
|
return this.groupService.update(id, dto);
|
|
}
|
|
|
|
@Delete('super-admin/icons/groups/:id')
|
|
@UseGuards(SuperAdminAuthGuard)
|
|
@ApiOperation({ summary: 'Delete icon group' })
|
|
@ApiParam({ name: 'id' })
|
|
removeGroup(@Param('id') id: string) {
|
|
return this.groupService.remove(id);
|
|
}
|
|
|
|
@Post('super-admin/icons/batch')
|
|
@UseGuards(SuperAdminAuthGuard)
|
|
@ApiOperation({ summary: 'Upload batch icons' })
|
|
@ApiConsumes('multipart/form-data')
|
|
@ApiBody({
|
|
type: CreateBatchIconsDto
|
|
})
|
|
@UseInterceptors(FilesInterceptor('files', 50))
|
|
uploadBatchIcons(@UploadedFiles() files: File[], @Body('groupId') groupId: string,) {
|
|
return this.iconService.uploadBatchIcons(groupId,files);
|
|
}
|
|
}
|