File

src/module/scheincriteria/scheincriteria.controller.ts

Prefix

scheincriteria

Index

Methods

Methods

Async createCriteria
createCriteria(dto: ScheinCriteriaDTO)
Decorators :
@Post()
@UseGuards(HasRoleGuard)
@Roles(Role.ADMIN, Role.EMPLOYEE)
@UsePipes(ValidationPipe)
Parameters :
Name Type Optional
dto ScheinCriteriaDTO No
Async deleteCriteria
deleteCriteria(id: string)
Decorators :
@Delete('/:id')
@HttpCode(HttpStatus.NO_CONTENT)
@UseGuards(HasRoleGuard)
@Roles(Role.ADMIN, Role.EMPLOYEE)
Parameters :
Name Type Optional
id string No
Returns : Promise<void>
Async getAllCriterias
getAllCriterias()
Decorators :
@Get()
@UseGuards(HasRoleGuard)
@Roles(Role.ADMIN, Role.EMPLOYEE, Role.TUTOR)
Async getFormData
getFormData()
Decorators :
@Get('/form')
@UseGuards(HasRoleGuard)
@Roles(Role.ADMIN, Role.EMPLOYEE)
Async getInformation
getInformation(id: string)
Decorators :
@Get('/:id/info')
@UseGuards(HasRoleGuard)
Parameters :
Name Type Optional
id string No
Async getResultOfStudent
getResultOfStudent(id: string)
Decorators :
@Get('/student/:id')
@UseGuards(StudentGuard)
Parameters :
Name Type Optional
id string No
Async getResultsOfAllStudents
getResultsOfAllStudents()
Decorators :
@Get('/student')
@UseGuards(HasRoleGuard)
@Roles(Role.ADMIN, Role.EMPLOYEE)
Async getResultsOfTutorial
getResultsOfTutorial(id: string)
Decorators :
@Get('/tutorial/:id')
@UseGuards(TutorialGuard)
Parameters :
Name Type Optional
id string No
Async updateCriteria
updateCriteria(id: string, dto: ScheinCriteriaDTO)
Decorators :
@Patch('/:id')
@UseGuards(HasRoleGuard)
@Roles(Role.ADMIN, Role.EMPLOYEE)
@UsePipes(ValidationPipe)
Parameters :
Name Type Optional
id string No
dto ScheinCriteriaDTO No
import {
    Body,
    Controller,
    Delete,
    Get,
    HttpCode,
    HttpStatus,
    Param,
    Patch,
    Post,
    UseGuards,
    UsePipes,
    ValidationPipe,
} from '@nestjs/common';
import { FormDataResponse } from 'shared/model/FormTypes';
import { Role } from 'shared/model/Role';
import {
    CriteriaInformation,
    IScheinCriteria,
    ScheinCriteriaSummary,
    ScheincriteriaSummaryByStudents,
} from 'shared/model/ScheinCriteria';
import { Roles } from '../../guards/decorators/roles.decorator';
import { HasRoleGuard } from '../../guards/has-role.guard';
import { StudentGuard } from '../../guards/student.guard';
import { TutorialGuard } from '../../guards/tutorial.guard';
import { ScheinCriteriaDTO } from './scheincriteria.dto';
import { ScheincriteriaService } from './scheincriteria.service';

@Controller('scheincriteria')
export class ScheincriteriaController {
    constructor(private readonly scheincriteriaService: ScheincriteriaService) {}

    @Get()
    @UseGuards(HasRoleGuard)
    @Roles(Role.ADMIN, Role.EMPLOYEE, Role.TUTOR)
    async getAllCriterias(): Promise<IScheinCriteria[]> {
        const scheincriterias = await this.scheincriteriaService.findAll();

        return scheincriterias.map((criteria) => criteria.toDTO());
    }

    @Post()
    @UseGuards(HasRoleGuard)
    @Roles(Role.ADMIN, Role.EMPLOYEE)
    @UsePipes(ValidationPipe)
    async createCriteria(@Body() dto: ScheinCriteriaDTO): Promise<IScheinCriteria> {
        return await this.scheincriteriaService.create(dto);
    }

    @Patch('/:id')
    @UseGuards(HasRoleGuard)
    @Roles(Role.ADMIN, Role.EMPLOYEE)
    @UsePipes(ValidationPipe)
    async updateCriteria(
        @Param('id') id: string,
        @Body() dto: ScheinCriteriaDTO
    ): Promise<IScheinCriteria> {
        return await this.scheincriteriaService.update(id, dto);
    }

    @Delete('/:id')
    @HttpCode(HttpStatus.NO_CONTENT)
    @UseGuards(HasRoleGuard)
    @Roles(Role.ADMIN, Role.EMPLOYEE)
    async deleteCriteria(@Param('id') id: string): Promise<void> {
        await this.scheincriteriaService.delete(id);
    }

    @Get('/:id/info')
    @UseGuards(HasRoleGuard)
    async getInformation(@Param('id') id: string): Promise<CriteriaInformation> {
        return await this.scheincriteriaService.getInfoAboutCriteria(id);
    }

    @Get('/form')
    @UseGuards(HasRoleGuard)
    @Roles(Role.ADMIN, Role.EMPLOYEE)
    async getFormData(): Promise<FormDataResponse> {
        return await this.scheincriteriaService.getFormData();
    }

    @Get('/student')
    @UseGuards(HasRoleGuard)
    @Roles(Role.ADMIN, Role.EMPLOYEE)
    async getResultsOfAllStudents(): Promise<ScheincriteriaSummaryByStudents> {
        return await this.scheincriteriaService.getResultsOfAllStudents();
    }

    @Get('/student/:id')
    @UseGuards(StudentGuard)
    async getResultOfStudent(@Param('id') id: string): Promise<ScheinCriteriaSummary> {
        return await this.scheincriteriaService.getResultOfStudent(id);
    }

    @Get('/tutorial/:id')
    @UseGuards(TutorialGuard)
    async getResultsOfTutorial(@Param('id') id: string): Promise<ScheincriteriaSummaryByStudents> {
        return await this.scheincriteriaService.getResultsOfTutorial(id);
    }
}

results matching ""

    No results matching ""