|
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,
|
|
);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@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,
|
|
);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@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 || '';
|
|
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,
|
|
);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Get('/detail')
|
|
async getPropertyDetails(@Query() query, @Res() res, @Req() req) {
|
|
try {
|
|
|
|
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,
|
|
);
|
|
}
|
|
}
|
|
}
|
|
|