diff --git a/backend/imk-backend/src/admin/admin.controller.ts b/backend/imk-backend/src/admin/admin.controller.ts index e373a9a..0d0beee 100644 --- a/backend/imk-backend/src/admin/admin.controller.ts +++ b/backend/imk-backend/src/admin/admin.controller.ts @@ -1,118 +1,3 @@ -// import { -// Controller, -// Get, -// Post, -// Body, -// Param, -// Put, -// UseInterceptors, -// UploadedFile, -// ParseIntPipe, -// UseGuards, -// } from '@nestjs/common'; -// import { FileInterceptor } from '@nestjs/platform-express'; -// import { AdminService } from './admin.service'; -// //import { CreateDocumentDto } from '../dto/create-document.dto'; -// import { UpdateDocumentDto } from '../dto/update-document.dto'; -// import { AdminGuard } from '../auth/admin.guard'; -// import { JwtAuthGuard } from '../auth/jwt-auth.guard'; -// import { CreateUserDto } from '../dto/create-user.dto'; -// import { S3Service } from 'src/s3/s3.service'; -// import { PrismaService } from 'src/prisma/prisma.service'; - -// @Controller('admin') -// @UseGuards(JwtAuthGuard, AdminGuard) -// export class AdminController { -// constructor( -// private readonly adminService: AdminService, -// private readonly s3Service: S3Service, -// private readonly prisma: PrismaService, -// ) {} - -// @Get('documents') -// getAllDocuments() { -// return this.adminService.getAllDocuments(); -// } - -// @Put('documents/:id') -// @UseInterceptors(FileInterceptor('file')) -// updateDocument( -// @Param('id', ParseIntPipe) id: number, -// @Body() updateDocumentDto: UpdateDocumentDto, -// @UploadedFile() file?: Express.Multer.File, -// ) { -// return this.adminService.updateDocument(id, updateDocumentDto, file); -// } - -// @Get('users') -// getAllUsers() { -// return this.adminService.getAllUsers(); -// } -// @Post('test-document') -// async testDocumentCreation() { -// try { -// const document = await this.prisma.document.create({ -// data: { -// title: 'Test Document', -// s3Key: 'test-key', -// status: 'completed', -// sharedWithId: 2, // ID of 'pero' user -// }, -// }); -// return document; -// } catch (error) { -// console.error('Test document creation error:', error); -// throw error; -// } -// } - -// @Post('users') -// async createUser(@Body() createUserDto: CreateUserDto) { -// return this.adminService.createUser(createUserDto); -// } - -// @Post('documents/:id/share') -// async shareDocument( -// @Param('id') id: string, -// @Body() { userId }: { userId: number }, -// ) { -// return this.adminService.shareDocument(+id, userId); -// } - -// @Put('documents/:id/status') -// async updateDocumentStatus( -// @Param('id') id: string, -// @Body() { status }: { status: string }, -// ) { -// return this.adminService.updateDocumentStatus(+id, status); -// } - -// @Post('documents') -// @UseInterceptors(FileInterceptor('file')) -// async uploadDocument( -// @UploadedFile() file: Express.Multer.File, -// @Body('title') title: string, -// @Body('sharedWithId') sharedWithId: number, -// @Body('uploadedById') uploadedById: number -// ) { -// const document = await this.adminService.uploadDocument( -// file, -// title, -// sharedWithId, -// uploadedById // Add this missing parameter -// ); -// return document; -// } -// @Get('test-s3-connection') -// async testS3Connection() { -// const isConnected = await this.s3Service.testConnection(); -// if (isConnected) { -// return { message: 'Successfully connected to S3' }; -// } else { -// return { message: 'Failed to connect to S3' }; -// } -// } -// } import { Controller, Get, @@ -160,59 +45,41 @@ export class AdminController { } @Post('documents') -@UseInterceptors(FileInterceptor('file')) -async uploadDocument( - @UploadedFile() file: Express.Multer.File, - @Body('title') title: string, - @Body('sharedWithId') sharedWithId: string, // Accept as string first - @Body('uploadedById') uploadedById: string // Accept as string first -) { - if (!sharedWithId || !uploadedById) { - throw new BadRequestException('sharedWithId and uploadedById are required'); - } + @UseInterceptors(FileInterceptor('file')) + async uploadDocument( + @UploadedFile() file: Express.Multer.File, + @Body('title') title: string, + @Body('sharedWithId') sharedWithId: string, // Accept as string first + @Body('uploadedById') uploadedById: string // Accept as string first + ) { + if (!sharedWithId || !uploadedById) { + throw new BadRequestException('sharedWithId and uploadedById are required'); + } - // Parse the string values to numbers - const parsedSharedWithId = parseInt(sharedWithId, 10); - const parsedUploadedById = parseInt(uploadedById, 10); + // Parse the string values to numbers + const parsedSharedWithId = parseInt(sharedWithId, 10); + const parsedUploadedById = parseInt(uploadedById, 10); - // Validate that the parsing was successful - if (isNaN(parsedSharedWithId) || isNaN(parsedUploadedById)) { - throw new BadRequestException('sharedWithId and uploadedById must be valid numbers'); - } + // Validate that the parsing was successful + if (isNaN(parsedSharedWithId) || isNaN(parsedUploadedById)) { + throw new BadRequestException('sharedWithId and uploadedById must be valid numbers'); + } - const document = await this.adminService.uploadDocument( - file, - title, - parsedSharedWithId, - parsedUploadedById - ); - return document; - } + + const document = await this.adminService.uploadDocument( + file, + title, + parsedSharedWithId, + parsedUploadedById + ); + return document; + } @Get('users') getAllUsers() { return this.adminService.getAllUsers(); } - // @Post('test-document') - // async testDocumentCreation() { - // try { - // const document = await this.prisma.document.create({ - // data: { - // title: 'Test Document', - // s3Key: 'test-key', - // status: 'completed', - // sharedWith: { - // connect: { id: 2 } // ID of 'pero' user - // } - // }, - // }); - // return document; - // } catch (error) { - // console.error('Test document creation error:', error); - // throw error; - // } - // } @Post('users') async createUser(@Body() createUserDto: CreateUserDto) { @@ -245,4 +112,4 @@ async uploadDocument( // return { message: 'Failed to connect to S3' }; // } // } -} \ No newline at end of file +} diff --git a/backend/imk-backend/src/admin/admin.service.ts b/backend/imk-backend/src/admin/admin.service.ts index a337d54..9e2e976 100644 --- a/backend/imk-backend/src/admin/admin.service.ts +++ b/backend/imk-backend/src/admin/admin.service.ts @@ -121,7 +121,9 @@ export class AdminService { title: string, sharedWithId: number, uploadedById: number - ) { + ) + + { const s3Key = await this.s3Service.uploadFile(file, 'documents'); return this.prisma.document.create({ @@ -154,4 +156,5 @@ export class AdminService { }, }); } -} \ No newline at end of file + +} diff --git a/backend/imk-backend/src/documents/documents.service.ts b/backend/imk-backend/src/documents/documents.service.ts index 48b9a3d..5806d42 100644 --- a/backend/imk-backend/src/documents/documents.service.ts +++ b/backend/imk-backend/src/documents/documents.service.ts @@ -2,14 +2,17 @@ import { Injectable, Logger, NotFoundException, ForbiddenException } from '@nest import { PrismaService } from '../prisma/prisma.service'; import { S3Service } from '../s3/s3.service'; import { Document, User, Prisma } from '@prisma/client'; +import { EmailService } from '../email/email.service' @Injectable() export class DocumentsService { private readonly logger = new Logger(DocumentsService.name); + //private readonly Logger = new Logger(DocumentsService.user); constructor( private readonly prisma: PrismaService, - private readonly s3Service: S3Service + private readonly s3Service: S3Service, + private readonly emailService: EmailService ) {} async findDocumentByS3Key(s3Key: string) { @@ -116,5 +119,7 @@ export class DocumentsService { }, }, }); + console.log(title, sharedWithId, uploadedById) + } }