Fix entity filters

This commit is contained in:
gpt-engineer-app[bot]
2025-10-28 17:13:27 +00:00
parent 80e63ab355
commit e7bcba8fee
3 changed files with 322 additions and 23 deletions

View File

@@ -1,4 +1,4 @@
import { useState, useEffect } from 'react';
import React, { useState, useEffect } from 'react';
import { useNavigate } from 'react-router-dom';
import { Header } from '@/components/layout/Header';
import { Input } from '@/components/ui/input';
@@ -78,11 +78,76 @@ export default function Manufacturers() {
}
};
const filteredCompanies = companies.filter(company =>
company.name.toLowerCase().includes(searchQuery.toLowerCase()) ||
company.headquarters_location?.toLowerCase().includes(searchQuery.toLowerCase()) ||
company.description?.toLowerCase().includes(searchQuery.toLowerCase())
);
const filteredCompanies = React.useMemo(() => {
return companies.filter(company => {
// Search filter
const matchesSearch = company.name.toLowerCase().includes(searchQuery.toLowerCase()) ||
company.headquarters_location?.toLowerCase().includes(searchQuery.toLowerCase()) ||
company.description?.toLowerCase().includes(searchQuery.toLowerCase());
if (!matchesSearch) return false;
// Person type filter
if (filters.personType !== 'all') {
if (filters.personType === 'individual' && company.person_type !== 'individual') {
return false;
}
if (filters.personType === 'company' && company.person_type === 'individual') {
return false;
}
}
// Country filter
if (filters.countries.length > 0) {
if (!company.headquarters_location ||
!filters.countries.some(c => company.headquarters_location?.includes(c))) {
return false;
}
}
// Rating filter
const rating = company.average_rating || 0;
if (rating < filters.minRating || rating > filters.maxRating) {
return false;
}
// Review count filter
const reviewCount = company.review_count || 0;
if (reviewCount < filters.minReviewCount || reviewCount > filters.maxReviewCount) {
return false;
}
// Founded date filter
if (filters.foundedDateFrom || filters.foundedDateTo) {
if (!company.founded_year) {
return false;
}
if (filters.foundedDateFrom && company.founded_year < filters.foundedDateFrom.getFullYear()) {
return false;
}
if (filters.foundedDateTo && company.founded_year > filters.foundedDateTo.getFullYear()) {
return false;
}
}
// Has rating filter
if (filters.hasRating && !company.average_rating) {
return false;
}
// Has founded date filter
if (filters.hasFoundedDate && !company.founded_year) {
return false;
}
// Is individual filter
if (filters.isIndividual && company.person_type !== 'individual') {
return false;
}
return true;
});
}, [companies, searchQuery, filters]);
const handleCreateSubmit = async (data: any) => {
try {