From bb5a408cdca15e23c62bc371cb4bee5b37fb200a Mon Sep 17 00:00:00 2001 From: Andreas Knuth Date: Sun, 5 May 2024 15:30:10 +0200 Subject: [PATCH] cleanup + Property images --- bizmatch-server/broker.json | 1326 +++++++++++++++++ bizmatch-server/package.json | 4 +- bizmatch-server/src/app.module.ts | 2 +- bizmatch-server/src/drizzle/import.ts | 5 +- ...manoff.sql => 0000_third_spacker_dave.sql} | 2 +- .../migrations/meta/0000_snapshot.json | 4 +- .../src/drizzle/migrations/meta/_journal.json | 4 +- bizmatch-server/src/drizzle/schema.ts | 2 +- bizmatch-server/src/file/file.service.ts | 7 +- bizmatch-server/src/image/image.controller.ts | 22 +- .../listings/business-listings.controller.ts | 5 +- .../src/listings/listings.service.ts | 4 +- bizmatch-server/src/main.ts | 6 +- bizmatch-server/src/models/db.model.ts | 3 +- bizmatch-server/src/models/main.model.ts | 240 +-- bizmatch-server/src/user/user.service.ts | 7 +- bizmatch/dbschema.ts | 95 ++ bizmatch/proxy.conf.json | 13 +- .../details-business-listing.component.html | 2 + .../details-business-listing.component.ts | 7 +- ...commercial-property-listing.component.html | 4 +- ...s-commercial-property-listing.component.ts | 7 +- .../details-user/details-user.component.html | 1 + .../src/app/pages/home/home.component.scss | 4 +- .../broker-listings.component.html | 7 +- .../broker-listings.component.ts | 32 +- .../business-listings.component.ts | 35 +- ...ommercial-property-listings.component.html | 2 +- .../commercial-property-listings.component.ts | 38 +- .../edit-business-listing.component.ts | 2 +- ...commercial-property-listing.component.html | 4 +- ...t-commercial-property-listing.component.ts | 2 +- bizmatch/src/app/services/listings.service.ts | 20 +- bizmatch/src/app/services/user.service.ts | 6 +- 34 files changed, 1668 insertions(+), 256 deletions(-) create mode 100644 bizmatch-server/broker.json rename bizmatch-server/src/drizzle/migrations/{0000_safe_natasha_romanoff.sql => 0000_third_spacker_dave.sql} (98%) create mode 100644 bizmatch/dbschema.ts diff --git a/bizmatch-server/broker.json b/bizmatch-server/broker.json new file mode 100644 index 0000000..71c2bd9 --- /dev/null +++ b/bizmatch-server/broker.json @@ -0,0 +1,1326 @@ +[ + { + "id": "9c8d7e6f-5g4h-3i2j-1k0l-9m8n7o6p5q4r", + "firstname": "Robert", + "lastname": "Jackson", + "email": "robert.jackson@texasbizbrokers.com", + "licensedIn": [ + { + "name": "Texas", + "value": "654321" + } + ], + "phoneNumber": "(214) 555-7890", + "companyLocation": "Dallas - TX", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Texas Business Brokers", + "companyWebsite": "https://www.texasbizbrokers.com", + "description": "Experienced business brokers helping clients buy and sell businesses throughout Texas.", + "companyOverview": "

Texas Business Brokers is a leading business brokerage firm dedicated to serving clients throughout the state of Texas. With a team of seasoned professionals and a deep understanding of the Texas business landscape, we strive to deliver exceptional results for our clients in the sale or acquisition of businesses.

", + "areasServed": [ + "Dallas County, TX", + "Tarrant County, TX", + "Collin County, TX", + "Denton County, TX", + "Harris County, TX", + "Bexar County, TX", + "Travis County, TX" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "1s2t3u4v-5w6x-7y8z-9a0b-1c2d3e4f5g6h", + "firstname": "Amanda", + "lastname": "Taylor", + "email": "amanda.taylor@lonestarbizbrokers.com", + "licensedIn": [ + { + "name": "Texas", + "value": "987654" + } + ], + "phoneNumber": "(512) 555-4321", + "companyLocation": "Austin - TX", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Lone Star Business Brokers", + "companyWebsite": "https://www.lonestarbizbrokers.com", + "description": "Helping business owners in Texas sell their businesses and assisting buyers in finding the perfect opportunity.", + "companyOverview": "

Lone Star Business Brokers is a trusted business brokerage firm serving the Texas market. Our team of experienced brokers is committed to providing personalized service and expert guidance to ensure a smooth and successful transaction for our clients.

", + "areasServed": [ + "Travis County, TX", + "Williamson County, TX", + "Hays County, TX", + "Bastrop County, TX", + "Caldwell County, TX" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "7i8j9k0l-1m2n-3o4p-5q6r-7s8t9u0v1w2x", + "firstname": "William", + "lastname": "Anderson", + "email": "william@biztexas.com", + "licensedIn": [ + { + "name": "Texas", + "value": "210987" + } + ], + "phoneNumber": "(210) 555-6543", + "companyLocation": "San Antonio - TX", + "hasCompanyLogo": false, + "hasProfile": true, + "companyName": "BizTexas", + "companyWebsite": "https://www.biztexas.com", + "description": "Experienced business brokers specializing in the sale of businesses in the San Antonio area.", + "companyOverview": "

BizTexas is a leading business brokerage firm serving the San Antonio market. With a team of seasoned professionals and a proven track record of success, we are dedicated to helping our clients achieve their goals in the sale or acquisition of businesses.

", + "areasServed": [ + "Bexar County, TX", + "Comal County, TX", + "Guadalupe County, TX", + "Kendall County, TX", + "Medina County, TX" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "3y4z5a6b-7c8d-9e0f-1g2h-3i4j5k6l7m8n", + "firstname": "Elizabeth", + "lastname": "Martinez", + "email": "elizabeth.martinez@texasbusinesssales.com", + "licensedIn": [ + { + "name": "Texas", + "value": "543210" + } + ], + "phoneNumber": "(281) 555-9012", + "companyLocation": "Houston - TX", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Texas Business Sales", + "companyWebsite": "https://www.texasbusinesssales.com", + "description": "Helping business owners in the Houston area sell their businesses and assisting buyers in finding the perfect acquisition opportunity.", + "companyOverview": "

Texas Business Sales is a trusted business brokerage firm serving the Houston market. Our team of experienced brokers is dedicated to providing expert guidance and personalized service to help our clients achieve their goals in the sale or acquisition of businesses.

", + "areasServed": [ + "Harris County, TX", + "Fort Bend County, TX", + "Montgomery County, TX", + "Brazoria County, TX", + "Galveston County, TX" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "9o0p1q2r-3s4t-5u6v-7w8x-9y0z1a2b3c4d", + "firstname": "Daniel", + "lastname": "Thompson", + "email": "daniel@bizbrokersdfw.com", + "licensedIn": [ + { + "name": "Texas", + "value": "876543" + } + ], + "phoneNumber": "(817) 555-3456", + "companyLocation": "Fort Worth - TX", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Business Brokers DFW", + "companyWebsite": "https://www.bizbrokersdfw.com", + "description": "Experienced business brokers helping clients buy and sell businesses in the Dallas-Fort Worth area.", + "companyOverview": "

Business Brokers DFW is a leading business brokerage firm serving the Dallas-Fort Worth market. With a team of seasoned professionals and a commitment to client satisfaction, we strive to deliver exceptional results for our clients in the sale or acquisition of businesses.

", + "areasServed": [ + "Tarrant County, TX", + "Dallas County, TX", + "Collin County, TX", + "Denton County, TX", + "Johnson County, TX" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "5e6f7g8h-9i0j-1k2l-3m4n-5o6p7q8r9s0t", + "firstname": "Olivia", + "lastname": "Harris", + "email": "olivia@businessbrokerstx.com", + "licensedIn": [ + { + "name": "Texas", + "value": "109876" + } + ], + "phoneNumber": "(903) 555-7890", + "companyLocation": "Tyler - TX", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Business Brokers of Texas", + "companyWebsite": "https://www.businessbrokerstx.com", + "description": "Helping business owners in East Texas sell their businesses and assisting buyers in finding the perfect opportunity.", + "companyOverview": "

Business Brokers of Texas is a trusted business brokerage firm serving the East Texas market. Our team of experienced brokers is committed to providing personalized service and expert guidance to ensure a smooth and successful transaction for our clients.

", + "areasServed": [ + "Smith County, TX", + "Gregg County, TX", + "Henderson County, TX", + "Cherokee County, TX", + "Rusk County, TX" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "1u2v3w4x-5y6z-7a8b-9c0d-1e2f3g4h5i6j", + "firstname": "Matthew", + "lastname": "Lee", + "email": "matthew.lee@texasbizadvisors.com", + "licensedIn": [ + { + "name": "Texas", + "value": "432109" + } + ], + "phoneNumber": "(806) 555-1234", + "companyLocation": "Lubbock - TX", + "hasCompanyLogo": false, + "hasProfile": true, + "companyName": "Texas Business Advisors", + "companyWebsite": "https://www.texasbizadvisors.com", + "description": "Experienced business brokers specializing in the sale of businesses in the Lubbock area.", + "companyOverview": "

Texas Business Advisors is a leading business brokerage firm serving the Lubbock market. With a team of seasoned professionals and a proven track record of success, we are dedicated to helping our clients achieve their goals in the sale or acquisition of businesses.

", + "areasServed": [ + "Lubbock County, TX", + "Hale County, TX", + "Hockley County, TX", + "Terry County, TX", + "Lynn County, TX" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "7k8l9m0n-1o2p-3q4r-5s6t-7u8v9w0x1y2z", + "firstname": "Sophia", + "lastname": "Wright", + "email": "sophia.wright@texasbizconnection.com", + "licensedIn": [ + { + "name": "Texas", + "value": "765432" + } + ], + "phoneNumber": "(956) 555-5678", + "companyLocation": "McAllen - TX", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Texas Business Connection", + "companyWebsite": "https://www.texasbizconnection.com", + "description": "Helping business owners in the Rio Grande Valley sell their businesses and assisting buyers in finding the perfect acquisition opportunity.", + "companyOverview": "

Texas Business Connection is a trusted business brokerage firm serving the Rio Grande Valley market. Our team of experienced brokers is dedicated to providing expert guidance and personalized service to help our clients achieve their goals in the sale or acquisition of businesses.

", + "areasServed": [ + "Hidalgo County, TX", + "Cameron County, TX", + "Starr County, TX", + "Willacy County, TX", + "Zapata County, TX" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "3a4b5c6d-7e8f-9g0h-1i2j-3k4l5m6n7o8p", + "firstname": "Ethan", + "lastname": "Walker", + "email": "ethan@elpasobizbrokers.com", + "licensedIn": [ + { + "name": "Texas", + "value": "098765" + } + ], + "phoneNumber": "(915) 555-2109", + "companyLocation": "El Paso - TX", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "El Paso Business Brokers", + "companyWebsite": "https://www.elpasobizbrokers.com", + "description": "Experienced business brokers helping clients buy and sell businesses in the El Paso area.", + "companyOverview": "

El Paso Business Brokers is a leading business brokerage firm serving the El Paso market. With a team of seasoned professionals and a commitment to client satisfaction, we strive to deliver exceptional results for our clients in the sale or acquisition of businesses.

", + "areasServed": [ + "El Paso County, TX", + "Hudspeth County, TX", + "Culberson County, TX", + "Jeff Davis County, TX", + "Presidio County, TX" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "9q0r1s2t-3u4v-5w6x-7y8z-9a0b1c2d3e4f", + "firstname": "Ava", + "lastname": "Cooper", + "email": "ava@texomabizsales.com", + "licensedIn": [ + { + "name": "Texas", + "value": "432109" + } + ], + "phoneNumber": "(903) 555-8765", + "companyLocation": "Sherman - TX", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Texoma Business Sales", + "companyWebsite": "https://www.texomabizsales.com", + "description": "Helping business owners in the Texoma area sell their businesses and assisting buyers in finding the perfect opportunity.", + "companyOverview": "

Texoma Business Sales is a trusted business brokerage firm serving the Texoma area. Our team of experienced brokers is committed to providing personalized service and expert guidance to ensure a smooth and successful transaction for our clients.

", + "areasServed": [ + "Grayson County, TX", + "Fannin County, TX", + "Cooke County, TX", + "Bryan County, OK", + "Marshall County, OK" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "8a2b1c5d-7e6f-4g3h-9i1j-2k3l4m5n6o7p", + "firstname": "Sarah", + "lastname": "Thompson", + "email": "sarah.thompson@businessbrokers.com", + "licensedIn": [ + { + "name": "California", + "value": "123456" + }, + { + "name": "Nevada", + "value": "789012" + } + ], + "phoneNumber": "(310) 555-1234", + "companyLocation": "Los Angeles - CA", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Business Brokers Inc.", + "companyWebsite": "https://www.businessbrokers.com", + "description": "Experienced business brokers helping clients buy and sell businesses in California and Nevada.", + "companyOverview": "

Business Brokers Inc. is a team of experienced professionals dedicated to helping clients navigate the complex process of buying and selling businesses. With a strong focus on client satisfaction and a deep understanding of the local markets in California and Nevada, we strive to deliver exceptional results for our clients.

", + "areasServed": [ + "Los Angeles County, CA", + "Orange County, CA", + "San Diego County, CA", + "Clark County, NV", + "Washoe County, NV" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "4q5r6s7t-8u9v-0w1x-2y3z-4a5b6c7d8e9f", + "firstname": "Michael", + "lastname": "Johnson", + "email": "michael@bizbrokers.net", + "licensedIn": [ + { + "name": "Florida", + "value": "654321" + } + ], + "phoneNumber": "(407) 555-9876", + "companyLocation": "Orlando - FL", + "hasCompanyLogo": false, + "hasProfile": true, + "companyName": "BizBrokers", + "companyWebsite": "https://www.bizbrokers.net", + "description": "Helping business owners in Florida sell their businesses and assisting buyers in finding the perfect opportunity.", + "companyOverview": "

At BizBrokers, we understand the unique challenges of buying and selling businesses in the Florida market. Our team of experienced brokers is committed to providing personalized service and expert guidance to ensure a smooth and successful transaction for our clients.

", + "areasServed": [ + "Orange County, FL", + "Seminole County, FL", + "Osceola County, FL", + "Brevard County, FL", + "Volusia County, FL" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "1g2h3i4j-5k6l-7m8n-9o0p-1q2r3s4t5u6v", + "firstname": "Emily", + "lastname": "Davis", + "email": "emily.davis@bizsaleexperts.com", + "licensedIn": [ + { + "name": "New York", + "value": "987654" + }, + { + "name": "New Jersey", + "value": "210987" + } + ], + "phoneNumber": "(212) 555-4321", + "companyLocation": "New York City - NY", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Business Sale Experts", + "companyWebsite": "https://www.bizsaleexperts.com", + "description": "Experienced business brokers specializing in the sale of businesses in the New York and New Jersey area.", + "companyOverview": "

Business Sale Experts is a leading business brokerage firm serving the New York and New Jersey markets. With a team of seasoned professionals and a proven track record of success, we are dedicated to helping our clients achieve their goals in the sale or acquisition of businesses.

", + "areasServed": [ + "New York County, NY", + "Kings County, NY", + "Queens County, NY", + "Bronx County, NY", + "Hudson County, NJ", + "Bergen County, NJ", + "Essex County, NJ" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "7w8x9y0z-1a2b-3c4d-5e6f-7g8h9i0j1k2l", + "firstname": "David", + "lastname": "Wilson", + "email": "david.wilson@bizacquisitions.com", + "licensedIn": [ + { + "name": "Texas", + "value": "543210" + } + ], + "phoneNumber": "(713) 555-8765", + "companyLocation": "Houston - TX", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Business Acquisitions Ltd.", + "companyWebsite": "https://www.bizacquisitions.com", + "description": "Helping business owners in Texas sell their businesses and assisting buyers in finding the perfect acquisition opportunity.", + "companyOverview": "

Business Acquisitions Ltd. is a leading business brokerage firm serving the Texas market. Our team of experienced brokers is dedicated to providing expert guidance and personalized service to help our clients achieve their goals in the sale or acquisition of businesses.

", + "areasServed": [ + "Harris County, TX", + "Dallas County, TX", + "Tarrant County, TX", + "Bexar County, TX", + "Travis County, TX" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "3m4n5o6p-7q8r-9s0t-1u2v-3w4x5y6z7a8b", + "firstname": "Jessica", + "lastname": "Brown", + "email": "jessica@bizbrokerexperts.com", + "licensedIn": [ + { + "name": "Illinois", + "value": "876543" + }, + { + "name": "Wisconsin", + "value": "109876" + } + ], + "phoneNumber": "(312) 555-2109", + "companyLocation": "Chicago - IL", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Business Broker Experts", + "companyWebsite": "https://www.bizbrokerexperts.com", + "description": "Experienced business brokers helping clients buy and sell businesses in Illinois and Wisconsin.", + "companyOverview": "

Business Broker Experts is a leading business brokerage firm serving the Illinois and Wisconsin markets. With a team of seasoned professionals and a commitment to client satisfaction, we strive to deliver exceptional results for our clients in the sale or acquisition of businesses.

", + "areasServed": [ + "Cook County, IL", + "DuPage County, IL", + "Lake County, IL", + "Milwaukee County, WI", + "Dane County, WI" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "5g6h7i8j-9k0l-1m2n-3o4p-5q6r7s8t9u0v", + "firstname": "Liam", + "lastname": "Patel", + "email": "liam.patel@sunbeltbizbrokers.com", + "licensedIn": [ + { + "name": "Texas", + "value": "765432" + }, + { + "name": "Louisiana", + "value": "987654" + } + ], + "phoneNumber": "(504) 555-1234", + "companyLocation": "New Orleans - LA", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Sunbelt Business Brokers", + "companyWebsite": "https://www.sunbeltbizbrokers.com", + "description": "Experienced business brokers helping clients buy and sell businesses in Texas and Louisiana.", + "companyOverview": "

Sunbelt Business Brokers is a leading business brokerage firm serving the Texas and Louisiana markets. With a team of seasoned professionals and a commitment to client satisfaction, we strive to deliver exceptional results for our clients in the sale or acquisition of businesses.

", + "areasServed": [ + "Orleans Parish, LA", + "Jefferson Parish, LA", + "St. Tammany Parish, LA", + "Harris County, TX", + "Dallas County, TX" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "1w2x3y4z-5a6b-7c8d-9e0f-1g2h3i4j5k6l", + "firstname": "Emma", + "lastname": "Gonzalez", + "email": "emma@newmexicobusinessbrokers.com", + "licensedIn": [ + { + "name": "New Mexico", + "value": "543210" + } + ], + "phoneNumber": "(505) 555-7890", + "companyLocation": "Albuquerque - NM", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "New Mexico Business Brokers", + "companyWebsite": "https://www.newmexicobusinessbrokers.com", + "description": "Helping business owners in New Mexico sell their businesses and assisting buyers in finding the perfect opportunity.", + "companyOverview": "

New Mexico Business Brokers is a trusted business brokerage firm serving the New Mexico market. Our team of experienced brokers is committed to providing personalized service and expert guidance to ensure a smooth and successful transaction for our clients.

", + "areasServed": [ + "Bernalillo County, NM", + "Sandoval County, NM", + "Santa Fe County, NM", + "Doña Ana County, NM", + "San Juan County, NM" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "7m8n9o0p-1q2r-3s4t-5u6v-7w8x9y0z1a2b", + "firstname": "Noah", + "lastname": "Kim", + "email": "noah@oklahomabizsales.com", + "licensedIn": [ + { + "name": "Oklahoma", + "value": "876543" + } + ], + "phoneNumber": "(405) 555-4321", + "companyLocation": "Oklahoma City - OK", + "hasCompanyLogo": false, + "hasProfile": true, + "companyName": "Oklahoma Business Sales", + "companyWebsite": "https://www.oklahomabizsales.com", + "description": "Experienced business brokers specializing in the sale of businesses in the Oklahoma City area.", + "companyOverview": "

Oklahoma Business Sales is a leading business brokerage firm serving the Oklahoma City market. With a team of seasoned professionals and a proven track record of success, we are dedicated to helping our clients achieve their goals in the sale or acquisition of businesses.

", + "areasServed": [ + "Oklahoma County, OK", + "Cleveland County, OK", + "Canadian County, OK", + "Logan County, OK", + "Pottawatomie County, OK" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "3c4d5e6f-7g8h-9i0j-1k2l-3m4n5o6p7q8r", + "firstname": "Isabella", + "lastname": "Garcia", + "email": "isabella.garcia@arkansasbizconnect.com", + "licensedIn": [ + { + "name": "Arkansas", + "value": "210987" + } + ], + "phoneNumber": "(501) 555-6543", + "companyLocation": "Little Rock - AR", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Arkansas Business Connect", + "companyWebsite": "https://www.arkansasbizconnect.com", + "description": "Helping business owners in Arkansas sell their businesses and assisting buyers in finding the perfect acquisition opportunity.", + "companyOverview": "

Arkansas Business Connect is a trusted business brokerage firm serving the Arkansas market. Our team of experienced brokers is dedicated to providing expert guidance and personalized service to help our clients achieve their goals in the sale or acquisition of businesses.

", + "areasServed": [ + "Pulaski County, AR", + "Faulkner County, AR", + "Saline County, AR", + "Garland County, AR", + "Washington County, AR" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "9s0t1u2v-3w4x-5y6z-7a8b-9c0d1e2f3g4h", + "firstname": "Mason", + "lastname": "Johnson", + "email": "mason@msbizbrokers.com", + "licensedIn": [ + { + "name": "Mississippi", + "value": "543210" + } + ], + "phoneNumber": "(601) 555-9012", + "companyLocation": "Jackson - MS", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Mississippi Business Brokers", + "companyWebsite": "https://www.msbizbrokers.com", + "description": "Experienced business brokers helping clients buy and sell businesses in Mississippi.", + "companyOverview": "

Mississippi Business Brokers is a leading business brokerage firm serving the Mississippi market. With a team of seasoned professionals and a commitment to client satisfaction, we strive to deliver exceptional results for our clients in the sale or acquisition of businesses.

", + "areasServed": [ + "Hinds County, MS", + "Rankin County, MS", + "Madison County, MS", + "DeSoto County, MS", + "Harrison County, MS" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "5i6j7k8l-9m0n-1o2p-3q4r-5s6t7u8v9w0x", + "firstname": "Evelyn", + "lastname": "Davis", + "email": "evelyn.davis@azbizsales.com", + "licensedIn": [ + { + "name": "Arizona", + "value": "876543" + } + ], + "phoneNumber": "(602) 555-3456", + "companyLocation": "Phoenix - AZ", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Arizona Business Sales", + "companyWebsite": "https://www.azbizsales.com", + "description": "Helping business owners in Arizona sell their businesses and assisting buyers in finding the perfect opportunity.", + "companyOverview": "

Arizona Business Sales is a trusted business brokerage firm serving the Arizona market. Our team of experienced brokers is committed to providing personalized service and expert guidance to ensure a smooth and successful transaction for our clients.

", + "areasServed": [ + "Maricopa County, AZ", + "Pima County, AZ", + "Pinal County, AZ", + "Yavapai County, AZ", + "Mohave County, AZ" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "1y2z3a4b-5c6d-7e8f-9g0h-1i2j3k4l5m6n", + "firstname": "Harper", + "lastname": "Anderson", + "email": "harper@bamabizsales.com", + "licensedIn": [ + { + "name": "Alabama", + "value": "210987" + } + ], + "phoneNumber": "(205) 555-7890", + "companyLocation": "Birmingham - AL", + "hasCompanyLogo": false, + "hasProfile": true, + "companyName": "Alabama Business Sales", + "companyWebsite": "https://www.bamabizsales.com", + "description": "Experienced business brokers specializing in the sale of businesses in the Birmingham area.", + "companyOverview": "

Alabama Business Sales is a leading business brokerage firm serving the Birmingham market. With a team of seasoned professionals and a proven track record of success, we are dedicated to helping our clients achieve their goals in the sale or acquisition of businesses.

", + "areasServed": [ + "Jefferson County, AL", + "Shelby County, AL", + "Tuscaloosa County, AL", + "Madison County, AL", + "Mobile County, AL" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "7o8p9q0r-1s2t-3u4v-5w6x-7y8z9a0b1c2d", + "firstname": "Abigail", + "lastname": "Martinez", + "email": "abigail.martinez@georgiabizconnect.com", + "licensedIn": [ + { + "name": "Georgia", + "value": "543210" + } + ], + "phoneNumber": "(404) 555-1234", + "companyLocation": "Atlanta - GA", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Georgia Business Connect", + "companyWebsite": "https://www.georgiabizconnect.com", + "description": "Helping business owners in Georgia sell their businesses and assisting buyers in finding the perfect acquisition opportunity.", + "companyOverview": "

Georgia Business Connect is a trusted business brokerage firm serving the Georgia market. Our team of experienced brokers is dedicated to providing expert guidance and personalized service to help our clients achieve their goals in the sale or acquisition of businesses.

", + "areasServed": [ + "Fulton County, GA", + "Gwinnett County, GA", + "Cobb County, GA", + "DeKalb County, GA", + "Chatham County, GA" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "3e4f5g6h-7i8j-9k0l-1m2n-3o4p5q6r7s8t", + "firstname": "Benjamin", + "lastname": "Robinson", + "email": "benjamin.robinson@gulfcoastbizbrokers.com", + "licensedIn": [ + { + "name": "Louisiana", + "value": "876543" + }, + { + "name": "Mississippi", + "value": "210987" + } + ], + "phoneNumber": "(228) 555-5678", + "companyLocation": "Gulfport - MS", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Gulf Coast Business Brokers", + "companyWebsite": "https://www.gulfcoastbizbrokers.com", + "description": "Experienced business brokers helping clients buy and sell businesses along the Gulf Coast of Louisiana and Mississippi.", + "companyOverview": "

Gulf Coast Business Brokers is a leading business brokerage firm serving the Louisiana and Mississippi Gulf Coast markets. With a team of seasoned professionals and a commitment to client satisfaction, we strive to deliver exceptional results for our clients in the sale or acquisition of businesses.

", + "areasServed": [ + "Harrison County, MS", + "Jackson County, MS", + "Hancock County, MS", + "St. Tammany Parish, LA", + "Jefferson Parish, LA" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "9u0v1w2x-3y4z-5a6b-7c8d-9e0f1g2h3i4j", + "firstname": "Charlotte", + "lastname": "Hernandez", + "email": "charlotte@oklabizsales.com", + "licensedIn": [ + { + "name": "Oklahoma", + "value": "543210" + } + ], + "phoneNumber": "(918) 555-9012", + "companyLocation": "Tulsa - OK", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Oklahoma Business Sales", + "companyWebsite": "https://www.oklabizsales.com", + "description": "Helping business owners in the Tulsa area sell their businesses and assisting buyers in finding the perfect opportunity.", + "companyOverview": "

Oklahoma Business Sales is a trusted business brokerage firm serving the Tulsa market. Our team of experienced brokers is committed to providing personalized service and expert guidance to ensure a smooth and successful transaction for our clients.

", + "areasServed": [ + "Tulsa County, OK", + "Rogers County, OK", + "Wagoner County, OK", + "Creek County, OK", + "Osage County, OK" + ], + "offeredServices": "

Services Offered

" + }, + { + "id": "5k6l7m8n-9o0p-1q2r-3s4t-5u6v7w8x9y0z", + "firstname": "Elijah", + "lastname": "Nguyen", + "email": "elijah.nguyen@lonestarbizsales.com", + "licensedIn": [ + { + "name": "Texas", + "value": "109876" + } + ], + "phoneNumber": "(281) 555-3456", + "companyLocation": "Sugar Land - TX", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Lone Star Business Sales", + "companyWebsite": "https://www.lonestarbizsales.com", + "description": "Experienced business brokers specializing in the sale of businesses in the Houston metropolitan area.", + "companyOverview": "

Lone Star Business Sales is a leading business brokerage firm serving the Houston metropolitan area. With a team of seasoned professionals and a proven track record of success, we are dedicated to helping our clients achieve their goals in the sale or acquisition of businesses.

", + "areasServed": [ + "Fort Bend County, TX", + "Harris County, TX", + "Montgomery County, TX", + "Brazoria County, TX", + "Galveston County, TX" + ], + "offeredServices": "" + }, + { + "id": "1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p", + "firstname": "Avery", + "lastname": "Brown", + "email": "avery.brown@nmbizsales.com", + "licensedIn": [ + { + "name": "New Mexico", + "value": "432109" + } + ], + "phoneNumber": "(575) 555-7890", + "companyLocation": "Las Cruces - NM", + "hasCompanyLogo": false, + "hasProfile": true, + "companyName": "New Mexico Business Sales", + "companyWebsite": "https://www.nmbizsales.com", + "description": "Helping business owners in southern New Mexico sell their businesses and assisting buyers in finding the perfect opportunity.", + "companyOverview": "

New Mexico Business Sales is a trusted business brokerage firm serving the southern New Mexico market. Our team of experienced brokers is committed to providing personalized service and expert guidance to ensure a smooth and successful transaction for our clients.

", + "areasServed": [ + "Doña Ana County, NM", + "Otero County, NM", + "Luna County, NM", + "Sierra County, NM", + "Grant County, NM" + ], + "offeredServices": "

What We Offer

" + }, + { + "id": "7q8r9s0t-1u2v-3w4x-5y6z-7a8b9c0d1e2f", + "firstname": "Scarlett", + "lastname": "Patel", + "email": "scarlett@arkanbizsales.com", + "licensedIn": [ + { + "name": "Arkansas", + "value": "765432" + } + ], + "phoneNumber": "(479) 555-1234", + "companyLocation": "Fayetteville - AR", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Arkansas Business Sales", + "companyWebsite": "https://www.arkanbizsales.com", + "description": "Experienced business brokers helping clients buy and sell businesses in northwest Arkansas.", + "companyOverview": "

Arkansas Business Sales is a leading business brokerage firm serving the northwest Arkansas market. With a team of seasoned professionals and a commitment to client satisfaction, we strive to deliver exceptional results for our clients in the sale or acquisition of businesses.

", + "areasServed": [ + "Washington County, AR", + "Benton County, AR", + "Madison County, AR", + "Carroll County, AR", + "Boone County, AR" + ], + "offeredServices": "" + }, + { + "id": "3g4h5i6j-7k8l-9m0n-1o2p-3q4r5s6t7u8v", + "firstname": "Levi", + "lastname": "Kim", + "email": "levi.kim@magnoliabizconnect.com", + "licensedIn": [ + { + "name": "Mississippi", + "value": "098765" + } + ], + "phoneNumber": "(662) 555-5678", + "companyLocation": "Oxford - MS", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Magnolia Business Connect", + "companyWebsite": "https://www.magnoliabizconnect.com", + "description": "Helping business owners in northern Mississippi sell their businesses and assisting buyers in finding the perfect acquisition opportunity.", + "companyOverview": "

Magnolia Business Connect is a trusted business brokerage firm serving the northern Mississippi market. Our team of experienced brokers is dedicated to providing expert guidance and personalized service to help our clients achieve their goals in the sale or acquisition of businesses.

", + "areasServed": [ + "Lafayette County, MS", + "Lee County, MS", + "Pontotoc County, MS", + "Union County, MS", + "Tate County, MS" + ], + "offeredServices": "

Our Services Include

" + }, + { + "id": "9w0x1y2z-3a4b-5c6d-7e8f-9g0h1i2j3k4l", + "firstname": "Mila", + "lastname": "Singh", + "email": "mila.singh@pelicanstatebiz.com", + "licensedIn": [ + { + "name": "Louisiana", + "value": "432109" + } + ], + "phoneNumber": "(337) 555-9012", + "companyLocation": "Lafayette - LA", + "hasCompanyLogo": false, + "hasProfile": true, + "companyName": "Pelican State Business", + "companyWebsite": "https://www.pelicanstatebiz.com", + "description": "Experienced business brokers specializing in the sale of businesses in the Acadiana region of Louisiana.", + "companyOverview": "

Pelican State Business is a leading business brokerage firm serving the Acadiana region of Louisiana. With a team of seasoned professionals and a proven track record of success, we are dedicated to helping our clients achieve their goals in the sale or acquisition of businesses.

", + "areasServed": [ + "Lafayette Parish, LA", + "St. Martin Parish, LA", + "Iberia Parish, LA", + "Vermilion Parish, LA", + "St. Landry Parish, LA" + ], + "offeredServices": "" + }, + { + "id": "5m6n7o8p-9q0r-1s2t-3u4v-5w6x7y8z9a0b", + "firstname": "Ezra", + "lastname": "Garcia", + "email": "ezra.garcia@grandcanyonbiz.com", + "licensedIn": [ + { + "name": "Arizona", + "value": "765432" + } + ], + "phoneNumber": "(928) 555-3456", + "companyLocation": "Flagstaff - AZ", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Grand Canyon Business", + "companyWebsite": "https://www.grandcanyonbiz.com", + "description": "Helping business owners in northern Arizona sell their businesses and assisting buyers in finding the perfect opportunity.", + "companyOverview": "

Grand Canyon Business is a trusted business brokerage firm serving the northern Arizona market. Our team of experienced brokers is committed to providing personalized service and expert guidance to ensure a smooth and successful transaction for our clients.

", + "areasServed": [ + "Coconino County, AZ", + "Yavapai County, AZ", + "Navajo County, AZ", + "Apache County, AZ", + "Mohave County, AZ" + ], + "offeredServices": "

Services We Provide

" + }, + { + "id": "1c2d3e4f-5g6h-7i8j-9k0l-1m2n3o4p5q6r", + "firstname": "Nora", + "lastname": "Lee", + "email": "nora@alabamabizconnect.com", + "licensedIn": [ + { + "name": "Alabama", + "value": "098765" + } + ], + "phoneNumber": "(251) 555-7890", + "companyLocation": "Mobile - AL", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Alabama Business Connect", + "companyWebsite": "https://www.alabamabizconnect.com", + "description": "Experienced business brokers helping clients buy and sell businesses in southern Alabama.", + "companyOverview": "

Alabama Business Connect is a leading business brokerage firm serving the southern Alabama market. With a team of seasoned professionals and a commitment to client satisfaction, we strive to deliver exceptional results for our clients in the sale or acquisition of businesses.

", + "areasServed": [ + "Mobile County, AL", + "Baldwin County, AL", + "Escambia County, AL", + "Monroe County, AL", + "Clarke County, AL" + ], + "offeredServices": "" + }, + { + "id": "7s8t9u0v-1w2x-3y4z-5a6b-7c8d9e0f1g2h", + "firstname": "Lucas", + "lastname": "Patel", + "email": "lucas.patel@peachtreebiz.com", + "licensedIn": [ + { + "name": "Georgia", + "value": "432109" + } + ], + "phoneNumber": "(912) 555-1234", + "companyLocation": "Savannah - GA", + "hasCompanyLogo": false, + "hasProfile": true, + "companyName": "Peachtree Business", + "companyWebsite": "https://www.peachtreebiz.com", + "description": "Helping business owners in coastal Georgia sell their businesses and assisting buyers in finding the perfect acquisition opportunity.", + "companyOverview": "

Peachtree Business is a trusted business brokerage firm serving the coastal Georgia market. Our team of experienced brokers is dedicated to providing expert guidance and personalized service to help our clients achieve their goals in the sale or acquisition of businesses.

", + "areasServed": [ + "Chatham County, GA", + "Glynn County, GA", + "Liberty County, GA", + "McIntosh County, GA", + "Bryan County, GA" + ], + "offeredServices": "

What We Offer

" + }, + { + "id": "3i4j5k6l-7m8n-9o0p-1q2r-3s4t5u6v7w8x", + "firstname": "Penelope", + "lastname": "Gupta", + "email": "penelope@soonestatebiz.com", + "licensedIn": [ + { + "name": "Oklahoma", + "value": "765432" + } + ], + "phoneNumber": "(405) 555-5678", + "companyLocation": "Norman - OK", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Sooner State Business", + "companyWebsite": "https://www.soonestatebiz.com", + "description": "Experienced business brokers specializing in the sale of businesses in the Oklahoma City metropolitan area.", + "companyOverview": "

Sooner State Business is a leading business brokerage firm serving the Oklahoma City metropolitan area. With a team of seasoned professionals and a proven track record of success, we are dedicated to helping our clients achieve their goals in the sale or acquisition of businesses.

", + "areasServed": [ + "Cleveland County, OK", + "Oklahoma County, OK", + "Canadian County, OK", + "McClain County, OK", + "Pottawatomie County, OK" + ], + "offeredServices": "" + }, + { + "id": "9y0z1a2b-3c4d-5e6f-7g8h-9i0j1k2l3m4n", + "firstname": "Asher", + "lastname": "Chavez", + "email": "asher.chavez@desertbizgroup.com", + "licensedIn": [ + { + "name": "New Mexico", + "value": "098765" + } + ], + "phoneNumber": "(505) 555-9012", + "companyLocation": "Santa Fe - NM", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Desert Business Group", + "companyWebsite": "https://www.desertbizgroup.com", + "description": "Helping business owners in northern New Mexico sell their businesses and assisting buyers in finding the perfect opportunity.", + "companyOverview": "

Desert Business Group is a trusted business brokerage firm serving the northern New Mexico market. Our team of experienced brokers is committed to providing personalized service and expert guidance to ensure a smooth and successful transaction for our clients.

", + "areasServed": [ + "Santa Fe County, NM", + "Rio Arriba County, NM", + "Taos County, NM", + "Los Alamos County, NM", + "Sandoval County, NM" + ], + "offeredServices": "

Services We Provide

" + }, + { + "id": "5s6t7u8v-9w0x-1y2z-3a4b-5c6d7e8f9g0h", + "firstname": "Daniel", + "lastname": "Hernandez", + "email": "daniel.hernandez@nationalbizsolutions.com", + "licensedIn": [ + { + "name": "California", + "value": "135790" + }, + { + "name": "Nevada", + "value": "086429" + } + ], + "phoneNumber": "(775) 555-1234", + "companyLocation": "Reno - NV", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "National Business Solutions", + "companyWebsite": "https://www.nationalbizsolutions.com", + "description": "Experienced business brokers helping clients buy and sell businesses in California and Nevada.", + "companyOverview": "

National Business Solutions is a leading business brokerage firm serving the California and Nevada markets. Our team of seasoned professionals is dedicated to providing expert guidance and personalized service to help our clients achieve their goals in the sale or acquisition of businesses.

", + "areasServed": [ + "Los Angeles County, CA", + "Orange County, CA", + "San Diego County, CA", + "Clark County, NV", + "Washoe County, NV" + ], + "offeredServices": "

Our Services

" + }, + { + "id": "1i2j3k4l-5m6n-7o8p-9q0r-1s2t3u4v5w6x", + "firstname": "Olivia", + "lastname": "Patel", + "email": "olivia.patel@bizusasolutions.com", + "licensedIn": [ + { + "name": "Texas", + "value": "753951" + }, + { + "name": "Louisiana", + "value": "159753" + } + ], + "phoneNumber": "(504) 555-5678", + "companyLocation": "New Orleans - LA", + "hasCompanyLogo": false, + "hasProfile": true, + "companyName": "BizUSA Solutions", + "companyWebsite": "https://www.bizusasolutions.com", + "description": "Helping business owners in Texas and Louisiana sell their businesses and assisting buyers in finding the perfect opportunity.", + "companyOverview": "

BizUSA Solutions is a trusted business brokerage firm serving the Texas and Louisiana markets. Our team of experienced brokers is committed to providing personalized service and expert guidance to ensure a smooth and successful transaction for our clients.

", + "areasServed": [ + "Harris County, TX", + "Dallas County, TX", + "Tarrant County, TX", + "Orleans Parish, LA", + "Jefferson Parish, LA" + ], + "offeredServices": "" + }, + { + "id": "7y8z9a0b-1c2d-3e4f-5g6h-7i8j9k0l1m2n", + "firstname": "Liam", + "lastname": "Garcia", + "email": "liam.garcia@usabizadvisors.com", + "licensedIn": [ + { + "name": "Florida", + "value": "369147" + }, + { + "name": "Georgia", + "value": "258147" + } + ], + "phoneNumber": "(404) 555-9012", + "companyLocation": "Atlanta - GA", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "USA Business Advisors", + "companyWebsite": "https://www.usabizadvisors.com", + "description": "Experienced business brokers specializing in the sale of businesses in Florida and Georgia.", + "companyOverview": "

USA Business Advisors is a leading business brokerage firm with a presence in the Florida and Georgia markets. With a team of seasoned professionals and a proven track record of success, we are dedicated to helping our clients achieve their goals in the sale or acquisition of businesses.

", + "areasServed": [ + "Miami-Dade County, FL", + "Broward County, FL", + "Palm Beach County, FL", + "Fulton County, GA", + "Gwinnett County, GA" + ], + "offeredServices": "

What We Offer

" + }, + { + "id": "3o4p5q6r-7s8t-9u0v-1w2x-3y4z5a6b7c8d", + "firstname": "Sophia", + "lastname": "Lee", + "email": "sophia.lee@americanbizsolutions.com", + "licensedIn": [ + { + "name": "New York", + "value": "246810" + }, + { + "name": "New Jersey", + "value": "135790" + } + ], + "phoneNumber": "(201) 555-3456", + "companyLocation": "Jersey City - NJ", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "American Business Solutions", + "companyWebsite": "https://www.americanbizsolutions.com", + "description": "Helping business owners in New York and New Jersey sell their businesses and assisting buyers in finding the perfect acquisition opportunity.", + "companyOverview": "

American Business Solutions is a trusted business brokerage firm serving the New York and New Jersey markets. Our team of experienced brokers is dedicated to providing expert guidance and personalized service to help our clients achieve their goals in the sale or acquisition of businesses.

", + "areasServed": [ + "New York County, NY", + "Kings County, NY", + "Queens County, NY", + "Hudson County, NJ", + "Bergen County, NJ" + ], + "offeredServices": "" + }, + { + "id": "9e0f1g2h-3i4j-5k6l-7m8n-9o0p1q2r3s4t", + "firstname": "Ava", + "lastname": "Kim", + "email": "ava.kim@bizamericaadvisors.com", + "licensedIn": [ + { + "name": "Illinois", + "value": "753951" + }, + { + "name": "Wisconsin", + "value": "159753" + } + ], + "phoneNumber": "(414) 555-7890", + "companyLocation": "Milwaukee - WI", + "hasCompanyLogo": false, + "hasProfile": true, + "companyName": "BizAmerica Advisors", + "companyWebsite": "https://www.bizamericaadvisors.com", + "description": "Experienced business brokers helping clients buy and sell businesses in Illinois and Wisconsin.", + "companyOverview": "

BizAmerica Advisors is a leading business brokerage firm with a presence in the Illinois and Wisconsin markets. With a team of seasoned professionals and a commitment to client satisfaction, we strive to deliver exceptional results for our clients in the sale or acquisition of businesses.

", + "areasServed": [ + "Cook County, IL", + "DuPage County, IL", + "Lake County, IL", + "Milwaukee County, WI", + "Dane County, WI" + ], + "offeredServices": "

Services We Provide

" + }, + { + "id": "5u6v7w8x-9y0z-1a2b-3c4d-5e6f7g8h9i0j", + "firstname": "Noah", + "lastname": "Nguyen", + "email": "noah.nguyen@nationwidebizadvisors.com", + "licensedIn": [ + { + "name": "Washington", + "value": "357159" + }, + { + "name": "Oregon", + "value": "086429" + } + ], + "phoneNumber": "(206) 555-1234", + "companyLocation": "Seattle - WA", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "Nationwide Business Advisors", + "companyWebsite": "https://www.nationwidebizadvisors.com", + "description": "Experienced business brokers helping clients buy and sell businesses in Washington and Oregon.", + "companyOverview": "

Nationwide Business Advisors is a leading business brokerage firm serving the Washington and Oregon markets. Our team of seasoned professionals is dedicated to providing expert guidance and personalized service to help our clients achieve their goals in the sale or acquisition of businesses.

", + "areasServed": [ + "King County, WA", + "Pierce County, WA", + "Snohomish County, WA", + "Multnomah County, OR", + "Washington County, OR" + ], + "offeredServices": "

Our Services

" + }, + { + "id": "1k2l3m4n-5o6p-7q8r-9s0t-1u2v3w4x5y6z", + "firstname": "Emma", + "lastname": "Patel", + "email": "emma.patel@americanbusinessadvisors.com", + "licensedIn": [ + { + "name": "Arizona", + "value": "246810" + }, + { + "name": "New Mexico", + "value": "135790" + } + ], + "phoneNumber": "(505) 555-5678", + "companyLocation": "Albuquerque - NM", + "hasCompanyLogo": false, + "hasProfile": true, + "companyName": "American Business Advisors", + "companyWebsite": "https://www.americanbusinessadvisors.com", + "description": "Helping business owners in Arizona and New Mexico sell their businesses and assisting buyers in finding the perfect opportunity.", + "companyOverview": "

American Business Advisors is a trusted business brokerage firm serving the Arizona and New Mexico markets. Our team of experienced brokers is committed to providing personalized service and expert guidance to ensure a smooth and successful transaction for our clients.

", + "areasServed": [ + "Maricopa County, AZ", + "Pima County, AZ", + "Bernalillo County, NM", + "Doña Ana County, NM", + "Santa Fe County, NM" + ], + "offeredServices": "" + }, + { + "id": "7a8b9c0d-1e2f-3g4h-5i6j-7k8l9m0n1o2p", + "firstname": "William", + "lastname": "Johnson", + "email": "william.johnson@bizusagroup.com", + "licensedIn": [ + { + "name": "Colorado", + "value": "753951" + }, + { + "name": "Utah", + "value": "159753" + } + ], + "phoneNumber": "(303) 555-9012", + "companyLocation": "Denver - CO", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "BizUSA Group", + "companyWebsite": "https://www.bizusagroup.com", + "description": "Experienced business brokers specializing in the sale of businesses in Colorado and Utah.", + "companyOverview": "

BizUSA Group is a leading business brokerage firm with a presence in the Colorado and Utah markets. With a team of seasoned professionals and a proven track record of success, we are dedicated to helping our clients achieve their goals in the sale or acquisition of businesses.

", + "areasServed": [ + "Denver County, CO", + "Arapahoe County, CO", + "Jefferson County, CO", + "Salt Lake County, UT", + "Utah County, UT" + ], + "offeredServices": "

What We Offer

" + }, + { + "id": "3q4r5s6t-7u8v-9w0x-1y2z-3a4b5c6d7e8f", + "firstname": "Isabella", + "lastname": "Kim", + "email": "isabella.kim@nationalbusinesssolutions.com", + "licensedIn": [ + { + "name": "Michigan", + "value": "369147" + }, + { + "name": "Ohio", + "value": "258147" + } + ], + "phoneNumber": "(216) 555-3456", + "companyLocation": "Cleveland - OH", + "hasCompanyLogo": true, + "hasProfile": true, + "companyName": "National Business Solutions", + "companyWebsite": "https://www.nationalbusinesssolutions.com", + "description": "Helping business owners in Michigan and Ohio sell their businesses and assisting buyers in finding the perfect acquisition opportunity.", + "companyOverview": "

National Business Solutions is a trusted business brokerage firm serving the Michigan and Ohio markets. Our team of experienced brokers is dedicated to providing expert guidance and personalized service to help our clients achieve their goals in the sale or acquisition of businesses.

", + "areasServed": [ + "Wayne County, MI", + "Oakland County, MI", + "Macomb County, MI", + "Cuyahoga County, OH", + "Franklin County, OH" + ], + "offeredServices": "" + }, + { + "id": "9g0h1i2j-3k4l-5m6n-7o8p-9q0r1s2t3u4v", + "firstname": "Mia", + "lastname": "Hernandez", + "email": "mia.hernandez@usabusinessgroup.com", + "licensedIn": [ + { + "name": "North Carolina", + "value": "753951" + }, + { + "name": "South Carolina", + "value": "159753" + } + ], + "phoneNumber": "(704) 555-7890", + "companyLocation": "Charlotte - NC", + "hasCompanyLogo": false, + "hasProfile": true, + "companyName": "USA Business Group", + "companyWebsite": "https://www.usabusinessgroup.com", + "description": "Experienced business brokers helping clients buy and sell businesses in North and South Carolina.", + "companyOverview": "

USA Business Group is a leading business brokerage firm with a presence in the North and South Carolina markets. With a team of seasoned professionals and a commitment to client satisfaction, we strive to deliver exceptional results for our clients in the sale or acquisition of businesses.

", + "areasServed": [ + "Mecklenburg County, NC", + "Wake County, NC", + "Guilford County, NC", + "Greenville County, SC", + "Charleston County, SC" + ], + "offeredServices": "

Services We Provide

" + } +] \ No newline at end of file diff --git a/bizmatch-server/package.json b/bizmatch-server/package.json index 34c39d3..7dcf006 100644 --- a/bizmatch-server/package.json +++ b/bizmatch-server/package.json @@ -23,7 +23,7 @@ "drop": "drizzle-kit drop", "migrate": "tsx src/drizzle/migrate.ts", "import": "tsx src/drizzle/import.ts", - "generateTypes":"tsx src/drizzle/generateTypes.ts src/drizzle/schema.ts src/models/db.model.ts" + "generateTypes": "tsx src/drizzle/generateTypes.ts src/drizzle/schema.ts src/models/db.model.ts" }, "dependencies": { "@nestjs-modules/mailer": "^1.10.3", @@ -34,6 +34,7 @@ "@nestjs/passport": "^10.0.3", "@nestjs/platform-express": "^10.0.0", "@nestjs/serve-static": "^4.0.1", + "cors": "^2.8.5", "dotenv": "^16.4.5", "drizzle-orm": "^0.30.8", "handlebars": "^4.7.8", @@ -80,6 +81,7 @@ "eslint-plugin-prettier": "^5.0.0", "jest": "^29.5.0", "kysely-codegen": "^0.15.0", + "pg-to-ts": "^4.1.1", "prettier": "^3.0.0", "source-map-support": "^0.5.21", "supertest": "^6.3.3", diff --git a/bizmatch-server/src/app.module.ts b/bizmatch-server/src/app.module.ts index de87d90..69afd8e 100644 --- a/bizmatch-server/src/app.module.ts +++ b/bizmatch-server/src/app.module.ts @@ -31,7 +31,7 @@ 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 + rootPath: join(__dirname, '../..', 'pictures'), // `public` ist das Verzeichnis, wo Ihre statischen Dateien liegen }), WinstonModule.forRoot({ transports: [ diff --git a/bizmatch-server/src/drizzle/import.ts b/bizmatch-server/src/drizzle/import.ts index 96119c7..f2ae6fa 100644 --- a/bizmatch-server/src/drizzle/import.ts +++ b/bizmatch-server/src/drizzle/import.ts @@ -25,8 +25,8 @@ const generatedUserData = [] console.log(userData.length) for (const user of userData) { delete user.id + user.licensedIn=user.licensedIn.map(l=>`${l['name']}|${l['value']}`) const u = await db.insert(schema.users).values(user).returning({ insertedId: schema.users.id }); - // console.log(`--> ${u[0].insertedId}`) generatedUserData.push(u[0].insertedId); } //Business Listings @@ -45,7 +45,10 @@ filePath = `./data/commercials.json` data = readFileSync(filePath, 'utf8'); const commercialJsonData = JSON.parse(data) as CommercialPropertyListing[]; // Erwartet ein Array von Objekten for (const commercial of commercialJsonData) { + const id = commercial.id; delete commercial.id + commercial.imageOrder=['1.jpg']; + commercial.imagePath=id commercial.created = getRandomDateWithinLastYear(); commercial.userId = getRandomItem(generatedUserData); await db.insert(schema.commercials).values(commercial); diff --git a/bizmatch-server/src/drizzle/migrations/0000_safe_natasha_romanoff.sql b/bizmatch-server/src/drizzle/migrations/0000_third_spacker_dave.sql similarity index 98% rename from bizmatch-server/src/drizzle/migrations/0000_safe_natasha_romanoff.sql rename to bizmatch-server/src/drizzle/migrations/0000_third_spacker_dave.sql index 074ecda..4c9c7bf 100644 --- a/bizmatch-server/src/drizzle/migrations/0000_safe_natasha_romanoff.sql +++ b/bizmatch-server/src/drizzle/migrations/0000_third_spacker_dave.sql @@ -46,7 +46,7 @@ CREATE TABLE IF NOT EXISTS "commercials" ( "website" varchar(255), "phoneNumber" varchar(255), "imageOrder" varchar(30)[], - "imagePath" varchar(30)[], + "imagePath" varchar(50), "created" timestamp, "updated" timestamp, "visits" integer, diff --git a/bizmatch-server/src/drizzle/migrations/meta/0000_snapshot.json b/bizmatch-server/src/drizzle/migrations/meta/0000_snapshot.json index 4febc17..ee3919b 100644 --- a/bizmatch-server/src/drizzle/migrations/meta/0000_snapshot.json +++ b/bizmatch-server/src/drizzle/migrations/meta/0000_snapshot.json @@ -1,5 +1,5 @@ { - "id": "e8d0776a-ea8b-4c75-8a3a-e741620c4c4d", + "id": "f6d421f9-2394-4a1c-9268-9e46285f0a41", "prevId": "00000000-0000-0000-0000-000000000000", "version": "5", "dialect": "pg", @@ -300,7 +300,7 @@ }, "imagePath": { "name": "imagePath", - "type": "varchar(30)[]", + "type": "varchar(50)", "primaryKey": false, "notNull": false }, diff --git a/bizmatch-server/src/drizzle/migrations/meta/_journal.json b/bizmatch-server/src/drizzle/migrations/meta/_journal.json index 7c6811f..bddfc24 100644 --- a/bizmatch-server/src/drizzle/migrations/meta/_journal.json +++ b/bizmatch-server/src/drizzle/migrations/meta/_journal.json @@ -5,8 +5,8 @@ { "idx": 0, "version": "5", - "when": 1713791559934, - "tag": "0000_safe_natasha_romanoff", + "when": 1714913766996, + "tag": "0000_third_spacker_dave", "breakpoints": true } ] diff --git a/bizmatch-server/src/drizzle/schema.ts b/bizmatch-server/src/drizzle/schema.ts index 9d5b062..1b496cf 100644 --- a/bizmatch-server/src/drizzle/schema.ts +++ b/bizmatch-server/src/drizzle/schema.ts @@ -69,7 +69,7 @@ export const commercials = pgTable('commercials', { website: varchar('website', { length: 255 }), phoneNumber: varchar('phoneNumber', { length: 255 }), imageOrder:varchar('imageOrder',{length:30}).array(), - imagePath:varchar('imagePath',{length:30}).array(), + imagePath:varchar('imagePath',{length:50}), created: timestamp('created'), updated: timestamp('updated'), visits: integer('visits'), diff --git a/bizmatch-server/src/file/file.service.ts b/bizmatch-server/src/file/file.service.ts index 5f504f6..47c3e83 100644 --- a/bizmatch-server/src/file/file.service.ts +++ b/bizmatch-server/src/file/file.service.ts @@ -56,14 +56,13 @@ export class FileService { return fs.existsSync(`./pictures/logo/${userId}.avif`)?true:false } - async getPropertyImages(listingId: string): Promise { - const result: ImageProperty[] = [] + async getPropertyImages(listingId: string): Promise { + const result: string[] = [] const directory = `./pictures/property/${listingId}` if (fs.existsSync(directory)) { const files = await fs.readdir(directory); files.forEach(f => { - const image: ImageProperty = { name: f, id: '', code: '' }; - result.push(image) + result.push(f) }) return result; } else { diff --git a/bizmatch-server/src/image/image.controller.ts b/bizmatch-server/src/image/image.controller.ts index 9ce9c55..a27c544 100644 --- a/bizmatch-server/src/image/image.controller.ts +++ b/bizmatch-server/src/image/image.controller.ts @@ -7,6 +7,8 @@ import { SelectOptionsService } from '../select-options/select-options.service.j import { ListingsService } from '../listings/listings.service.js'; import { Entity, EntityData } from 'redis-om'; +import { businesses, commercials } from 'src/drizzle/schema.js'; +import { CommercialPropertyListing } from 'src/models/db.model.js'; @Controller('image') export class ImageController { @@ -38,16 +40,16 @@ export class ImageController { @Get(':id') async getPropertyImagesById(@Param('id') id:string): Promise { - // const result = await this.listingService.getCommercialPropertyListingById(id); - // const listing = result as CommercialPropertyListing; - // if (listing.imageOrder){ - // return listing.imageOrder - // } else { - // const imageOrder = await this.fileService.getPropertyImages(id); - // listing.imageOrder=imageOrder; - // this.listingService.saveListing(listing); - // return imageOrder; - // } + const result = await this.listingService.findById(id,commercials); + const listing = result as CommercialPropertyListing; + if (listing.imageOrder){ + return listing.imageOrder + } else { + const imageOrder = await this.fileService.getPropertyImages(id); + listing.imageOrder=imageOrder; + this.listingService.updateListing(listing.id,listing,commercials); + return imageOrder; + } } @Get('profileImages/:userids') async getProfileImagesForUsers(@Param('userids') userids:string): Promise { diff --git a/bizmatch-server/src/listings/business-listings.controller.ts b/bizmatch-server/src/listings/business-listings.controller.ts index 8444b5b..0858dac 100644 --- a/bizmatch-server/src/listings/business-listings.controller.ts +++ b/bizmatch-server/src/listings/business-listings.controller.ts @@ -42,6 +42,9 @@ export class BusinessListingsController { deleteById(@Param('id') id:string){ this.listingsService.deleteListing(id,businesses) } - + @Get('states/all') + getStates(): any { + return this.listingsService.getStates(businesses); + } } diff --git a/bizmatch-server/src/listings/listings.service.ts b/bizmatch-server/src/listings/listings.service.ts index 734f6a7..19c2a06 100644 --- a/bizmatch-server/src/listings/listings.service.ts +++ b/bizmatch-server/src/listings/listings.service.ts @@ -88,7 +88,9 @@ export class ListingsService { async deleteListing(id: string, table: typeof businesses | typeof commercials): Promise { await this.conn.delete(table).where(eq(table.id, id)); } - + async getStates(table: typeof businesses | typeof commercials): Promise { + return await this.conn.select({state: table.state,count: sql`count(${table.id})`.mapWith(Number)}).from(table).groupBy(sql`${table.state}`).orderBy(sql`count desc`); + } // ############################################################## // Images for commercial Properties // ############################################################## diff --git a/bizmatch-server/src/main.ts b/bizmatch-server/src/main.ts index 53b4522..b040e08 100644 --- a/bizmatch-server/src/main.ts +++ b/bizmatch-server/src/main.ts @@ -1,6 +1,10 @@ import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module.js'; - +import * as express from 'express'; +import path, { join } from 'path'; +import { fileURLToPath } from 'url'; +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); async function bootstrap() { const app = await NestFactory.create(AppModule); app.setGlobalPrefix('bizmatch'); diff --git a/bizmatch-server/src/models/db.model.ts b/bizmatch-server/src/models/db.model.ts index e950f65..fdfc006 100644 --- a/bizmatch-server/src/models/db.model.ts +++ b/bizmatch-server/src/models/db.model.ts @@ -64,10 +64,9 @@ export interface CommercialPropertyListing { website?: string; phoneNumber?: string; imageOrder?: string[]; - imagePath?: string[]; + imagePath?: string; created?: Date; updated?: Date; visits?: number; lastVisit?: Date; } - diff --git a/bizmatch-server/src/models/main.model.ts b/bizmatch-server/src/models/main.model.ts index 9826416..53c7802 100644 --- a/bizmatch-server/src/models/main.model.ts +++ b/bizmatch-server/src/models/main.model.ts @@ -1,155 +1,163 @@ -import { BusinessListing, CommercialPropertyListing } from "./db.model"; +import { BusinessListing, CommercialPropertyListing, User } from './db.model'; +export interface StatesResult { + state: string; + count: number; +} export interface KeyValue { - name: string; - value: string; + name: string; + value: string; } export interface KeyValueRatio { - label: string; - value: number; + label: string; + value: number; } export interface KeyValueStyle { - name: string; - value: string; - icon:string; - bgColorClass:string; - textColorClass:string; + name: string; + value: string; + icon: string; + bgColorClass: string; + textColorClass: string; } export type SelectOption = { - value: T; - label: string; + value: T; + label: string; }; export type ImageType = { - name:'propertyPicture'|'companyLogo'|'profile',upload:string,delete:string, -} + name: 'propertyPicture' | 'companyLogo' | 'profile'; + upload: string; + delete: string; +}; export type ListingCategory = { - name: 'business' | 'commercialProperty' -} + name: 'business' | 'commercialProperty'; +}; -export type ListingType = - | BusinessListing - | CommercialPropertyListing; +export type ListingType = BusinessListing | CommercialPropertyListing; export type ResponseBusinessListingArray = { - data:BusinessListing[], - total:number -} + data: BusinessListing[]; + total: number; +}; export type ResponseBusinessListing = { - data:BusinessListing -} + data: BusinessListing; +}; export type ResponseCommercialPropertyListingArray = { - data:CommercialPropertyListing[], - total:number -} + data: CommercialPropertyListing[]; + total: number; +}; export type ResponseCommercialPropertyListing = { - data:CommercialPropertyListing -} + data: CommercialPropertyListing; +}; +export type ResponseUsersArray = { + data: User[]; + total: number; +}; export interface ListingCriteria { - start:number, - length:number, - page:number, - pageCount:number, - type:number, - state:string, - minPrice:number, - maxPrice:number, - realEstateChecked:boolean, - title:string, - category:'professional|broker' + start: number; + length: number; + page: number; + pageCount: number; + type: number; + state: string; + minPrice: number; + maxPrice: number; + realEstateChecked: boolean; + title: string; + category: 'professional|broker'; } export interface KeycloakUser { - id: string - createdTimestamp: number - username: string - enabled: boolean - totp: boolean - emailVerified: boolean - firstName: string - lastName: string - email: string - disableableCredentialTypes: any[] - requiredActions: any[] - notBefore: number - access: Access + id: string; + createdTimestamp: number; + username: string; + enabled: boolean; + totp: boolean; + emailVerified: boolean; + firstName: string; + lastName: string; + email: string; + disableableCredentialTypes: any[]; + requiredActions: any[]; + notBefore: number; + access: Access; } export interface Access { - manageGroupMembership: boolean - view: boolean - mapRoles: boolean - impersonate: boolean - manage: boolean - } + manageGroupMembership: boolean; + view: boolean; + mapRoles: boolean; + impersonate: boolean; + manage: boolean; +} export interface Subscription { - id: string; - userId:string - level: string; - start: Date; - modified: Date; - end: Date; - status: string; - invoices: Array; + id: string; + userId: string; + level: string; + start: Date; + modified: Date; + end: Date; + status: string; + invoices: Array; } export interface Invoice { - id: string, - date: Date, - price: number + id: string; + date: Date; + price: number; } export interface JwtToken { - exp: number; - iat: number; - auth_time: number; - jti: string; - iss: string; - aud: string; - sub: string; - typ: string; - azp: string; - nonce: string; - session_state: string; - acr: string; - realm_access: Realmaccess; - resource_access: Resourceaccess; - scope: string; - sid: string; - email_verified: boolean; - name: string; - preferred_username: string; - given_name: string; - family_name: string; - email: string; - user_id: string; + exp: number; + iat: number; + auth_time: number; + jti: string; + iss: string; + aud: string; + sub: string; + typ: string; + azp: string; + nonce: string; + session_state: string; + acr: string; + realm_access: Realmaccess; + resource_access: Resourceaccess; + scope: string; + sid: string; + email_verified: boolean; + name: string; + preferred_username: string; + given_name: string; + family_name: string; + email: string; + user_id: string; } interface Resourceaccess { - account: Realmaccess; + account: Realmaccess; } interface Realmaccess { - roles: string[]; + roles: string[]; } export interface PageEvent { - first: number; - rows: number; - page: number; - pageCount: number; + first: number; + rows: number; + page: number; + pageCount: number; } export interface AutoCompleteCompleteEvent { - originalEvent: Event; - query: string; + originalEvent: Event; + query: string; } export interface MailInfo { - sender: Sender; - userId: string; - } - export interface Sender { - name?: string; - email?: string; - phoneNumber?: string; - state?: string; - comments?: string; - } - export interface ImageProperty { - id:string; - code:string; - name:string; - } \ No newline at end of file + sender: Sender; + userId: string; +} +export interface Sender { + name?: string; + email?: string; + phoneNumber?: string; + state?: string; + comments?: string; +} +export interface ImageProperty { + id: string; + code: string; + name: string; +} diff --git a/bizmatch-server/src/user/user.service.ts b/bizmatch-server/src/user/user.service.ts index 156a959..275f53c 100644 --- a/bizmatch-server/src/user/user.service.ts +++ b/bizmatch-server/src/user/user.service.ts @@ -51,8 +51,11 @@ export class UserService { 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 + const [data, total] = await Promise.all([ + this.conn.select().from(schema.users).where(and(...conditions)).offset(start).limit(length), + this.conn.select({ count: sql`count(*)` }).from(schema.users).where(and(...conditions)).then((result) => Number(result[0].count)), + ]); + return { total, data }; } } \ No newline at end of file diff --git a/bizmatch/dbschema.ts b/bizmatch/dbschema.ts new file mode 100644 index 0000000..79488ab --- /dev/null +++ b/bizmatch/dbschema.ts @@ -0,0 +1,95 @@ +/* tslint:disable */ +/* eslint-disable */ + + +/** + * AUTO-GENERATED FILE - DO NOT EDIT! + * + * This file was automatically generated by pg-to-ts v.4.1.1 + * $ pg-to-ts generate -c postgresql://username:password@localhost:5432/bizmatch -t businesses -s public + * + */ + + +export type Json = unknown; + +// Table businesses +export interface Businesses { + id: string; + userId: string | null; + type: number | null; + title: string | null; + description: string | null; + city: string | null; + state: string | null; + price: number | null; + favoritesForUser: string[] | null; + draft: boolean | null; + listingsCategory: string | null; + realEstateIncluded: boolean | null; + leasedLocation: boolean | null; + franchiseResale: boolean | null; + salesRevenue: number | null; + cashFlow: number | null; + supportAndTraining: string | null; + employees: number | null; + established: number | null; + internalListingNumber: number | null; + reasonForSale: string | null; + brokerLicencing: string | null; + internals: string | null; + created: Date | null; + updated: Date | null; + visits: number | null; + lastVisit: Date | null; +} +export interface BusinessesInput { + id?: string; + userId?: string | null; + type?: number | null; + title?: string | null; + description?: string | null; + city?: string | null; + state?: string | null; + price?: number | null; + favoritesForUser?: string[] | null; + draft?: boolean | null; + listingsCategory?: string | null; + realEstateIncluded?: boolean | null; + leasedLocation?: boolean | null; + franchiseResale?: boolean | null; + salesRevenue?: number | null; + cashFlow?: number | null; + supportAndTraining?: string | null; + employees?: number | null; + established?: number | null; + internalListingNumber?: number | null; + reasonForSale?: string | null; + brokerLicencing?: string | null; + internals?: string | null; + created?: Date | null; + updated?: Date | null; + visits?: number | null; + lastVisit?: Date | null; +} +const businesses = { + tableName: 'businesses', + columns: ['id', 'userId', 'type', 'title', 'description', 'city', 'state', 'price', 'favoritesForUser', 'draft', 'listingsCategory', 'realEstateIncluded', 'leasedLocation', 'franchiseResale', 'salesRevenue', 'cashFlow', 'supportAndTraining', 'employees', 'established', 'internalListingNumber', 'reasonForSale', 'brokerLicencing', 'internals', 'created', 'updated', 'visits', 'lastVisit'], + requiredForInsert: [], + primaryKey: 'id', + foreignKeys: { userId: { table: 'users', column: 'id', $type: null as unknown /* users */ }, }, + $type: null as unknown as Businesses, + $input: null as unknown as BusinessesInput +} as const; + + +export interface TableTypes { + businesses: { + select: Businesses; + input: BusinessesInput; + }; +} + +export const tables = { + businesses, +} diff --git a/bizmatch/proxy.conf.json b/bizmatch/proxy.conf.json index b0c7ad0..85795bc 100644 --- a/bizmatch/proxy.conf.json +++ b/bizmatch/proxy.conf.json @@ -1,6 +1,11 @@ { - "/api": { - "target": "http://localhost:3000", - "secure": false - } + "/api": { + "target": "http://localhost:3000", + "secure": false + }, + "/property": { + "target": "http://localhost:3000", + "secure": false, + "changeOrigin": true + } } \ No newline at end of file diff --git a/bizmatch/src/app/pages/details/details-business-listing/details-business-listing.component.html b/bizmatch/src/app/pages/details/details-business-listing/details-business-listing.component.html index 01493e8..adfc142 100644 --- a/bizmatch/src/app/pages/details/details-business-listing/details-business-listing.component.html +++ b/bizmatch/src/app/pages/details/details-business-listing/details-business-listing.component.html @@ -7,6 +7,7 @@ + @if(listing){
    @@ -95,6 +96,7 @@
+ } diff --git a/bizmatch/src/app/pages/details/details-business-listing/details-business-listing.component.ts b/bizmatch/src/app/pages/details/details-business-listing/details-business-listing.component.ts index 3247c0a..0d20b84 100644 --- a/bizmatch/src/app/pages/details/details-business-listing/details-business-listing.component.ts +++ b/bizmatch/src/app/pages/details/details-business-listing/details-business-listing.component.ts @@ -6,7 +6,7 @@ import { MessageService } from 'primeng/api'; import { GalleriaModule } from 'primeng/galleria'; import { lastValueFrom } from 'rxjs'; import { BusinessListing, User } from '../../../../../../bizmatch-server/src/models/db.model'; -import { ImageProperty, ListingCriteria, MailInfo } from '../../../../../../bizmatch-server/src/models/main.model'; +import { ListingCriteria, MailInfo } from '../../../../../../bizmatch-server/src/models/main.model'; import { environment } from '../../../../environments/environment'; import { ListingsService } from '../../../services/listings.service'; import { MailService } from '../../../services/mail.service'; @@ -43,11 +43,10 @@ export class DetailsBusinessListingComponent { }, ]; private id: string | undefined = this.activatedRoute.snapshot.params['id'] as string | undefined; - private type: 'business' | 'commercialProperty' | undefined = this.activatedRoute.snapshot.params['type'] as 'business' | 'commercialProperty' | undefined; listing: BusinessListing; criteria: ListingCriteria; mailinfo: MailInfo; - propertyImages: ImageProperty[] = []; + propertyImages: string[] = []; environment = environment; user: User; description: SafeHtml; @@ -69,7 +68,7 @@ export class DetailsBusinessListingComponent { } async ngOnInit() { - this.listing = await lastValueFrom(this.listingsService.getListingById(this.id, this.type)); + this.listing = await lastValueFrom(this.listingsService.getListingById(this.id, 'business')); this.propertyImages = await this.listingsService.getPropertyImages(this.listing.id); this.description = this.sanitizer.bypassSecurityTrustHtml(this.listing.description); } 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 a53b0dc..f2aa1f3 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 @@ -7,6 +7,7 @@ + @if(listing){
    @@ -41,7 +42,7 @@
- + 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 9c53190..e9860d6 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 @@ -10,13 +10,12 @@ import { InputTextModule } from 'primeng/inputtext'; import { PaginatorModule } from 'primeng/paginator'; import { StyleClassModule } from 'primeng/styleclass'; import { ToggleButtonModule } from 'primeng/togglebutton'; -import { CommercialPropertyListing, User } from '../../../../../../bizmatch-server/src/models/db.model'; +import { CommercialPropertyListing } from '../../../../../../bizmatch-server/src/models/db.model'; import { ListingCriteria, ListingType } from '../../../../../../bizmatch-server/src/models/main.model'; import { environment } from '../../../../environments/environment'; import { ImageService } from '../../../services/image.service'; import { ListingsService } from '../../../services/listings.service'; import { SelectOptionsService } from '../../../services/select-options.service'; -import { UserService } from '../../../services/user.service'; import { createGenericObject, getCriteriaStateObject, getSessionStorageHandler } from '../../../utils/utils'; @Component({ @@ -29,7 +28,6 @@ import { createGenericObject, getCriteriaStateObject, getSessionStorageHandler } export class CommercialPropertyListingsComponent { environment = environment; listings: Array; - users: Array; filteredListings: Array; criteria: ListingCriteria; realEstateChecked: boolean; @@ -48,7 +46,6 @@ export class CommercialPropertyListingsComponent { constructor( public selectOptions: SelectOptionsService, private listingsService: ListingsService, - private userService: UserService, private activatedRoute: ActivatedRoute, private router: Router, private cdRef: ChangeDetectorRef, @@ -67,41 +64,24 @@ export class CommercialPropertyListingsComponent { } async ngOnInit() {} async init() { - this.users = []; - this.listings = await this.listingsService.getListings(this.criteria, 'commercialProperty'); + 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.search(); + } - this.setStates(); - //this.filteredListings=[...this.listings]; - this.totalRecords = this.listings.length; - //this.filteredListings=[...this.listings].splice(this.first,this.rows); - this.cdRef.markForCheck(); - this.cdRef.detectChanges(); - } - setStates() { - this.statesSet = new Set(); - this.listings.forEach(l => { - if (l.state) { - this.statesSet.add(l.state); - } - }); - this.states = [...this.statesSet].map(ls => ({ name: this.selectOptions.getState(ls as string), value: ls })); - } async search() { - this.listings = await this.listingsService.getListings(this.criteria, 'commercialProperty'); - this.setStates(); - this.totalRecords = this.listings.length; - this.filteredListings = [...this.listings].splice(this.first, this.rows); + const listingReponse = await this.listingsService.getListings(this.criteria, 'commercialProperty'); + this.listings = listingReponse.data; + this.totalRecords = listingReponse.total; this.cdRef.markForCheck(); this.cdRef.detectChanges(); } onPageChange(event: any) { - //this.first = event.first; - //this.rows = event.rows; - //this.filteredListings=[...this.listings].splice(this.first,this.rows); this.criteria.start = event.first; this.criteria.length = event.rows; this.criteria.page = event.page; this.criteria.pageCount = event.pageCount; + this.search(); } imageErrorHandler(listing: ListingType) { // listing.hideImage = true; // Bild ausblenden, wenn es nicht geladen werden kann diff --git a/bizmatch/src/app/pages/subscription/edit-business-listing/edit-business-listing.component.ts b/bizmatch/src/app/pages/subscription/edit-business-listing/edit-business-listing.component.ts index 73045e0..7b0a055 100644 --- a/bizmatch/src/app/pages/subscription/edit-business-listing/edit-business-listing.component.ts +++ b/bizmatch/src/app/pages/subscription/edit-business-listing/edit-business-listing.component.ts @@ -61,7 +61,7 @@ export class EditBusinessListingComponent { maxFileSize = 3000000; uploadUrl: string; environment = environment; - propertyImages: ImageProperty[]; + propertyImages: string[]; responsiveOptions = [ { breakpoint: '1199px', 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 d3f753e..77d6a74 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,8 +103,8 @@ @for (image of propertyImages; track image) {
- - + +
} diff --git a/bizmatch/src/app/pages/subscription/edit-commercial-property-listing/edit-commercial-property-listing.component.ts b/bizmatch/src/app/pages/subscription/edit-commercial-property-listing/edit-commercial-property-listing.component.ts index d16fb4f..f100ba4 100644 --- a/bizmatch/src/app/pages/subscription/edit-commercial-property-listing/edit-commercial-property-listing.component.ts +++ b/bizmatch/src/app/pages/subscription/edit-commercial-property-listing/edit-commercial-property-listing.component.ts @@ -63,7 +63,7 @@ export class EditCommercialPropertyListingComponent { maxFileSize = 3000000; uploadUrl: string; environment = environment; - propertyImages: ImageProperty[]; + propertyImages: string[]; responsiveOptions = [ { breakpoint: '1199px', diff --git a/bizmatch/src/app/services/listings.service.ts b/bizmatch/src/app/services/listings.service.ts index c5d2820..55d5a88 100644 --- a/bizmatch/src/app/services/listings.service.ts +++ b/bizmatch/src/app/services/listings.service.ts @@ -2,7 +2,7 @@ import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Observable, lastValueFrom } from 'rxjs'; import { BusinessListing } from '../../../../bizmatch-server/src/models/db.model'; -import { ImageProperty, ListingCriteria, ListingType, ResponseBusinessListingArray } from '../../../../bizmatch-server/src/models/main.model'; +import { ListingCriteria, ListingType, ResponseBusinessListingArray, ResponseCommercialPropertyListingArray, StatesResult } from '../../../../bizmatch-server/src/models/main.model'; import { environment } from '../../environments/environment'; @Injectable({ @@ -15,9 +15,9 @@ export class ListingsService { // getAllListings():Observable{ // return this.http.get(`${this.apiBaseUrl}/bizmatch/business-listings`); // } - async getListings(criteria: ListingCriteria, listingsCategory: 'business' | 'professionals_brokers' | 'commercialProperty'): Promise { - const result = await lastValueFrom(this.http.post(`${this.apiBaseUrl}/bizmatch/listings/${listingsCategory}/search`, criteria)); - return result.data; + async getListings(criteria: ListingCriteria, listingsCategory: 'business' | 'professionals_brokers' | 'commercialProperty'): Promise { + const result = await lastValueFrom(this.http.post(`${this.apiBaseUrl}/bizmatch/listings/${listingsCategory}/search`, criteria)); + return result; } getListingById(id: string, listingsCategory?: 'business' | 'commercialProperty'): Observable { const result = this.http.get(`${this.apiBaseUrl}/bizmatch/listings/${listingsCategory}/${id}`); @@ -33,13 +33,17 @@ export class ListingsService { return await lastValueFrom(this.http.post(`${this.apiBaseUrl}/bizmatch/listings/${listingsCategory}`, listing)); } } + async getAllStates(listingsCategory?: 'business' | 'commercialProperty'): Promise { + const result = lastValueFrom(this.http.get(`${this.apiBaseUrl}/bizmatch/listings/${listingsCategory}/states/all`)); + return result; + } async deleteListing(id: string, listingsCategory: 'business' | 'professionals_brokers' | 'commercialProperty') { await lastValueFrom(this.http.delete(`${this.apiBaseUrl}/bizmatch/listings/${listingsCategory}/${id}`)); } - async getPropertyImages(id: string): Promise { - return await lastValueFrom(this.http.get(`${this.apiBaseUrl}/bizmatch/image/${id}`)); + async getPropertyImages(id: string): Promise { + return await lastValueFrom(this.http.get(`${this.apiBaseUrl}/bizmatch/image/${id}`)); } - async changeImageOrder(id: string, propertyImages: ImageProperty[]): Promise { - return await lastValueFrom(this.http.put(`${this.apiBaseUrl}/bizmatch/listings/commercialProperty/imageOrder/${id}`, propertyImages)); + async changeImageOrder(id: string, propertyImages: string[]): Promise { + return await lastValueFrom(this.http.put(`${this.apiBaseUrl}/bizmatch/listings/commercialProperty/imageOrder/${id}`, propertyImages)); } } diff --git a/bizmatch/src/app/services/user.service.ts b/bizmatch/src/app/services/user.service.ts index a9b56dd..d683696 100644 --- a/bizmatch/src/app/services/user.service.ts +++ b/bizmatch/src/app/services/user.service.ts @@ -4,7 +4,7 @@ import { jwtDecode } from 'jwt-decode'; import { Observable, distinctUntilChanged, filter, from, lastValueFrom, map } from 'rxjs'; import urlcat from 'urlcat'; import { User } from '../../../../bizmatch-server/src/models/db.model'; -import { JwtToken, ListingCriteria } from '../../../../bizmatch-server/src/models/main.model'; +import { JwtToken, ListingCriteria, ResponseUsersArray } from '../../../../bizmatch-server/src/models/main.model'; import { environment } from '../../environments/environment'; import { KeycloakService } from './keycloak.service'; @@ -116,7 +116,7 @@ export class UserService { const url = urlcat(`${this.apiBaseUrl}/bizmatch/user`, { mail }); return await lastValueFrom(this.http.get(url)); } - async search(criteria?: ListingCriteria) { - return await lastValueFrom(this.http.post(`${this.apiBaseUrl}/bizmatch/user/search`, criteria)); + async search(criteria?: ListingCriteria): Promise { + return await lastValueFrom(this.http.post(`${this.apiBaseUrl}/bizmatch/user/search`, criteria)); } }