117 lines
4.2 KiB
TypeScript
117 lines
4.2 KiB
TypeScript
import { Controller, Get, Post, Body, Patch, Param, Delete, UseGuards } from '@nestjs/common';
|
|
import { ApiBearerAuth, ApiOperation } from '@nestjs/swagger';
|
|
import { AdminAuthGuard } from '../../auth/guards/adminAuth.guard';
|
|
import { FieldService } from '../provider/field.service';
|
|
import { CreateFieldDto } from '../dto/create-field.dto';
|
|
import { CreateFieldOptionDto } from '../dto/create-field-option.dto';
|
|
import { FieldOptionService } from '../provider/field-option.service';
|
|
import { UpdateFieldDto } from '../dto/update-field.dto';
|
|
import { UpdateFieldOptionDto } from '../dto/update-field-option.dto';
|
|
import { FindFieldsGroupDto } from '../dto/find-field-group.dto';
|
|
import { Permissions } from 'src/common/decorators/permissions.decorator';
|
|
import { PermissionEnum } from 'src/common/enums/permission.enum';
|
|
|
|
@Controller()
|
|
@ApiBearerAuth()
|
|
export class FormBuilderController {
|
|
constructor(
|
|
private readonly fieldService: FieldService,
|
|
private readonly fieldOptionService: FieldOptionService,
|
|
) { }
|
|
|
|
|
|
/*================================ Field ========================== */
|
|
|
|
@Get('public/entity/:id/field')
|
|
@ApiOperation({ summary: 'find all fields' })
|
|
findAllSectionFieldsAsUser(@Param('id') entityId: string) {
|
|
return this.fieldService.findAll(entityId);
|
|
}
|
|
|
|
// ============= Admin =================
|
|
@Post('admin/entity/:id/field')
|
|
@ApiOperation({ summary: 'Create field for entity' })
|
|
@Permissions(PermissionEnum.MANAGE_FORM_BUILDER)
|
|
@UseGuards(AdminAuthGuard)
|
|
createField(@Body() dto: CreateFieldDto, @Param('id') entityId: string) {
|
|
return this.fieldService.create(entityId, dto);
|
|
}
|
|
|
|
@Get('admin/entity/:id/field')
|
|
@ApiOperation({ summary: 'find all fields' })
|
|
@UseGuards(AdminAuthGuard)
|
|
findAllSectionFields(@Param('id') entityId: string) {
|
|
return this.fieldService.findAll(entityId);
|
|
}
|
|
|
|
@Get('admin/entity/group/field')
|
|
@ApiOperation({ summary: 'find fields of array of entities' })
|
|
@UseGuards(AdminAuthGuard)
|
|
findAllEntityFields(@Body() dto: FindFieldsGroupDto) {
|
|
return this.fieldService.findAllByIds(dto);
|
|
}
|
|
|
|
@Get('admin/entity/field/:id')
|
|
@ApiOperation({ summary: 'Find one field' })
|
|
@UseGuards(AdminAuthGuard)
|
|
findOneFiled(@Param('id') id: string) {
|
|
return this.fieldService.findById(id);
|
|
}
|
|
|
|
@Patch('admin/entity/field/:id')
|
|
@ApiOperation({ summary: 'Update field' })
|
|
@UseGuards(AdminAuthGuard)
|
|
@Permissions(PermissionEnum.MANAGE_FORM_BUILDER)
|
|
updateField(@Param('id') id: string, @Body() dto: UpdateFieldDto) {
|
|
return this.fieldService.update(id, dto);
|
|
}
|
|
|
|
@Delete('admin/entity/field/:id')
|
|
@ApiOperation({ summary: 'Remove field' })
|
|
@UseGuards(AdminAuthGuard)
|
|
@Permissions(PermissionEnum.MANAGE_FORM_BUILDER)
|
|
removeField(@Param('id') id: string) {
|
|
return this.fieldService.remove(id);
|
|
}
|
|
|
|
/*================================ Field Option ========================== */
|
|
|
|
@Post('admin/entity/field/:id/option')
|
|
@ApiOperation({ summary: 'Create field Options ' })
|
|
@UseGuards(AdminAuthGuard)
|
|
@Permissions(PermissionEnum.MANAGE_FORM_BUILDER)
|
|
createFieldOption(@Body() dto: CreateFieldOptionDto, @Param('id') id: string) {
|
|
return this.fieldOptionService.create(id, dto);
|
|
}
|
|
|
|
@Get('admin/entity/field/:id/option')
|
|
@ApiOperation({ summary: 'find all field Option' })
|
|
@UseGuards(AdminAuthGuard)
|
|
findAllFiledOptions(@Param('id') fieldId: string) {
|
|
return this.fieldOptionService.findAll(fieldId);
|
|
}
|
|
|
|
@Get('admin/entity/field/option/:id')
|
|
@ApiOperation({ summary: 'Find one field Option' })
|
|
@UseGuards(AdminAuthGuard)
|
|
findOneFiledOption(@Param('id') id: string) {
|
|
return this.fieldOptionService.findById(id);
|
|
}
|
|
|
|
@Patch('admin/entity/field/option/:id')
|
|
@ApiOperation({ summary: 'Update field Option' })
|
|
@UseGuards(AdminAuthGuard)
|
|
@Permissions(PermissionEnum.MANAGE_FORM_BUILDER)
|
|
updateFieldOption(@Param('id') id: string, @Body() dto: UpdateFieldOptionDto) {
|
|
return this.fieldOptionService.update(id, dto);
|
|
}
|
|
|
|
@Delete('admin/entity/field/option/:id')
|
|
@ApiOperation({ summary: 'Renopve field Option' })
|
|
@UseGuards(AdminAuthGuard)
|
|
@Permissions(PermissionEnum.MANAGE_FORM_BUILDER)
|
|
removeFieldOption(@Param('id') id: string) {
|
|
return this.fieldOptionService.remove(id);
|
|
}
|
|
}
|