Apply saved filters to tender search with visible region criteria

This commit is contained in:
2026-09-06 13:40:26 +03:00
parent 2a9281c9a5
commit 2f86c6d690
8 changed files with 90 additions and 11 deletions
+19
View File
@@ -0,0 +1,19 @@
const norm=value=>String(value || '').normalize('NFC').trim().toLocaleUpperCase('tr-TR');
export const REGION_CITIES={
'MARMARA BÖLGESİ':'Balıkesir,Bilecik,Bursa,Çanakkale,Edirne,İstanbul,Kırklareli,Kocaeli,Sakarya,Tekirdağ,Yalova',
'EGE BÖLGESİ':'Afyonkarahisar,Aydın,Denizli,İzmir,Kütahya,Manisa,Muğla,Uşak',
'AKDENİZ BÖLGESİ':'Adana,Antalya,Burdur,Hatay,Isparta,Kahramanmaraş,Mersin,Osmaniye',
'İÇ ANADOLU BÖLGESİ':'Aksaray,Ankara,Çankırı,Eskişehir,Karaman,Kayseri,Kırıkkale,Kırşehir,Konya,Nevşehir,Niğde,Sivas,Yozgat',
'KARADENİZ BÖLGESİ':'Amasya,Artvin,Bartın,Bayburt,Bolu,Çorum,Düzce,Giresun,Gümüşhane,Karabük,Kastamonu,Ordu,Rize,Samsun,Sinop,Tokat,Trabzon,Zonguldak',
'DOĞU ANADOLU BÖLGESİ':'Ağrı,Ardahan,Bingöl,Bitlis,Elazığ,Erzincan,Erzurum,Hakkari,Iğdır,Kars,Malatya,Muş,Tunceli,Van',
'GÜNEYDOĞU ANADOLU BÖLGESİ':'Adıyaman,Batman,Diyarbakır,Gaziantep,Kilis,Mardin,Siirt,Şanlıurfa,Şırnak',
};
const cityRegions=new Map(Object.entries(REGION_CITIES).flatMap(([region,cities])=>cities.split(',').map(city=>[norm(city),region])));
export function matchesRegion(tender,region){return !region || cityRegions.get(norm(tender.sehir))===norm(region);}
export function matchesProcurement(tender,procedure){return !procedure || [tender.usul,tender.ihaleUsulu,tender.alimTuru].some(value=>norm(value)===norm(procedure));}
export function savedFilterCriteria(filter){
const read=key=>{if(filter[key]!=null&&typeof filter[key]!=='string')throw new Error('Kayıtlı filtre ölçütü geçersiz.');return (filter[key] || '').trim();};
const region=read('bolge');
if(region&&!Object.keys(REGION_CITIES).includes(norm(region)))throw new Error('Kayıtlı bölge tanınmadı; filtreyi yeniden düzenleyin.');
return {city:read('sehir'),region:region?norm(region):'',sector:read('sektor'),institution:read('kurumTipi'),procedure:read('usul')};
}