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