Initial BizOne portal setup

This commit is contained in:
2026-05-11 11:36:33 +07:00
commit 57017dd397
249 changed files with 41305 additions and 0 deletions

View 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);
}
}