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