|
|
|
@@ -9,6 +9,7 @@ import { UserId } from 'src/common/decorators/user-id.decorator';
|
|
|
|
|
import { RestId } from 'src/common/decorators';
|
|
|
|
|
import { FindUsersDto } from '../dto/find-user.dto';
|
|
|
|
|
import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard';
|
|
|
|
|
import { API_HEADER_SLUG } from 'src/common/constants/index';
|
|
|
|
|
|
|
|
|
|
@ApiTags('User')
|
|
|
|
|
@Controller()
|
|
|
|
@@ -18,14 +19,7 @@ export class UsersController {
|
|
|
|
|
@UseGuards(AuthGuard)
|
|
|
|
|
@ApiBearerAuth()
|
|
|
|
|
@ApiOperation({ summary: 'Get the current authenticated user profile' })
|
|
|
|
|
@ApiHeader({
|
|
|
|
|
name: 'X-Slug',
|
|
|
|
|
required: true,
|
|
|
|
|
schema: {
|
|
|
|
|
type: 'string',
|
|
|
|
|
default: 'zhivan',
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
@ApiHeader(API_HEADER_SLUG)
|
|
|
|
|
@Get('public/user/me')
|
|
|
|
|
async getUser(@UserId() userId: string) {
|
|
|
|
|
const user = await this.userService.findById(userId);
|
|
|
|
@@ -34,14 +28,7 @@ export class UsersController {
|
|
|
|
|
@UseGuards(AuthGuard)
|
|
|
|
|
@ApiBearerAuth()
|
|
|
|
|
@ApiOperation({ summary: 'Update the authenticated user profile' })
|
|
|
|
|
@ApiHeader({
|
|
|
|
|
name: 'X-Slug',
|
|
|
|
|
required: true,
|
|
|
|
|
schema: {
|
|
|
|
|
type: 'string',
|
|
|
|
|
default: 'zhivan',
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
@ApiHeader(API_HEADER_SLUG)
|
|
|
|
|
@ApiBody({ type: UpdateUserDto })
|
|
|
|
|
@Patch('public/user/update')
|
|
|
|
|
async updateUser(@UserId() userId: string, @RestId() restId: string, @Body() dto: UpdateUserDto) {
|
|
|
|
@@ -52,14 +39,7 @@ export class UsersController {
|
|
|
|
|
@UseGuards(AuthGuard)
|
|
|
|
|
@ApiBearerAuth()
|
|
|
|
|
@ApiOperation({ summary: 'Get all addresses for the authenticated user' })
|
|
|
|
|
@ApiHeader({
|
|
|
|
|
name: 'X-Slug',
|
|
|
|
|
required: true,
|
|
|
|
|
schema: {
|
|
|
|
|
type: 'string',
|
|
|
|
|
default: 'zhivan',
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
@ApiHeader(API_HEADER_SLUG)
|
|
|
|
|
@ApiOkResponse({ description: 'List of user addresses' })
|
|
|
|
|
@Get('public/user/addresses')
|
|
|
|
|
async getUserAddresses(@UserId() userId: string) {
|
|
|
|
@@ -70,14 +50,7 @@ export class UsersController {
|
|
|
|
|
@UseGuards(AuthGuard)
|
|
|
|
|
@ApiBearerAuth()
|
|
|
|
|
@ApiOperation({ summary: 'Get User Wallet' })
|
|
|
|
|
@ApiHeader({
|
|
|
|
|
name: 'X-Slug',
|
|
|
|
|
required: true,
|
|
|
|
|
schema: {
|
|
|
|
|
type: 'string',
|
|
|
|
|
default: 'zhivan',
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
@ApiHeader(API_HEADER_SLUG)
|
|
|
|
|
@Get('public/user/wallet')
|
|
|
|
|
async getUserWallet(@UserId() userId: string, @RestId() restId: string) {
|
|
|
|
|
const wallet = await this.userService.getUserWallet(userId, restId);
|
|
|
|
@@ -87,14 +60,7 @@ export class UsersController {
|
|
|
|
|
@UseGuards(AuthGuard)
|
|
|
|
|
@ApiBearerAuth()
|
|
|
|
|
@ApiOperation({ summary: 'Create a new address for the authenticated user' })
|
|
|
|
|
@ApiHeader({
|
|
|
|
|
name: 'X-Slug',
|
|
|
|
|
required: true,
|
|
|
|
|
schema: {
|
|
|
|
|
type: 'string',
|
|
|
|
|
default: 'zhivan',
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
@ApiHeader(API_HEADER_SLUG)
|
|
|
|
|
@ApiBody({ type: CreateUserAddressDto })
|
|
|
|
|
@ApiOkResponse({ description: 'Created user address' })
|
|
|
|
|
@Post('public/user/addresses')
|
|
|
|
@@ -109,14 +75,7 @@ export class UsersController {
|
|
|
|
|
@UseGuards(AuthGuard)
|
|
|
|
|
@ApiBearerAuth()
|
|
|
|
|
@ApiOperation({ summary: 'Get a single address by ID for the authenticated user' })
|
|
|
|
|
@ApiHeader({
|
|
|
|
|
name: 'X-Slug',
|
|
|
|
|
required: true,
|
|
|
|
|
schema: {
|
|
|
|
|
type: 'string',
|
|
|
|
|
default: 'zhivan',
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
@ApiHeader(API_HEADER_SLUG)
|
|
|
|
|
@ApiOkResponse({ description: 'User address details' })
|
|
|
|
|
@Get('public/user/addresses/:addressId')
|
|
|
|
|
async getUserAddress(@UserId() userId: string, @Param('addressId') addressId: string) {
|
|
|
|
@@ -127,14 +86,7 @@ export class UsersController {
|
|
|
|
|
@UseGuards(AuthGuard)
|
|
|
|
|
@ApiBearerAuth()
|
|
|
|
|
@ApiOperation({ summary: 'Update an address for the authenticated user' })
|
|
|
|
|
@ApiHeader({
|
|
|
|
|
name: 'X-Slug',
|
|
|
|
|
required: true,
|
|
|
|
|
schema: {
|
|
|
|
|
type: 'string',
|
|
|
|
|
default: 'zhivan',
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
@ApiHeader(API_HEADER_SLUG)
|
|
|
|
|
@ApiBody({ type: UpdateUserAddressDto })
|
|
|
|
|
@ApiOkResponse({ description: 'Updated user address' })
|
|
|
|
|
@Patch('public/user/addresses/:addressId')
|
|
|
|
@@ -150,14 +102,7 @@ export class UsersController {
|
|
|
|
|
@UseGuards(AuthGuard)
|
|
|
|
|
@ApiBearerAuth()
|
|
|
|
|
@ApiOperation({ summary: 'Delete an address for the authenticated user' })
|
|
|
|
|
@ApiHeader({
|
|
|
|
|
name: 'X-Slug',
|
|
|
|
|
required: true,
|
|
|
|
|
schema: {
|
|
|
|
|
type: 'string',
|
|
|
|
|
default: 'zhivan',
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
@ApiHeader(API_HEADER_SLUG)
|
|
|
|
|
@ApiOkResponse({ description: 'Address deleted successfully' })
|
|
|
|
|
@Delete('public/user/addresses/:addressId')
|
|
|
|
|
async deleteUserAddress(@UserId() userId: string, @Param('addressId') addressId: string) {
|
|
|
|
@@ -168,14 +113,7 @@ export class UsersController {
|
|
|
|
|
@UseGuards(AuthGuard)
|
|
|
|
|
@ApiBearerAuth()
|
|
|
|
|
@ApiOperation({ summary: 'Set an address as default for the authenticated user' })
|
|
|
|
|
@ApiHeader({
|
|
|
|
|
name: 'X-Slug',
|
|
|
|
|
required: true,
|
|
|
|
|
schema: {
|
|
|
|
|
type: 'string',
|
|
|
|
|
default: 'zhivan',
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
@ApiHeader(API_HEADER_SLUG)
|
|
|
|
|
@ApiOkResponse({ description: 'Address set as default' })
|
|
|
|
|
@Patch('public/user/addresses/:addressId/default')
|
|
|
|
|
async setDefaultAddress(@UserId() userId: string, @Param('addressId') addressId: string) {
|
|
|
|
@@ -183,6 +121,19 @@ export class UsersController {
|
|
|
|
|
return address;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@UseGuards(AuthGuard)
|
|
|
|
|
@ApiBearerAuth()
|
|
|
|
|
@ApiOperation({ summary: 'Convert user score (points) to wallet balance' })
|
|
|
|
|
@ApiHeader(API_HEADER_SLUG)
|
|
|
|
|
@Post('public/user/convert-score-to-wallet')
|
|
|
|
|
async convertScoreToWallet(@UserId() userId: string, @RestId() restId: string) {
|
|
|
|
|
await this.userService.convertScoreToWallet(userId, restId);
|
|
|
|
|
return {
|
|
|
|
|
message: 'Score converted to wallet successfully',
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@UseGuards(AdminAuthGuard)
|
|
|
|
|
@ApiBearerAuth()
|
|
|
|
|
@ApiOperation({ summary: 'Get paginated list of restuarant users with filters' })
|
|
|
|
@@ -196,22 +147,5 @@ export class UsersController {
|
|
|
|
|
return this.userService.findAll(restId, query);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@UseGuards(AuthGuard)
|
|
|
|
|
@ApiBearerAuth()
|
|
|
|
|
@ApiOperation({ summary: 'Convert user score (points) to wallet balance' })
|
|
|
|
|
@ApiHeader({
|
|
|
|
|
name: 'X-Slug',
|
|
|
|
|
required: true,
|
|
|
|
|
schema: {
|
|
|
|
|
type: 'string',
|
|
|
|
|
default: 'zhivan',
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
@Post('public/user/convert-score-to-wallet')
|
|
|
|
|
async convertScoreToWallet(@UserId() userId: string, @RestId() restId: string) {
|
|
|
|
|
await this.userService.convertScoreToWallet(userId, restId);
|
|
|
|
|
return {
|
|
|
|
|
message: 'Score converted to wallet successfully',
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|