node-pt / src /modules /property /property.controller.ts
bardd's picture
first commit
7b850b7
import {
Body,
Controller,
Get,
HttpStatus,
Post,
Query,
Req,
Res,
UseGuards,
} from '@nestjs/common';
import { Response } from 'express';
import { CommonServices } from '../shared/common.service';
import { PropertyService } from './property.service';
import { v4 as uuidv4 } from 'uuid';
@Controller('property')
export class PropertyController extends CommonServices {
constructor(private readonly propertyService: PropertyService) {
super();
}
@Get('')
async getPropertListings(@Res() res: Response, @Req() req): Promise<any> {
try {
const response = await this.propertyService.sharedFind({});
return this.sendResponse(
this.messages.Success,
response ?? 'NOT_FOUND',
HttpStatus.OK,
res,
);
} catch (error) {
return this.sendResponse(
'Internal server Error',
{},
HttpStatus.INTERNAL_SERVER_ERROR,
res,
);
}
}
/**
*
* @param query
* @param res
* @param req
*/
@Get('/listings/dashboard')
async getDashboardLisings(@Res() res, @Req() req) {
try {
const listings = await this.propertyService.propertyRepository
.find({})
.sort({ _id: -1 })
.limit(20);
this.sendResponse(this.messages.Success, listings, HttpStatus.OK, res);
} catch (error) {
console.error('error', error);
this.sendResponse(
this.messages.Error,
null,
HttpStatus.INTERNAL_SERVER_ERROR,
res,
);
}
}
/**
*
* @param query
* @param res
* @param req
*/
@Get('/listings')
async getDashboardActiveUsers(@Query() query, @Res() res, @Req() req) {
try {
const page = Number(query.page);
const resPerPage = query.resPerPage ? Number(query.resPerPage) : 20;
const search = query.search || ''; // Default to empty search if not provided
let sessionId = null;
if (!query.sessionId) sessionId = uuidv4();
let listings;
if (!query.sessionId) {
listings = await this.propertyService.propertyLisitng(
page,
resPerPage,
search,
);
} else {
listings = await this.propertyService.propertyLisitngRecommendedSearch(
page,
resPerPage,
query.recommendations,
);
}
this.sendResponse(
this.messages.Success,
{ listings, sessionId: sessionId },
HttpStatus.OK,
res,
);
} catch (error) {
console.error('error', error);
this.sendResponse(
this.messages.Error,
null,
HttpStatus.INTERNAL_SERVER_ERROR,
res,
);
}
}
/**
*
* @param query
* @param res
* @param req
*/
@Get('/detail')
async getPropertyDetails(@Query() query, @Res() res, @Req() req) {
try {
// property id
const id = query.id;
const property =
await this.propertyService.propertyRepository.findById(id);
this.sendResponse(this.messages.Success, property, HttpStatus.OK, res);
} catch (error) {
console.error('error', error);
this.sendResponse(
this.messages.Error,
null,
HttpStatus.INTERNAL_SERVER_ERROR,
res,
);
}
}
}