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