format on save, resolve compile errors, functionality 1. stage
This commit is contained in:
@@ -53,7 +53,7 @@ export class FileService {
|
||||
// await fs.outputFile(`./pictures/logo/${userId}`, file.buffer);
|
||||
}
|
||||
hasCompanyLogo(userId: string){
|
||||
return fs.existsSync(`./pictures/logo/${userId}.avif`)
|
||||
return fs.existsSync(`./pictures/logo/${userId}.avif`)?true:false
|
||||
}
|
||||
|
||||
async getPropertyImages(listingId: string): Promise<ImageProperty[]> {
|
||||
|
||||
@@ -21,10 +21,10 @@ export class CommercialPropertyListingsController {
|
||||
// findByUserId(@Param('userid') userid:string): any {
|
||||
// return this.listingsService.findByUserId(userid,commercials);
|
||||
// }
|
||||
// @Post('search')
|
||||
// find(@Body() criteria: ListingCriteria): any {
|
||||
// return this.listingsService.findByState(criteria.state,commercials);
|
||||
// }
|
||||
@Post('search')
|
||||
find(@Body() criteria: ListingCriteria): any {
|
||||
return this.listingsService.findListingsByCriteria(criteria,commercials);
|
||||
}
|
||||
|
||||
@Post()
|
||||
create(@Body() listing: any){
|
||||
|
||||
@@ -23,25 +23,25 @@ export class ListingsService {
|
||||
constructor(@Inject(WINSTON_MODULE_PROVIDER) private readonly logger: Logger,
|
||||
@Inject(PG_CONNECTION) private conn: NodePgDatabase<typeof schema>,) {
|
||||
}
|
||||
private getConditions(criteria: ListingCriteria): any[] {
|
||||
private getConditions(criteria: ListingCriteria,table: typeof businesses | typeof commercials): any[] {
|
||||
const conditions = [];
|
||||
if (criteria.type) {
|
||||
conditions.push(eq(businesses.type, criteria.type));
|
||||
conditions.push(eq(table.type, criteria.type));
|
||||
}
|
||||
if (criteria.state) {
|
||||
conditions.push(eq(businesses.state, criteria.state));
|
||||
conditions.push(eq(table.state, criteria.state));
|
||||
}
|
||||
if (criteria.minPrice) {
|
||||
conditions.push(gte(businesses.price, criteria.minPrice));
|
||||
conditions.push(gte(table.price, criteria.minPrice));
|
||||
}
|
||||
if (criteria.maxPrice) {
|
||||
conditions.push(lte(businesses.price, criteria.maxPrice));
|
||||
conditions.push(lte(table.price, criteria.maxPrice));
|
||||
}
|
||||
if (criteria.realEstateChecked) {
|
||||
conditions.push(eq(businesses.realEstateIncluded, true));
|
||||
}
|
||||
if (criteria.title) {
|
||||
conditions.push(ilike(businesses.title, `%${criteria.title}%`));
|
||||
conditions.push(ilike(table.title, `%${criteria.title}%`));
|
||||
}
|
||||
return conditions;
|
||||
}
|
||||
@@ -54,7 +54,7 @@ export class ListingsService {
|
||||
return await this.findListings(table, criteria, start, length)
|
||||
}
|
||||
private async findListings(table: typeof businesses | typeof commercials, criteria: ListingCriteria, start = 0, length = 12): Promise<any> {
|
||||
const conditions = this.getConditions(criteria)
|
||||
const conditions = this.getConditions(criteria,table)
|
||||
const [data, total] = await Promise.all([
|
||||
this.conn.select().from(table).where(and(...conditions)).offset(start).limit(length),
|
||||
this.conn.select({ count: sql`count(*)` }).from(table).where(and(...conditions)).then((result) => Number(result[0].count)),
|
||||
|
||||
@@ -56,7 +56,6 @@ export interface ListingCriteria {
|
||||
maxPrice:number,
|
||||
realEstateChecked:boolean,
|
||||
title:string,
|
||||
listingsCategory:'business' | 'commercialProperty',
|
||||
category:'professional|broker'
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { Body, Controller, Get, Inject, Param, Post, Put } from '@nestjs/common';
|
||||
import { Body, Controller, Get, Inject, Param, Post, Put, Query, Req } from '@nestjs/common';
|
||||
import { UserService } from './user.service.js';
|
||||
import { WINSTON_MODULE_PROVIDER } from 'nest-winston';
|
||||
import { Logger } from 'winston';
|
||||
@@ -9,6 +9,13 @@ export class UserController {
|
||||
|
||||
constructor(private userService: UserService, @Inject(WINSTON_MODULE_PROVIDER) private readonly logger: Logger) {}
|
||||
|
||||
@Get()
|
||||
findByMail(@Query('mail') mail: string): any {
|
||||
this.logger.info(`Searching for user with EMail: ${mail}`);
|
||||
const user = this.userService.getUserByMail(mail);
|
||||
this.logger.info(`Found user: ${JSON.stringify(user)}`);
|
||||
return user;
|
||||
}
|
||||
@Get(':id')
|
||||
findById(@Param('id') id: string): any {
|
||||
this.logger.info(`Searching for user with ID: ${id}`);
|
||||
@@ -16,7 +23,6 @@ export class UserController {
|
||||
this.logger.info(`Found user: ${JSON.stringify(user)}`);
|
||||
return user;
|
||||
}
|
||||
|
||||
@Post()
|
||||
save(@Body() user: any): Promise<User> {
|
||||
this.logger.info(`Saving user: ${JSON.stringify(user)}`);
|
||||
|
||||
@@ -20,10 +20,17 @@ export class UserService {
|
||||
private getConditions(criteria: ListingCriteria): any[] {
|
||||
const conditions = [];
|
||||
if (criteria.state) {
|
||||
conditions.push();
|
||||
conditions.push(sql`EXISTS (SELECT 1 FROM unnest(users."areasServed") AS area WHERE area LIKE '%' || ${criteria.state} || '%')`);
|
||||
}
|
||||
return conditions;
|
||||
}
|
||||
async getUserByMail( id:string){
|
||||
const users = await this.conn.select().from(schema.users).where(sql`email = ${id}`) as User[]
|
||||
const user = users[0]
|
||||
user.hasCompanyLogo=this.fileService.hasCompanyLogo(id);
|
||||
user.hasProfile=this.fileService.hasProfile(id);
|
||||
return user;
|
||||
}
|
||||
async getUserById( id:string){
|
||||
const users = await this.conn.select().from(schema.users).where(sql`id = ${id}`) as User[]
|
||||
const user = users[0]
|
||||
@@ -41,8 +48,11 @@ export class UserService {
|
||||
}
|
||||
}
|
||||
async findUser(criteria:ListingCriteria){
|
||||
const users = await this.conn.execute(sql`SELECT * FROM users WHERE EXISTS (SELECT 1 FROM unnest(users."areasServed") AS area WHERE area LIKE '%' || ${criteria.state} || '%')`)
|
||||
return users.rows
|
||||
const start = criteria.start ? criteria.start : 0;
|
||||
const length = criteria.length ? criteria.length : 12;
|
||||
const conditions = this.getConditions(criteria)
|
||||
const users = await this.conn.select().from(schema.users).where(and(...conditions)).offset(start).limit(length)
|
||||
return users
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user