mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-17 21:30:31 +00:00
141 lines
3.4 KiB
TypeScript
141 lines
3.4 KiB
TypeScript
import {
|
|
Body,
|
|
Controller,
|
|
Delete,
|
|
Get,
|
|
Param,
|
|
Post,
|
|
Put,
|
|
Query,
|
|
} from '@nestjs/common';
|
|
import { ApiOperation, ApiTags, ApiResponse } from '@nestjs/swagger';
|
|
import { UsersApplication } from './Users.application';
|
|
import { EditUserDto } from './dtos/EditUser.dto';
|
|
import { ApiCommonHeaders } from '@/common/decorators/ApiCommonHeaders';
|
|
|
|
@Controller('users')
|
|
@ApiTags('Users')
|
|
@ApiCommonHeaders()
|
|
export class UsersController {
|
|
constructor(private readonly usersApplication: UsersApplication) {}
|
|
|
|
/**
|
|
* Edit details of the given user.
|
|
*/
|
|
@Put(':id')
|
|
@ApiOperation({ summary: 'Edit details of the given user.' })
|
|
@ApiResponse({
|
|
status: 200,
|
|
description: 'The user has been edited successfully.',
|
|
schema: {
|
|
example: { id: 1, message: 'The user has been edited successfully.' },
|
|
},
|
|
})
|
|
async editUser(
|
|
@Param('id') userId: number,
|
|
@Body() editUserDTO: EditUserDto,
|
|
) {
|
|
await this.usersApplication.editUser(userId, editUserDTO);
|
|
|
|
return {
|
|
id: userId,
|
|
message: 'The user has been edited successfully.',
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Soft deleting the given user.
|
|
*/
|
|
@Delete(':id')
|
|
@ApiOperation({ summary: 'Soft deleting the given user.' })
|
|
@ApiResponse({
|
|
status: 200,
|
|
description: 'The user has been deleted successfully.',
|
|
schema: {
|
|
example: { id: 1, message: 'The user has been deleted successfully.' },
|
|
},
|
|
})
|
|
async deleteUser(@Param('id') userId: number) {
|
|
await this.usersApplication.deleteUser(userId);
|
|
|
|
return {
|
|
id: userId,
|
|
message: 'The user has been deleted successfully.',
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Retrieve user details of the given user id.
|
|
*/
|
|
@Get(':id')
|
|
@ApiOperation({ summary: 'Retrieve user details of the given user id.' })
|
|
@ApiResponse({
|
|
status: 200,
|
|
description: 'User details retrieved successfully.',
|
|
})
|
|
async getUser(@Param('id') userId: number) {
|
|
return this.usersApplication.getUser(userId);
|
|
}
|
|
|
|
/**
|
|
* Retrieve the list of users.
|
|
*/
|
|
@Get()
|
|
@ApiOperation({ summary: 'Retrieve the list of users.' })
|
|
@ApiResponse({
|
|
status: 200,
|
|
description: 'List of users retrieved successfully.',
|
|
})
|
|
async listUsers(
|
|
@Query('page_size') pageSize?: number,
|
|
@Query('page') page?: number,
|
|
) {
|
|
return this.usersApplication.getUsers();
|
|
}
|
|
|
|
/**
|
|
* Activate the given user.
|
|
*/
|
|
@Put(':id/activate')
|
|
@ApiOperation({ summary: 'Activate the given user.' })
|
|
@ApiResponse({
|
|
status: 200,
|
|
description: 'The user has been activated successfully.',
|
|
schema: {
|
|
example: { id: 1, message: 'The user has been activated successfully.' },
|
|
},
|
|
})
|
|
async activateUser(@Param('id') userId: number) {
|
|
await this.usersApplication.activateUser(userId);
|
|
|
|
return {
|
|
id: userId,
|
|
message: 'The user has been activated successfully.',
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Inactivate the given user.
|
|
*/
|
|
@Put(':id/inactivate')
|
|
@ApiOperation({ summary: 'Inactivate the given user.' })
|
|
@ApiResponse({
|
|
status: 200,
|
|
description: 'The user has been inactivated successfully.',
|
|
schema: {
|
|
example: {
|
|
id: 1,
|
|
message: 'The user has been inactivated successfully.',
|
|
},
|
|
},
|
|
})
|
|
async inactivateUser(@Param('id') userId: number) {
|
|
await this.usersApplication.inactivateUser(userId);
|
|
|
|
return {
|
|
id: userId,
|
|
message: 'The user has been inactivated successfully.',
|
|
};
|
|
}
|
|
}
|