Initial BizOne portal setup
This commit is contained in:
86
backend/src/contacts/contacts.controller.ts
Normal file
86
backend/src/contacts/contacts.controller.ts
Normal file
@ -0,0 +1,86 @@
|
||||
import { Body, Controller, Delete, Get, Param, Patch, Post, Query, Req, Res, UseGuards } from '@nestjs/common';
|
||||
import type { Request } from 'express';
|
||||
import type { Response } from 'express';
|
||||
import { AuthenticatedUser } from '../auth/auth.types';
|
||||
import { ContactsService } from './contacts.service';
|
||||
import { CreateContactDto } from '../dto/create-contact.dto';
|
||||
import { UpdateContactDto } from '../dto/update-contact.dto';
|
||||
import { AuthGuard } from '../common/auth.guard';
|
||||
|
||||
@UseGuards(AuthGuard)
|
||||
@Controller('contacts')
|
||||
export class ContactsController {
|
||||
constructor(private readonly contactsService: ContactsService) {}
|
||||
|
||||
@Get()
|
||||
findAll(
|
||||
@Query('page') page?: string,
|
||||
@Query('limit') limit?: string,
|
||||
@Query('search') search?: string,
|
||||
@Query('status') status?: string,
|
||||
@Query('tag') tag?: string,
|
||||
) {
|
||||
return this.contactsService.findAll({
|
||||
page: Number(page || '1'),
|
||||
limit: Number(limit || '10'),
|
||||
search,
|
||||
status,
|
||||
tag,
|
||||
});
|
||||
}
|
||||
|
||||
@Get('export')
|
||||
async exportContacts(
|
||||
@Req() request: Request & { user: AuthenticatedUser },
|
||||
@Res() response: Response,
|
||||
@Query('search') search?: string,
|
||||
@Query('status') status?: string,
|
||||
@Query('tag') tag?: string,
|
||||
) {
|
||||
const result = await this.contactsService.exportContacts(
|
||||
{
|
||||
page: 1,
|
||||
limit: 100000,
|
||||
search,
|
||||
status,
|
||||
tag,
|
||||
},
|
||||
request.user,
|
||||
request.ip,
|
||||
);
|
||||
|
||||
response.setHeader('Content-Type', result.contentType);
|
||||
response.setHeader('Content-Disposition', `attachment; filename="${result.fileName}"`);
|
||||
response.send(result.buffer);
|
||||
}
|
||||
|
||||
@Get(':id')
|
||||
findOne(@Param('id') id: string) {
|
||||
return this.contactsService.findOne(id);
|
||||
}
|
||||
|
||||
@Post()
|
||||
create(
|
||||
@Req() request: Request & { user: AuthenticatedUser },
|
||||
@Body() dto: CreateContactDto,
|
||||
) {
|
||||
return this.contactsService.create(dto, request.user, request.ip);
|
||||
}
|
||||
|
||||
@Patch(':id')
|
||||
update(
|
||||
@Req() request: Request & { user: AuthenticatedUser },
|
||||
@Param('id') id: string,
|
||||
@Body() dto: UpdateContactDto,
|
||||
) {
|
||||
return this.contactsService.update(id, dto, request.user, request.ip);
|
||||
}
|
||||
|
||||
@Delete(':id')
|
||||
remove(
|
||||
@Req() request: Request & { user: AuthenticatedUser },
|
||||
@Param('id') id: string,
|
||||
) {
|
||||
return this.contactsService.remove(id, request.user, request.ip);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user