diff --git a/bizmatch-server/src/app.module.ts b/bizmatch-server/src/app.module.ts index 69afd8e..e2d1dd2 100644 --- a/bizmatch-server/src/app.module.ts +++ b/bizmatch-server/src/app.module.ts @@ -1,59 +1,50 @@ import { MiddlewareConsumer, Module } from '@nestjs/common'; +import { ConfigModule } from '@nestjs/config'; +import { WinstonModule, utilities as nestWinstonModuleUtilities } from 'nest-winston'; +import path from 'path'; +import { fileURLToPath } from 'url'; +import * as winston from 'winston'; import { AppController } from './app.controller.js'; import { AppService } from './app.service.js'; -import { FileService } from './file/file.service.js'; -import { AuthService } from './auth/auth.service.js'; -import { AuthController } from './auth/auth.controller.js'; -import { ConfigModule } from '@nestjs/config'; -import { SelectOptionsController } from './select-options/select-options.controller.js'; -import { SelectOptionsService } from './select-options/select-options.service.js'; -import { SubscriptionsController } from './subscriptions/subscriptions.controller.js'; -import { RedisModule } from './redis/redis.module.js'; -import { ListingsService } from './listings/listings.service.js'; -import { ServeStaticModule } from '@nestjs/serve-static'; -import path, { join } from 'path'; -import { fileURLToPath } from 'url'; -import { utilities as nestWinstonModuleUtilities, WinstonModule } from 'nest-winston'; -import * as winston from 'winston'; -import { MailModule } from './mail/mail.module.js'; import { AuthModule } from './auth/auth.module.js'; +import { FileService } from './file/file.service.js'; import { GeoModule } from './geo/geo.module.js'; -import { UserModule } from './user/user.module.js'; -import { ListingsModule } from './listings/listings.module.js'; -import { SelectOptionsModule } from './select-options/select-options.module.js'; -import { CommercialPropertyListingsController } from './listings/commercial-property-listings.controller.js'; import { ImageModule } from './image/image.module.js'; +import { ListingsModule } from './listings/listings.module.js'; +import { MailModule } from './mail/mail.module.js'; import { RequestDurationMiddleware } from './request-duration/request-duration.middleware.js'; +import { SelectOptionsModule } from './select-options/select-options.module.js'; +import { SubscriptionsController } from './subscriptions/subscriptions.controller.js'; +import { UserModule } from './user/user.module.js'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); @Module({ - imports: [ConfigModule.forRoot({isGlobal: true}), MailModule, AuthModule, - ServeStaticModule.forRoot({ - rootPath: join(__dirname, '../..', 'pictures'), // `public` ist das Verzeichnis, wo Ihre statischen Dateien liegen - }), + imports: [ + ConfigModule.forRoot({ isGlobal: true }), + MailModule, + AuthModule, WinstonModule.forRoot({ - transports: [ - new winston.transports.Console({ - format: winston.format.combine( - winston.format.timestamp(), - winston.format.ms(), - nestWinstonModuleUtilities.format.nestLike('Bizmatch', { - colors: true, - prettyPrint: true, - }), - ), - }), - // other transports... - ], - // other options + transports: [ + new winston.transports.Console({ + format: winston.format.combine( + winston.format.timestamp(), + winston.format.ms(), + nestWinstonModuleUtilities.format.nestLike('Bizmatch', { + colors: true, + prettyPrint: true, + }), + ), + }), + // other transports... + ], + // other options }), GeoModule, UserModule, ListingsModule, SelectOptionsModule, - RedisModule, ImageModule, ], controllers: [AppController, SubscriptionsController], @@ -62,5 +53,5 @@ const __dirname = path.dirname(__filename); export class AppModule { configure(consumer: MiddlewareConsumer) { consumer.apply(RequestDurationMiddleware).forRoutes('*'); - } + } } diff --git a/bizmatch-server/src/listings/listings.module.ts b/bizmatch-server/src/listings/listings.module.ts index e2a9019..7fc855a 100644 --- a/bizmatch-server/src/listings/listings.module.ts +++ b/bizmatch-server/src/listings/listings.module.ts @@ -1,22 +1,17 @@ -import { Injectable, Module, OnModuleInit } from '@nestjs/common'; -import { BusinessListingsController } from './business-listings.controller.js'; -import { ListingsService } from './listings.service.js'; -import { CommercialPropertyListingsController } from './commercial-property-listings.controller.js'; -import { RedisModule } from '../redis/redis.module.js'; -import { FileService } from '../file/file.service.js'; -import { UnknownListingsController } from './unknown-listings.controller.js'; -import { UserModule } from '../user/user.module.js'; -import { BrokerListingsController } from './broker-listings.controller.js'; -import { UserService } from '../user/user.service.js'; -import { Client, Connection } from 'pg'; -import { drizzle } from 'drizzle-orm/node-postgres'; +import { Module } from '@nestjs/common'; import { DrizzleModule } from '../drizzle/drizzle.module.js'; - +import { FileService } from '../file/file.service.js'; +import { UserService } from '../user/user.service.js'; +import { BrokerListingsController } from './broker-listings.controller.js'; +import { BusinessListingsController } from './business-listings.controller.js'; +import { CommercialPropertyListingsController } from './commercial-property-listings.controller.js'; +import { ListingsService } from './listings.service.js'; +import { UnknownListingsController } from './unknown-listings.controller.js'; @Module({ - imports: [RedisModule,DrizzleModule], - controllers: [BusinessListingsController, CommercialPropertyListingsController,UnknownListingsController,BrokerListingsController], - providers: [ListingsService,FileService,UserService], - exports: [ListingsService], - }) + imports: [DrizzleModule], + controllers: [BusinessListingsController, CommercialPropertyListingsController, UnknownListingsController, BrokerListingsController], + providers: [ListingsService, FileService, UserService], + exports: [ListingsService], +}) export class ListingsModule {} diff --git a/bizmatch-server/src/mail/mail.module.ts b/bizmatch-server/src/mail/mail.module.ts index f424531..854c08c 100644 --- a/bizmatch-server/src/mail/mail.module.ts +++ b/bizmatch-server/src/mail/mail.module.ts @@ -11,21 +11,17 @@ import { MailController } from './mail.controller.js'; import { MailService } from './mail.service.js'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); +const user = process.env.amazon_user; +const password = process.env.amazon_password; @Module({ imports: [ DrizzleModule, UserModule, MailerModule.forRoot({ - // transport: 'smtps://user@example.com:topsecret@smtp.example.com', - // or transport: { host: 'email-smtp.us-east-2.amazonaws.com', secure: false, port: 587, - // auth: { - // user: 'andreas.knuth@gmail.com', - // pass: 'ksnh xjae dqbv xana', - // }, auth: { user: 'AKIAU6GDWVAQ2QNFLNWN', pass: 'BDE9nZv/ARbpotim1mIOir52WgIbpSi9cv1oJoH8oEf7', diff --git a/bizmatch-server/src/redis/redis.module.ts b/bizmatch-server/src/redis/redis.module.ts deleted file mode 100644 index 761809a..0000000 --- a/bizmatch-server/src/redis/redis.module.ts +++ /dev/null @@ -1,30 +0,0 @@ -// redis.module.ts -import { Module } from '@nestjs/common'; - -@Module({ - providers: [ - // { - // provide: 'REDIS_OPTIONS', - // useValue: { - // url: 'redis://localhost:6379' - // } - // }, - // { - // inject: ['REDIS_OPTIONS'], - // provide: 'REDIS_CLIENT', - // useFactory: async (options: { url: string }) => { - // const client = createClient(options); - // await client.connect(); - // return client; - // } - // } - ], - // exports:['REDIS_CLIENT'] -}) -export class RedisModule {} -export const REDIS_CLIENT = "REDIS_CLIENT"; -// redis.service.ts -import { Injectable } from '@nestjs/common'; -import { createClient } from 'redis'; - - diff --git a/bizmatch-server/src/user/user.module.ts b/bizmatch-server/src/user/user.module.ts index 2059e7a..f24ba9c 100644 --- a/bizmatch-server/src/user/user.module.ts +++ b/bizmatch-server/src/user/user.module.ts @@ -1,14 +1,12 @@ import { Module } from '@nestjs/common'; +import { DrizzleModule } from '../drizzle/drizzle.module.js'; +import { FileService } from '../file/file.service.js'; import { UserController } from './user.controller.js'; import { UserService } from './user.service.js'; -import { RedisModule } from '../redis/redis.module.js'; -import { FileService } from '../file/file.service.js'; -import { DrizzleModule } from '../drizzle/drizzle.module.js'; @Module({ imports: [DrizzleModule], controllers: [UserController], - providers: [UserService,FileService] + providers: [UserService, FileService], }) -export class UserModule { -} +export class UserModule {} diff --git a/bizmatch/certs/cert.pem b/bizmatch/certs/cert.pem new file mode 100644 index 0000000..8a620be --- /dev/null +++ b/bizmatch/certs/cert.pem @@ -0,0 +1,32 @@ +-----BEGIN CERTIFICATE----- +MIIFgTCCA2mgAwIBAgIUa+QJdPmuRDNbuf/nzb2J+6ii5nwwDQYJKoZIhvcNAQEL +BQAwUDELMAkGA1UEBhMCREUxDDAKBgNVBAgMA05SVzEQMA4GA1UEBwwHRVJLUkFU +SDEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMB4XDTI0MDUxMDEy +NTQxNVoXDTI1MDUxMDEyNTQxNVowUDELMAkGA1UEBhMCREUxDDAKBgNVBAgMA05S +VzEQMA4GA1UEBwwHRVJLUkFUSDEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQ +dHkgTHRkMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxiTSQDCC/i3n +X6bMKpl0baUgjbzYDc7ZrvIYfj/t25sdv0E/07ysbXNuldzCX6Rnva/1wVZS30zy +vQm8cVM074oP9qy7wKeIU15nEwRe03P5zipix1WXGWXHY+ShZ2MHy/iDQ1XzpO3p +xXs2vxuJZSUoz1M0c+/pTWBx2D790l5qNkt2sbk5NaHfPQDuw+y2cXDqmJqcCi9I +rYbaQGhXeb/IRu8pW4UwasVsq7DxGlDX8k8Dva5O0Ixf+muqQELuMdeTtR/PoFxw +2F+qOUlS2ujuyQkLOvVZOTalxRfWMuexaQzLlQO91MDehTrOFuMUBCKhYztgZKe2 +k9z0fTJmtLyxMPTQuZCv1Gnrw6hcVxjiFQ8YP2ni+ekb86dIA3llH8r+4xEGygfB +QxHiBH9uO8Q9MFpfU2CPE7GxQoB17fu4KqaK0ucVnNM+rJcsNom9svixb5C4CkS/ +S1/KQVDi8mrYwQIOP+Y4YLuNvSvUlitZXq8h0ogVqNMl2+R0CYX4lk/mkOEeCeGW +yG4ek2GQxZNLAnoMoLb+kHnVhPaV0SWW052wvXZzOrIMrlkSZK6yYim3JPsD8hc/ +284lNEFL3DknICPsVFd64LjwPxA0J5AqyhQAvpXyFVHUUA5+h2EATrBh/Fp9cw84 +AkEeVArMWOlx5cg7nAdgQaD5XUaBp7kCAwEAAaNTMFEwHQYDVR0OBBYEFMSO9FoT +nqjHpniyExGf53tV/TAhMB8GA1UdIwQYMBaAFMSO9FoTnqjHpniyExGf53tV/TAh +MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIBADbsIroXoCIe8adn +zh/WNZUUXLDW3JU2QyyYKhnZgqE0Wqh5QLgNwd5ZfH3Iaqhf0xFH9jUeEAWWA17d +hVy4rWsC200DRZ5BYOaffqdflpDE3yAk+8p3kAWjogaCX1wvBuLZ9BHWpuqQ72ec +zYM2ag2wWfBpicXl4BaSnsx1xErxKvxgixgGy6BhcErmfnYtJDnU2Cl+MSMXb758 +7hAl9JiJAH8OuaAjvbkhSVTZQFjDgCGHHQ8mR8IksWdGGe/LN/yoWc4lk7lv7vmu +YBfP/SNZvxBzZlw1fXcdz1Wirljy7yz3+s59Knkc2jysysFC4LkZlUy0unmGoPy0 +D1XdXyDMy05eoUaeRnM0rfzUxYfXMA3sQlsWw7he6fD8YylVedXxd3mcfK0jle0y +VkDyreZ9+mc/4vmjW0KpOfFGvhhAS9L1D8K3bKpky3HoHSqK1Nb8Ymh/WkhOpHwg +unUyIKdRHvGeWkUXQaLbRKI6w2BQwT7oKDOD60cJG26U3XcYarevz9qHsZX865tj +4xZrp+IUr8OkYBnRrmx2TZ70goRXI77nHVzHmY+xHhjvPJOZOcUAvEHU+5VY3ucN +0noEqiYzb77LcqVbbL3cywDLiyfdx9/x8TU1iYPA+IMwhYb/tLBFzFWmR7znw6On +D775XK/EVryozX/6GmtG+XGZs+57 +-----END CERTIFICATE----- diff --git a/bizmatch/certs/key.pem b/bizmatch/certs/key.pem new file mode 100644 index 0000000..087b9b6 --- /dev/null +++ b/bizmatch/certs/key.pem @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 +qs7lw2IbVhzRkVryySXsCXn2O1iu +-----END PRIVATE KEY----- diff --git a/bizmatch/package.json b/bizmatch/package.json index fce27ef..3805cb1 100644 --- a/bizmatch/package.json +++ b/bizmatch/package.json @@ -3,7 +3,7 @@ "version": "0.0.1", "scripts": { "ng": "ng", - "start": "ng serve", + "start": "ng serve & http-server ../bizmatch-server", "build": "ng build", "build.dev": "ng build --configuration dev", "watch": "ng build --watch --configuration development", @@ -55,6 +55,7 @@ "@types/express": "^4.17.21", "@types/jasmine": "~5.1.4", "@types/node": "^20.11.20", + "http-server": "^14.1.1", "jasmine-core": "~5.1.2", "karma": "~6.4.2", "karma-chrome-launcher": "~3.2.0", diff --git a/bizmatch/proxy.conf.json b/bizmatch/proxy.conf.json index 5280472..ac67e3b 100644 --- a/bizmatch/proxy.conf.json +++ b/bizmatch/proxy.conf.json @@ -3,19 +3,8 @@ "target": "http://localhost:3000", "secure": false }, - "/property": { - "target": "http://localhost:3000", - "secure": false, - "changeOrigin": true - }, - "/logo": { - "target": "http://localhost:3000", - "secure": false, - "changeOrigin": true - }, - "/profile": { - "target": "http://localhost:3000", - "secure": false, - "changeOrigin": true + "/pictures": { + "target": "http://localhost:8080", + "secure": false } } \ No newline at end of file diff --git a/bizmatch/src/app/components/header/header.component.ts b/bizmatch/src/app/components/header/header.component.ts index 3a25b15..dc40b99 100644 --- a/bizmatch/src/app/components/header/header.component.ts +++ b/bizmatch/src/app/components/header/header.component.ts @@ -87,17 +87,17 @@ export class HeaderComponent { { label: 'Businesses for Sale', routerLink: '/businessListings', - fragment: '', + state: {}, }, { label: 'Commercial Property', routerLink: '/commercialPropertyListings', - fragment: '', + state: {}, }, { label: 'Professionals/Brokers Directory', routerLink: '/brokerListings', - fragment: '', + state: {}, }, ]; diff --git a/bizmatch/src/app/pages/details/details-commercial-property-listing/details-commercial-property-listing.component.html b/bizmatch/src/app/pages/details/details-commercial-property-listing/details-commercial-property-listing.component.html index 74c4574..edf2ea9 100644 --- a/bizmatch/src/app/pages/details/details-commercial-property-listing/details-commercial-property-listing.component.html +++ b/bizmatch/src/app/pages/details/details-commercial-property-listing/details-commercial-property-listing.component.html @@ -42,13 +42,8 @@ - + - @if(listing && user && (user.id===listing?.userId || isAdmin())){ diff --git a/bizmatch/src/app/pages/details/details-user/details-user.component.html b/bizmatch/src/app/pages/details/details-user/details-user.component.html index cb673e6..9edf3ca 100644 --- a/bizmatch/src/app/pages/details/details-user/details-user.component.html +++ b/bizmatch/src/app/pages/details/details-user/details-user.component.html @@ -10,7 +10,7 @@
@if(user.hasProfile){ - + } @else { } @@ -34,7 +34,7 @@
@if(user.hasCompanyLogo){ - + } @@ -123,7 +123,7 @@
@if (listing.imageOrder?.length>0){ - + } @else { } diff --git a/bizmatch/src/app/pages/home/home.component.ts b/bizmatch/src/app/pages/home/home.component.ts index 6088b74..49a7d89 100644 --- a/bizmatch/src/app/pages/home/home.component.ts +++ b/bizmatch/src/app/pages/home/home.component.ts @@ -54,7 +54,7 @@ export class HomeComponent { } search() { const data = { keep: true }; - this.router.navigate([`${this.activeTabAction}Listings`], { state: { data } }); + this.router.navigate([`${this.activeTabAction}Listings`]); } login() { diff --git a/bizmatch/src/app/pages/listings/broker-listings/broker-listings.component.html b/bizmatch/src/app/pages/listings/broker-listings/broker-listings.component.html index b221d8f..d81cf38 100644 --- a/bizmatch/src/app/pages/listings/broker-listings/broker-listings.component.html +++ b/bizmatch/src/app/pages/listings/broker-listings/broker-listings.component.html @@ -3,7 +3,23 @@
- + + +
+
{{ state.name }}
+
+
+
@@ -26,7 +42,7 @@
@if(user.hasProfile){ - + } @else { } @@ -39,7 +55,7 @@
@if(user.hasCompanyLogo){ - + } @else { } diff --git a/bizmatch/src/app/pages/listings/broker-listings/broker-listings.component.ts b/bizmatch/src/app/pages/listings/broker-listings/broker-listings.component.ts index a2e3392..2c1a6ad 100644 --- a/bizmatch/src/app/pages/listings/broker-listings/broker-listings.component.ts +++ b/bizmatch/src/app/pages/listings/broker-listings/broker-listings.component.ts @@ -1,4 +1,4 @@ -import { CommonModule } from '@angular/common'; +import { CommonModule, NgOptimizedImage } from '@angular/common'; import { ChangeDetectorRef, Component } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { ActivatedRoute, Router, RouterModule } from '@angular/router'; @@ -23,7 +23,21 @@ import { getCriteriaStateObject, getSessionStorageHandler, resetCriteria } from @Component({ selector: 'app-broker-listings', standalone: true, - imports: [CommonModule, StyleClassModule, ButtonModule, CheckboxModule, InputTextModule, DropdownModule, FormsModule, StyleClassModule, ToggleButtonModule, RouterModule, PaginatorModule, InputGroupModule], + imports: [ + CommonModule, + StyleClassModule, + ButtonModule, + CheckboxModule, + InputTextModule, + DropdownModule, + FormsModule, + StyleClassModule, + ToggleButtonModule, + RouterModule, + PaginatorModule, + InputGroupModule, + NgOptimizedImage, + ], templateUrl: './broker-listings.component.html', styleUrl: './broker-listings.component.scss', }) @@ -59,7 +73,7 @@ export class BrokerListingsComponent { this.criteria = onChange(getCriteriaStateObject(), getSessionStorageHandler); this.criteria.type = undefined; this.route.data.subscribe(async () => { - if (!this.router.getCurrentNavigation().extras.state) { + if (this.router.getCurrentNavigation().extras.state) { resetCriteria(this.criteria); } this.init(); @@ -67,7 +81,7 @@ export class BrokerListingsComponent { } async ngOnInit() { const statesResult = await this.listingsService.getAllStates('business'); - this.states = statesResult.map(s => s.state).map(ls => ({ name: this.selectOptions.getState(ls as string), value: ls })); + this.states = statesResult.map(ls => ({ name: this.selectOptions.getState(ls.state as string), value: ls.state, count: ls.count })); } async init() { this.search(); diff --git a/bizmatch/src/app/pages/listings/business-listings/business-listings.component.html b/bizmatch/src/app/pages/listings/business-listings/business-listings.component.html index cb2478e..596555f 100644 --- a/bizmatch/src/app/pages/listings/business-listings/business-listings.component.html +++ b/bizmatch/src/app/pages/listings/business-listings/business-listings.component.html @@ -3,10 +3,29 @@
- + + +
+
{{ state.name }} ({{ state.count }})
+
+
+
Location: {{ selectOptions.getState(listing.state) }}

Established: {{ listing.established }}

- +
diff --git a/bizmatch/src/app/pages/listings/business-listings/business-listings.component.ts b/bizmatch/src/app/pages/listings/business-listings/business-listings.component.ts index 8f9e8bb..d2be2c7 100644 --- a/bizmatch/src/app/pages/listings/business-listings/business-listings.component.ts +++ b/bizmatch/src/app/pages/listings/business-listings/business-listings.component.ts @@ -70,7 +70,7 @@ export class BusinessListingsComponent { this.criteria = onChange(getCriteriaStateObject(), getSessionStorageHandler); this.criteria.type = undefined; this.route.data.subscribe(async () => { - if (!this.router.getCurrentNavigation().extras.state) { + if (this.router.getCurrentNavigation().extras.state) { resetCriteria(this.criteria); } this.init(); @@ -79,7 +79,7 @@ export class BusinessListingsComponent { async ngOnInit() {} async init() { const statesResult = await this.listingsService.getAllStates('business'); - this.states = statesResult.map(s => s.state).map(ls => ({ name: this.selectOptions.getState(ls as string), value: ls })); + this.states = statesResult.map(ls => ({ name: this.selectOptions.getState(ls.state as string), value: ls.state, count: ls.count })); this.search(); } refine() { diff --git a/bizmatch/src/app/pages/listings/commercial-property-listings/commercial-property-listings.component.html b/bizmatch/src/app/pages/listings/commercial-property-listings/commercial-property-listings.component.html index 872eabb..9c60aa9 100644 --- a/bizmatch/src/app/pages/listings/commercial-property-listings/commercial-property-listings.component.html +++ b/bizmatch/src/app/pages/listings/commercial-property-listings/commercial-property-listings.component.html @@ -3,10 +3,18 @@
- + + +
+
{{ state.name }} ({{ state.count }})
+
+
+
@if (listing.imageOrder?.length>0){ - Image + Image } @else { - Image }

diff --git a/bizmatch/src/app/pages/listings/commercial-property-listings/commercial-property-listings.component.ts b/bizmatch/src/app/pages/listings/commercial-property-listings/commercial-property-listings.component.ts index 2cf7360..a854f4b 100644 --- a/bizmatch/src/app/pages/listings/commercial-property-listings/commercial-property-listings.component.ts +++ b/bizmatch/src/app/pages/listings/commercial-property-listings/commercial-property-listings.component.ts @@ -55,7 +55,7 @@ export class CommercialPropertyListingsComponent { this.criteria = onChange(getCriteriaStateObject(), getSessionStorageHandler); this.criteria.type = undefined; this.route.data.subscribe(async () => { - if (!this.router.getCurrentNavigation().extras.state) { + if (this.router.getCurrentNavigation().extras.state) { resetCriteria(this.criteria); } this.init(); @@ -63,8 +63,8 @@ export class CommercialPropertyListingsComponent { } async ngOnInit() {} async init() { - const statesResult = await this.listingsService.getAllStates('business'); - this.states = statesResult.map(s => s.state).map(ls => ({ name: this.selectOptions.getState(ls as string), value: ls })); + const statesResult = await this.listingsService.getAllStates('commercialProperty'); + this.states = statesResult.map(ls => ({ name: this.selectOptions.getState(ls.state as string), value: ls.state, count: ls.count })); this.search(); } refine() { diff --git a/bizmatch/src/app/pages/subscription/account/account.component.ts b/bizmatch/src/app/pages/subscription/account/account.component.ts index 8b88b7d..6ffaa57 100644 --- a/bizmatch/src/app/pages/subscription/account/account.component.ts +++ b/bizmatch/src/app/pages/subscription/account/account.component.ts @@ -74,8 +74,8 @@ export class AccountComponent { if (!this.user.licensedIn || this.user.licensedIn?.length === 0) { this.user.licensedIn = ['']; } - this.profileUrl = this.user.hasProfile ? `profile/${this.user.id}.avif` : `/assets/images/placeholder.png`; - this.companyLogoUrl = this.user.hasCompanyLogo ? `logo/${this.user.id}.avif` : `/assets/images/placeholder.png`; + this.profileUrl = this.user.hasProfile ? `pictures/profile/${this.user.id}.avif` : `/assets/images/placeholder.png`; + this.companyLogoUrl = this.user.hasCompanyLogo ? `pictures/logo/${this.user.id}.avif` : `/assets/images/placeholder.png`; } printInvoice(invoice: Invoice) {} @@ -87,11 +87,11 @@ export class AccountComponent { onUploadCompanyLogo(event: any) { const uniqueSuffix = '?_ts=' + new Date().getTime(); - this.companyLogoUrl = `${environment.apiBaseUrl}/logo/${this.user.id}${uniqueSuffix}`; //`http://IhrServer:Port/${newImagePath}${uniqueSuffix}`; + this.companyLogoUrl = `pictures/logo/${this.user.id}${uniqueSuffix}`; } onUploadProfilePicture(event: any) { const uniqueSuffix = '?_ts=' + new Date().getTime(); - this.profileUrl = `${environment.apiBaseUrl}/profile/${this.user.id}${uniqueSuffix}`; //`http://IhrServer:Port/${newImagePath}${uniqueSuffix}`; + this.profileUrl = `pictures/profile/${this.user.id}${uniqueSuffix}`; } setImageToFallback(event: Event) { (event.target as HTMLImageElement).src = `/assets/images/placeholder.png`; // Pfad zum Platzhalterbild diff --git a/bizmatch/src/app/pages/subscription/edit-commercial-property-listing/edit-commercial-property-listing.component.html b/bizmatch/src/app/pages/subscription/edit-commercial-property-listing/edit-commercial-property-listing.component.html index 8077d56..a850dee 100644 --- a/bizmatch/src/app/pages/subscription/edit-commercial-property-listing/edit-commercial-property-listing.component.html +++ b/bizmatch/src/app/pages/subscription/edit-commercial-property-listing/edit-commercial-property-listing.component.html @@ -103,7 +103,7 @@ @for (image of propertyImages; track image) {

- +