Skip to content

Commit e05d46c

Browse files
committed
refactor(companies): Update company data handling and display formatting
- Modify company data schema to support flattened address and social fields - Update CompanyCard, CompanyProfile, and CompaniesPage to capitalize industry and company size - Refactor company settings page to map form data to new database schema - Add support for both nested and flattened company data structures - Improve data consistency and display formatting across company-related components
1 parent 1afe8b1 commit e05d46c

File tree

5 files changed

+61
-25
lines changed

5 files changed

+61
-25
lines changed

app/companies/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ export default function CompaniesPage() {
232232
<SelectContent>
233233
{industries.map((industry) => (
234234
<SelectItem key={industry} value={industry}>
235-
{industry}
235+
{industry === 'All' ? 'All' : industry.charAt(0).toUpperCase() + industry.slice(1)}
236236
</SelectItem>
237237
))}
238238
</SelectContent>

app/dashboard/company/[slug]/settings/page.tsx

Lines changed: 42 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -49,17 +49,17 @@ export default function CompanySettingsPage() {
4949
email: currentCompany?.email || '',
5050
phone: currentCompany?.phone || '',
5151
address: {
52-
street: currentCompany?.address?.street || '',
53-
city: currentCompany?.address?.city || '',
54-
state: currentCompany?.address?.state || '',
55-
country: currentCompany?.address?.country || '',
56-
zip: currentCompany?.address?.zip || '',
52+
street: currentCompany?.address_street || '',
53+
city: currentCompany?.address_city || '',
54+
state: currentCompany?.address_state || '',
55+
country: currentCompany?.address_country || '',
56+
zip: currentCompany?.address_zip || '',
5757
},
5858
socials: {
59-
linkedin: currentCompany?.socials?.linkedin || '',
60-
twitter: currentCompany?.socials?.twitter || '',
61-
facebook: currentCompany?.socials?.facebook || '',
62-
instagram: currentCompany?.socials?.instagram || '',
59+
linkedin: currentCompany?.linkedin_url || '',
60+
twitter: currentCompany?.twitter_url || '',
61+
facebook: currentCompany?.facebook_url || '',
62+
instagram: currentCompany?.instagram_url || '',
6363
},
6464
})
6565

@@ -85,17 +85,17 @@ export default function CompanySettingsPage() {
8585
email: currentCompany.email || '',
8686
phone: currentCompany.phone || '',
8787
address: {
88-
street: currentCompany.address?.street || '',
89-
city: currentCompany.address?.city || '',
90-
state: currentCompany.address?.state || '',
91-
country: currentCompany.address?.country || '',
92-
zip: currentCompany.address?.zip || '',
88+
street: currentCompany.address_street || '',
89+
city: currentCompany.address_city || '',
90+
state: currentCompany.address_state || '',
91+
country: currentCompany.address_country || '',
92+
zip: currentCompany.address_zip || '',
9393
},
9494
socials: {
95-
linkedin: currentCompany.socials?.linkedin || '',
96-
twitter: currentCompany.socials?.twitter || '',
97-
facebook: currentCompany.socials?.facebook || '',
98-
instagram: currentCompany.socials?.instagram || '',
95+
linkedin: currentCompany.linkedin_url || '',
96+
twitter: currentCompany.twitter_url || '',
97+
facebook: currentCompany.facebook_url || '',
98+
instagram: currentCompany.instagram_url || '',
9999
},
100100
})
101101
}
@@ -197,12 +197,35 @@ export default function CompanySettingsPage() {
197197

198198
setLoading(true)
199199
try {
200+
// Flatten address and socials objects to match database schema
201+
const updateData = {
202+
name: formData.name,
203+
legal_name: formData.legal_name,
204+
description: formData.description,
205+
website: formData.website,
206+
industry: formData.industry,
207+
company_size: formData.company_size,
208+
email: formData.email,
209+
phone: formData.phone,
210+
// Flatten address fields
211+
address_street: formData.address.street,
212+
address_city: formData.address.city,
213+
address_state: formData.address.state,
214+
address_country: formData.address.country,
215+
address_zip: formData.address.zip,
216+
// Flatten social fields
217+
linkedin_url: formData.socials.linkedin,
218+
twitter_url: formData.socials.twitter,
219+
facebook_url: formData.socials.facebook,
220+
instagram_url: formData.socials.instagram,
221+
}
222+
200223
const response = await fetch(`/api/companies/${currentCompany.slug}`, {
201224
method: 'PUT',
202225
headers: {
203226
'Content-Type': 'application/json',
204227
},
205-
body: JSON.stringify(formData),
228+
body: JSON.stringify(updateData),
206229
})
207230

208231
if (!response.ok) {

components/companies/CompanyCard.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export function CompanyCard({
4141
</CardTitle>
4242
{company.industry && (
4343
<CardDescription className="text-xs mt-1">
44-
{company.industry}
44+
{company.industry.charAt(0).toUpperCase() + company.industry.slice(1)}
4545
</CardDescription>
4646
)}
4747
</div>
@@ -63,7 +63,7 @@ export function CompanyCard({
6363
{company.company_size && (
6464
<Badge variant="secondary" className="text-xs">
6565
<Users className="h-3 w-3 mr-1" />
66-
{company.company_size}
66+
{company.company_size.charAt(0).toUpperCase() + company.company_size.slice(1)}
6767
</Badge>
6868
)}
6969
{company.address?.city && (

components/companies/CompanyProfile.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,19 +66,19 @@ export function CompanyProfile({ company, isOwner = false, className }: CompanyP
6666
{company.industry && (
6767
<Badge variant="secondary">
6868
<Building2 className="h-3 w-3 mr-1" />
69-
{company.industry}
69+
{company.industry.charAt(0).toUpperCase() + company.industry.slice(1)}
7070
</Badge>
7171
)}
7272
{company.company_size && (
7373
<Badge variant="outline">
7474
<Users className="h-3 w-3 mr-1" />
75-
{company.company_size}
75+
{company.company_size.charAt(0).toUpperCase() + company.company_size.slice(1)}
7676
</Badge>
7777
)}
7878
{company.subscription_tier !== 'free' && (
7979
<Badge variant="default">
8080
<Award className="h-3 w-3 mr-1" />
81-
{company.subscription_tier}
81+
{company.subscription_tier.charAt(0).toUpperCase() + company.subscription_tier.slice(1)}
8282
</Badge>
8383
)}
8484
</div>

types/company.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,21 @@ export interface Company {
1111
company_size?: 'startup' | 'small' | 'medium' | 'large' | 'enterprise'
1212
email: string
1313
phone?: string
14+
// Nested address object (for backward compatibility)
1415
address?: CompanyAddress
16+
// Flattened address fields (actual database columns)
17+
address_street?: string
18+
address_city?: string
19+
address_state?: string
20+
address_country?: string
21+
address_zip?: string
22+
// Nested socials object (for backward compatibility)
1523
socials?: CompanySocials
24+
// Flattened social fields (actual database columns)
25+
linkedin_url?: string
26+
twitter_url?: string
27+
facebook_url?: string
28+
instagram_url?: string
1629
verification_status: 'pending' | 'verified' | 'rejected'
1730
verification_documents?: string[]
1831
verified_at?: string

0 commit comments

Comments
 (0)