File

src/controller/1.0.0/file.controller.ts

Prefix

1.0.0/files

Index

Methods

Methods

Async deleteFile
deleteFile(params: DeleteFileDTO)
Decorators :
@UseGuards(undefined, RolesGuard)
@Delete('/delete-file')
Parameters :
Name Type Optional
params DeleteFileDTO No
Returns : {}
Async deleteFileByFileIdAndCourseId
deleteFileByFileIdAndCourseId(fileId: number, courseId: number)
Decorators :
@UseGuards(undefined, RolesGuard)
@Delete('/delete-file-by-id/:fileId/:courseId')
Parameters :
Name Type Optional
fileId number No
courseId number No
Returns : {}
Async deleteFileByID
deleteFileByID(fileId: number)
Decorators :
@UseGuards(undefined, RolesGuard)
@Delete('/delete-file-by-id/:fileId')
Parameters :
Name Type Optional
fileId number No
Returns : {}
Async downloadPitcure
downloadPitcure(filename: string, res)
Decorators :
@Get('get-by-filename')
Parameters :
Name Type Optional
filename string No
res No
Returns : Promise<any>
Async genareateAllUserExamPDF
genareateAllUserExamPDF(req: Request, params: any)
Decorators :
@Post('generate-all-user-exam-pdf')
Parameters :
Name Type Optional
req Request No
params any No
Returns : {}
Async genareatePDF
genareatePDF(req: Request, params: QrPdfGenerateDTO)
Decorators :
@Post('generate-pdf')
Parameters :
Name Type Optional
req Request No
params QrPdfGenerateDTO No
Returns : {}
Async generateCourseDocumentationPdf
generateCourseDocumentationPdf(id: number)
Decorators :
@Get('get-course-documentation/:id')
Parameters :
Name Type Optional
id number No
Returns : {}
Async generateCourseDocumentationPdfToCMS
generateCourseDocumentationPdfToCMS(id: number)
Decorators :
@Get('get-course-documentation-to-cms/:id')
Parameters :
Name Type Optional
id number No
Returns : {}
Async getAllFiles
getAllFiles()
Decorators :
@Get()
Returns : {}
Async getFileCourse
getFileCourse(fileId: number)
Decorators :
@Get('get-file-courses/:fileId')
Parameters :
Name Type Optional
fileId number No
Returns : {}
Async getFilesByCourseId
getFilesByCourseId(courseId: number)
Decorators :
@Get('get-file-list-by-course-id/:courseId')
Parameters :
Name Type Optional
courseId number No
Returns : {}
Async servePDF
servePDF(filename: string, fileOutName: string, res)
Decorators :
@Get('get-pdf')
Parameters :
Name Type Optional
filename string No
fileOutName string No
res No
Returns : Promise<any>
Async uploadFile
uploadFile(files, params: any)
Decorators :
@UseGuards(undefined, RolesGuard)
@Post('upload-file')
@UseInterceptors(undefined)
Parameters :
Name Type Optional
files No
params any No
Returns : {}
Async uploadFileToCourse
uploadFileToCourse(files, courseId: number, params: CreateFileCheckGlobalDTO)
Decorators :
@UseGuards(undefined, RolesGuard)
@Post('upload-file/:courseId')
@UseInterceptors(undefined)
Parameters :
Name Type Optional
files No
courseId number No
params CreateFileCheckGlobalDTO No
Returns : {}
Async uploadPicture
uploadPicture(upload)
Decorators :
@Post('upload-image')
@UseInterceptors(undefined)
Parameters :
Name Optional
upload No
Returns : {}
Async uploadPictureToCourse
uploadPictureToCourse(upload)
Decorators :
@Post('upload-image/:id')
@UseInterceptors(undefined)
Parameters :
Name Optional
upload No
Returns : {}
Async uploadPictureToCourseDocument
uploadPictureToCourseDocument(file, id)
Decorators :
@Post('upload-image-to-ducument/:id')
@UseInterceptors(undefined)
Parameters :
Name Optional
file No
id No
Returns : {}
import {
  Body,
  Controller,
  Delete,
  Get,
  Param,
  Post,
  Query,
  Request,
  Res,
  UploadedFiles,
  UseGuards,
  UseInterceptors,
} from "@nestjs/common";
import { AuthGuard } from "@nestjs/passport";
import { FileFieldsInterceptor } from "@nestjs/platform-express";
import { diskStorage } from "multer";
import { RolesGuard } from "src/module/auth/guard/roles.guard";
import { FIleService100 } from "src/service/1.0.0/file-descriptor.service";
import { uid } from "uid";
import * as fs from "fs";
import * as path from "path";
import { FIleMissingException } from "src/exception/file/file-missing.exception";
import { DeleteFileDTO } from "src/dto/1.0.0/file/delete-file.dto";
import { QrPdfGenerateDTO } from "src/dto/1.0.0/file/qr-pdf-generate.dto";
import { CreateFileCheckGlobalDTO } from "src/dto/1.0.0/file/create-file-check-global.dto";
import { NotSupportedFileException } from "src/exception/file/not-supported-file.exception";

export const editFileName = (req, file, callback) => {
  if (file !== undefined) {
    let fileExtName = path.extname(file.originalname);
    const randomName =
      uid(16) + Math.round(new Date().getTime() / 1000) + fileExtName;
    callback(null, `${randomName}`);
  }
};
export const editFileNamePicure = (req, file, callback) => {
  if (file !== undefined) {
    let fileExtName = path.extname(file.originalname);
    const randomName =
      uid(16) + Math.round(new Date().getTime() / 1000) + fileExtName;
    callback(null, `${randomName}`);
  }
};
export const fileFileFilter = (req, file, callback) => {
  if (
    file.fieldname === "file" &&
    !file.originalname.match(
      /\.(png|jpg|jpeg|bmp|mp4|mp3|wav|fbx|obj|gltf|stl|ply|3mf|zip)$/
    )
  ) {
    return callback(new NotSupportedFileException(), false);
  }
  callback(null, true);
};

@Controller("1.0.0/files")
export class FileController100 {
  constructor(private readonly fileService: FIleService100) {}

  @Get()
  async getAllFiles() {
    return await this.fileService.getAllFiles();
  }
  @Get("get-by-filename")
  async downloadPitcure(
    @Query("filename") filename: string,
    @Res() res
  ): Promise<any> {
    if (
      fs.existsSync(
        path.resolve(__dirname, "../../../files/uploadedFiles", filename)
      ) &&
      fs
        .statSync(
          path.resolve(__dirname, "../../../files/uploadedFiles", filename)
        )
        .isFile()
    ) {
      res.attachment(filename);
      res.status(200);
      res.sendFile(filename, {
        root: path.resolve(__dirname, "../../../files/uploadedFiles"),
      });
    } else {
      throw new FIleMissingException();
    }
  }

  @Get("get-file-list-by-course-id/:courseId")
  async getFilesByCourseId(@Param("courseId") courseId: number) {
    const files = await this.fileService.getFilesByCourseId(courseId);
    return {
      files: files,
    };
  }

  //FILE feltöltése közvetlenül a kurzushoz.
  @UseGuards(AuthGuard("jwt"), RolesGuard)
  @Post("upload-file/:courseId")
  @UseInterceptors(
    FileFieldsInterceptor([{ name: "file", maxCount: 1 }], {
      storage: diskStorage({
        destination: "./files/uploadedFiles/",
        filename: editFileName,
      }),
    })
  )
  async uploadFileToCourse(
    @UploadedFiles() files,
    @Param("courseId") courseId: number,
    @Body() params: CreateFileCheckGlobalDTO
  ) {
    const response = await this.fileService.uploadFileToCourse(
      courseId,
      files,
      params
    );
    return response;
  }

  @UseGuards(AuthGuard("jwt"), RolesGuard)
  @Post("upload-file")
  @UseInterceptors(
    FileFieldsInterceptor([{ name: "file" }], {
      storage: diskStorage({
        destination: "./files/uploadedFiles/",
        filename: editFileName,
      }),
      fileFilter: fileFileFilter,
    })
  )
  async uploadFile(
    @UploadedFiles() files,
    @Body()
    params: any
  ) {
    const response = await this.fileService.uploadFiles(files, params.tag);
    return response;
  }
  // @UseGuards(AuthGuard("jwt"), RolesGuard)
  @Post("upload-image")
  @UseInterceptors(
    FileFieldsInterceptor([{ name: "upload" }], {
      storage: diskStorage({
        destination: "./files/uploadedFiles/",
        filename: editFileNamePicure,
      }),
      fileFilter: fileFileFilter,
    })
  )
  async uploadPicture(@UploadedFiles() upload) {
    return {
      uploaded: true,
      url:
        process.env.BASE_URL +
        "1.0.0/files/get-by-filename?filename=" +
        upload.upload[0].filename,
    };
  }
  @Post("upload-image/:id")
  @UseInterceptors(
    FileFieldsInterceptor([{ name: "upload" }], {
      storage: diskStorage({
        destination: "./files/uploadedFiles/",
        filename: editFileNamePicure,
      }),
      fileFilter: fileFileFilter,
    })
  )
  async uploadPictureToCourse(@UploadedFiles() upload) {
    return {
      uploaded: true,
      url:
        process.env.BASE_URL +
        "1.0.0/files/get-by-filename?filename=" +
        upload.upload[0].filename,
    };
  }
  @Post("upload-image-to-ducument/:id")
  @UseInterceptors(
    FileFieldsInterceptor([{ name: "file" }], {
      storage: diskStorage({
        destination: "./files/uploadedFiles/",
        filename: editFileNamePicure,
      }),
      fileFilter: fileFileFilter,
    })
  )
  async uploadPictureToCourseDocument(@UploadedFiles() file, @Param("id") id) {
    await this.fileService.updateDocumentWithPicture(file, id);
    return {
      success: true,
    };
  }

  @UseGuards(AuthGuard("jwt"), RolesGuard)
  @Delete("/delete-file")
  async deleteFile(@Body() params: DeleteFileDTO) {
    return await this.fileService.deleteFile(params);
  }
  @UseGuards(AuthGuard("jwt"), RolesGuard)
  @Delete("/delete-file-by-id/:fileId")
  async deleteFileByID(@Param("fileId") fileId: number) {
    return await this.fileService.deleteFileByFileId(fileId);
  }
  @UseGuards(AuthGuard("jwt"), RolesGuard)
  @Delete("/delete-file-by-id/:fileId/:courseId")
  async deleteFileByFileIdAndCourseId(
    @Param("fileId") fileId: number,
    @Param("courseId") courseId: number
  ) {
    return await this.fileService.deleteFileByFileIdAndCourseId(
      fileId,
      courseId
    );
  }

  @Post("generate-pdf")
  async genareatePDF(
    @Request() req: Request,
    @Body() params: QrPdfGenerateDTO
  ) {
    const file = await this.fileService.generateAndSavePDF(params);
    return file;
  }
  @Post("generate-all-user-exam-pdf")
  async genareateAllUserExamPDF(@Request() req: Request, @Body() params: any) {
    const file = await this.fileService.genareateAllUserExamPDF(params);
    return file;
  }

  @Get("get-pdf")
  async servePDF(
    @Query("filename") filename: string,
    @Query("fileOutName") fileOutName: string,
    @Res() res
  ): Promise<any> {
    if (
      fs.existsSync(path.resolve(__dirname, "../../../files/pdf", filename)) &&
      fs
        .statSync(path.resolve(__dirname, "../../../files/pdf", filename))
        .isFile()
    ) {
      res.attachment(fileOutName ? fileOutName : filename);
      res.status(200);
      res.sendFile(filename, {
        root: path.resolve(__dirname, "../../../files/pdf"),
      });
    } else {
      throw new FIleMissingException();
    }
  }
  @Get("get-file-courses/:fileId")
  async getFileCourse(@Param("fileId") fileId: number) {
    const courses = await this.fileService.getCoursesByFile(fileId);
    return courses;
  }

  @Get("get-course-documentation/:id")
  async generateCourseDocumentationPdf(@Param("id") id: number) {
    const pdfUrl = await this.fileService.generateCourseDocumentationPDF(id);
    return pdfUrl;
  }
  @Get("get-course-documentation-to-cms/:id")
  async generateCourseDocumentationPdfToCMS(@Param("id") id: number) {
    const data = await this.fileService.generateCourseDocumentationCMS(id);
    return data;
  }
}

result-matching ""

    No results matching ""