| import { |
| Body, |
| Controller, |
| Get, |
| HttpStatus, |
| Patch, |
| Post, |
| Query, |
| Req, |
| Res, |
| UseGuards, |
| } from '@nestjs/common'; |
| import { Response } from 'express'; |
| import { CommonServices } from '../shared/common.service'; |
| import { ActivityService } from './activity.service'; |
| import { JwtAuthGuard } from '../auth/jwt-auth.guard'; |
| import { PropertyService } from '../property/property.service'; |
|
|
| @Controller('activity') |
| export class ActivityController extends CommonServices { |
| constructor( |
| private readonly activityService: ActivityService, |
| private readonly propertyService: PropertyService, |
| ) { |
| super(); |
| } |
|
|
| @Post('create') |
| |
| async createActivity(@Body() body: any, @Res() res: Response, @Req() req) { |
| try { |
| |
| |
| |
| |
| const activity = await this.activityService.sharedCreate(body); |
|
|
| |
| if (body.action == 'view') |
| await this.propertyService.sharedFindOneAndUpdate( |
| { _id: body.propertyId }, |
| { |
| $inc: { views: 1 }, |
| }, |
| {}, |
| ); |
|
|
| |
| if (body.action == 'time_spent') |
| await this.propertyService.sharedFindOneAndUpdate( |
| { _id: body.propertyId }, |
| { |
| $inc: { total_time_spent: body.duration || 0 }, |
| }, |
| {}, |
| ); |
|
|
| return this.sendResponse( |
| this.messages.Success, |
| activity, |
| HttpStatus.OK, |
| res, |
| ); |
| } catch (error) { |
| console.log(error); |
| return this.sendResponse( |
| 'Error', |
| {}, |
| HttpStatus.INTERNAL_SERVER_ERROR, |
| res, |
| ); |
| } |
| } |
|
|
| @Get('') |
| async getActivityListings(@Res() res: Response, @Req() req): Promise<any> { |
| try { |
| const response = await this.activityService.sharedFind({}); |
| return this.sendResponse( |
| this.messages.Success, |
| response, |
| HttpStatus.OK, |
| res, |
| ); |
| } catch (error) { |
| return this.sendResponse( |
| 'Internal server Error', |
| {}, |
| HttpStatus.INTERNAL_SERVER_ERROR, |
| res, |
| ); |
| } |
| } |
|
|
| |
| @Patch('update') |
| @UseGuards(JwtAuthGuard) |
| async updateActivity( |
| @Body() body: any, |
| @Res() res: Response, |
| @Req() req, |
| ) { |
| try { |
| |
| const existingActivity = await this.activityService.sharedFindOne({ |
| userId: body.userId, |
| propertyId: body.propertyId, |
| action: body.action, |
| }); |
|
|
| if (existingActivity) { |
| |
| const updatedActivity = await this.activityService.sharedUpdate( |
| { _id: existingActivity._id }, |
| { |
| duration: body.duration ? body.duration : existingActivity.duration, |
| timestamp: new Date(), |
| }, |
| ); |
|
|
| return this.sendResponse( |
| this.messages.Success, |
| updatedActivity, |
| HttpStatus.OK, |
| res, |
| ); |
| } else { |
| |
| return this.sendResponse( |
| 'Activity not found', |
| {}, |
| HttpStatus.NOT_FOUND, |
| res, |
| ); |
| } |
| } catch (error) { |
| return this.sendResponse( |
| 'Internal server Error', |
| {}, |
| HttpStatus.INTERNAL_SERVER_ERROR, |
| res, |
| ); |
| } |
| } |
| } |
|
|