class Place < ActiveRecord::Base


  def self.name_from_code(code)
    places_bulk = %Q{Aleksandrovac 78255
                     Avtovac 89245
                     Balatun 76310
                     Banja Luka 78000
                     Banovici 75290
                     Batkovic 76312
                     Begov Han 72233
                     Berkovici 88363
                     Bihac 77000
                     Bijela 76204
                     Bijeljina 76300
                     Bijelo Brdo 73263
                     Bileca 89230
                     Biljesevo 72248
                     Bjelimici 88407
                     Blagaj 88201
                     Blatnica 74275
                     Blatnica Kod Mostara 88263
                     Blazuj 71215
                     Bok 76277
                     Boljanic 74322
                     Bosanska Krupa 77240
                     Bosanski Petrovac 77250
                     Bosansko Grahovo 80270
                     Bradina 88408
                     Bratunac 75420
                     Brcko 76000
                     Brcko Distrikt 76100
                     Brekovica 77205
                     Brestovo 74210
                     Brestovsko 71255
                     Breza 71370
                     Brezicani 79208
                     Brezik 76109
                     Brezovo Polje 76216
                     Brijesnica 74206
                     Brijesnica Kod Doboja 74206
                     Brijesnica Mala 74206
                     Brijesnica Velika 74206
                     Brka 76206
                     Brnjic 72243
                     Brocanac 88243
                     Brocanac 88243
                     Brod Kod Foce 73309
                     Brodac 76313
                     Bronzani Majdan 78204
                     Bucici 72290
                     Bugojno 70230
                     Bukinje 75203
                     Buletic 74277
                     Buna 88202
                     Busovaca 72260
                     Buturovicpolje 88409
                     Buzim 77245
                     Cajnice 73280
                     Caparde 75405
                     Capljina 88300
                     Cardak 72224
                     Careva Cuprija 71347
                     Catici 72246
                     Cazin 77220
                     Cecava 74274
                     Celebici 88404
                     Celebici Lusnic 80203
                     Celebici Kod Foce 73307
                     Celic 75246
                     Celinac 78240
                     Cemerno 89243
                     Cerin 88265
                     Cerovica 74211
                     Cerovljani 78403
                     Citluk 88260
                     Coralici 77226
                     Crkvina 76239
                     Crnici 88367
                     Crnjelovo 76328
                     Dejcici 71221
                     Demirovac 79243
                     Derventa 74400
                     Derventa Kod Vlasenice 75444
                     Divin 89233
                     Doboj 74000
                     Doboj Istok 74206
                     Doboj Jug 74203
                     Doborovci 75328
                     Dobosnica 75308
                     Dobretici 77210
                     Dobrinja 71245
                     Dobrljin 79223
                     Dobro Selo 77242
                     Dobrun 73247
                     Dokanj 75206
                     Dolac Na Lasvi 72278
                     Domaljevac 76233
                     Domanovici 88305
                     Donja Mahala 76274
                     Donja Medjidja 76257
                     Donja Slatina 76327
                     Donje Mostre 71305
                     Donji Agici 79228
                     Donji Memici 88343
                     Donji Vakuf 70220
                     Donji Vijacani 78432
                     Donji Vrbljani 79289
                     Donji Zabar 76273
                     Dragaljevac 76323
                     Dragalovci 74209
                     Dragocaj 78215
                     Dreznica 88215
                     Drinjaca 75410
                     Drinovci 88344
                     Drvar 80260
                     Duboki Potok 75358
                     Dubostica 75308
                     Dubrave 78411
                     Dubrave Donje 75274
                     Dubrave Gornje 75273
                     Dubrovik 79227
                     Dugo Polje 74483
                     Djurdjevik 75272
                     Dusanovo 75445
                     Duzice 88342
                     Dvorovi 76311
                     Fajtovci 79264
                     Foca 73300
                     Fojnica 71270
                     Fojnica Kod Gacka 89247
                     Gabela Polje 88306
                     Gacko 89240
                     Glamoc 80230
                     Glavicice 76318
                     Globarica 72230
                     Gojevici 71275
                     Gorazde 73000
                     Gorica 88340
                     Gornja Koprivna 77222
                     Gornja Slatina 76238
                     Gornja Tuzla 75208
                     Gornji Kamengrad 79266
                     Gornji Podgradci 78405
                     Gornji Rahic 76207
                     Gornji Strpci 78439
                     Gornji Teslic 74272
                     Gornji Vakuf Uskoplje 70240
                     Gornji Zovik 76207
                     Grab 89201
                     Grabovica 78227
                     Gracanica 75320
                     Gracanica Kod Bugojna 70233
                     Gracanica Selo 75276
                     Gradac 88392
                     Gradacac 76250
                     Gradiska 78400
                     Grude 88340
                     Guber 80205
                     Listani 80204
                     Guca Gora 72277
                     Hadzici 71240
                     Hajdarevici 72225
                     Haljinici 72245
                     Han Bila 72281
                     Han Pijesak 71360
                     Hrasnica 71212
                     Hrasno 88395
                     Hresa 71144
                     Hrvacani 78436
                     Husino 75216
                     Hutovo 88394
                     Ilidza 71210
                     Ilijas 71380
                     Ilovaca 73208
                     Imljani 78234
                     Izacic 77208
                     Jablanica 88420
                     Jahorina 71423
                     Jajce 70101
                     Janja 76316
                     Janjici 72215
                     Jare 88224
                     Javorani 78233
                     Jelah 74264
                     Jezerski 77241
                     Johova 79244
                     Josanica 73319
                     Josavka 78244
                     Kacuni 72264
                     Kakanj 72240
                     Kalenderovci 74413
                     Kalesija 75260
                     Kalinovik 71230
                     Kamenica 77204
                     Kaonik 72265
                     Kasindo 71213
                     Kazaginac 80246
                     Kifino Selo 88283
                     Kiseljak 71250
                     Kiseljak, Kod Tuzle 75211
                     Kladanj 75280
                     Klakar Donji 74452
                     Kljuc 79280
                     Klobuk 88324
                     Klokotnica 74207
                     Knezevo 78230
                     Skender Vakuf 78230
                     Knezica 79246
                     Knezina 71356
                     Kobas 78423
                     Kocerin 88226
                     Kocicevo 78409
                     Kola 78207
                     Kongora 80244
                     Konjic 88400
                     Konjoder 77249
                     Koprivna 74489
                     Koraj 75247
                     Kornica 76236
                     Kosova 74253
                     Kostric 76276
                     Kotor Varos 78220
                     Kotorsko 74215
                     Kovaci 72226
                     Kozarac 79002
                     Bosanska Dubica 79240
                     Kozluk 75413
                     Kraljeva Sutjeska 72244
                     Kresevo 71260
                     Kriskovci 78256
                     Krupa Na Vrbasu 78206
                     Krusevo 88203
                     Kukulje 78424
                     Kula 71216
                     Kulasi 78443
                     Kulen Vakuf 77206
                     Kupres 80320
                     Laktasi 78250
                     Laminci Sredjani 78407
                     Lamovita 79204
                     Lastva 89208
                     Lasva 72216
                     Liplje 78222
                     Lipnica 75213
                     Lisnja 78434
                     Livno 80101
                     Ljubace 75214
                     Ljubija 79206
                     Ljubinje 88380
                     Ljubomir 89209
                     Ljubuski 88320
                     Ljuti Dolac 88223
                     Loncari 76278
                     Lopare 75240
                     Lukavac 75300
                     Lukavac Mjesto 75301
                     Lukavica 75327
                     Lusci Palanka 79267
                     Maglaj 74250
                     Majevac 74216
                     Mala Kladusa 77235
                     Mala Socanica 74418
                     Malesici 75320
                     Maoca 76208
                     Masici 78410
                     Maslovare 78223
                     Matici 76271
                     Matuzici 74203
                     Medjugorje 88266
                     Medjuvodje 79247
                     Mehurici 72282
                     Mesihovina 80243
                     Milici 75446
                     Miljeno 73283
                     Miljevina 73313
                     Milosevac 74485
                     Miricina 75329
                     Modrica 74480
                     Mokro 71428
                     Mosko 89204
                     Mostar 88000
                     Mostar, Jug 88000
                     Mostar, Jugozapad 88000
                     Mostar, Sjever 88000
                     Mostar, Zapad 88000
                     Mramor 75212
                     Mravinjac 73206
                     Mrkodol 79544
                     Mrkonjic Grad 70260
                     Nemila 72212
                     Neum 88390
                     Nevesinje 88280
                     Nova Bila 72276
                     Nova Topola 78418
                     Bosanski Novi 79220
                     Novi Seher 74254
                     Novi Travnik 72290
                     Nozicko 78428
                     Oborci 70225
                     Obudovac 76235
                     Odzak 76290
                     Vukosavlje 74470
                     Odzak Kod Nevesinja 88285
                     Olovo 71340
                     Omarska 79203
                     Orahova 78406
                     Orahovica Donja 75323
                     Orasje 76270
                     Osinja 74412
                     Osjecani 74225
                     Osmaci 75406
                     Ostra Luka 79263
                     Ostrozac 88423
                     Ostrozac Kod Cazina 77228
                     Otoka 77244
                     Ozimica 72238
                     Palackovci 78437
                     Pale 71420
                     Papraca 75435
                     Pazaric 71243
                     Pecigrad 77227
                     Pelagicevo 76256
                     Perin Han 72112
                     Petrovo 74317
                     Pilica 75412
                     Piskavica 78217
                     Pocitelj 88305
                     Poculica 72252
                     Podgrab 71425
                     Podhum 80209
                     Podlugovi 71387
                     Podnovlje 74217
                     Podorasje Kod Srebrenika 75355
                     Podzvizd 77232
                     Poljice 75303
                     Popovi 75320
                     Posusje 88240
                     Potkozarje 78216
                     Potocani 78435
                     Potoci 88208
                     Praca 73290
                     Prelovo 73245
                     Previja 79287
                     Pribinic 74276
                     Priboj Kod Lopara 75249
                     Prijedor 79101
                     Priluka 80202
                     Prisoje 80245
                     Prnjavor 78430
                     Prolog 80206
                     Prozor 88440
                     Prusac 70223
                     Przici 71335
                     Puhovac 72207
                     Puracic 75305
                     Radisici 88325
                     Rainci Gornji 75268
                     Rakitno 88245
                     Rakovica 71217
                     Rasko Polje 80247
                     Razboj Lijevce 78429
                     Razljevo 76218
                     Ribnik 79288
                     Ripac 77215
                     Rogatica 73220
                     Rudice 79226
                     Rudo 73260
                     Ruzici 88347
                     Bosanski Samac 76230
                     Sanica Gornja 79285
                     Sanski Most 79260
                     Sapna 75411
                     Saracica 78202
                     Sarajevo 71000
                     Sarajevo, Centar 71103
                     Sarajevo, Novi Grad 71160
                     Sarajevo, Novo Sarajevo 71120
                     Sarajevo, Stari Grad 71140
                     Satorovici 76209
                     Sekovici 73305
                     Sekovici 75450
                     Semizovac 71321
                     Seonjaci 76205
                     Serici 75275
                     Sibosnica 75245
                     Sibovska 78433
                     Simin Han 75207
                     Sipovo 78364
                     Siprage 78224
                     Siroki Brijeg 88220
                     Sitnesi 78422
                     Sitnica 79283
                     Skelani 75436
                     Skugric 74261
                     Sladna 75353
                     Slatina Ilidza 78253
                     Smrtici 78438
                     Snjegotina Gornja 74279
                     Sockovac 74323
                     Sokolac 71350
                     Sokolovici 71210
                     Sovici 88345
                     Spionica 75356
                     Srbac 78420
                     Srebrenica 75430
                     Srebrenik 75350
                     Srednje 71385
                     Sreflije 79249
                     Srnice 76258
                     Bosanska Kostajnica 79224
                     Bosanski Brod 74450
                     Istocno Gorazde 73110
                     Istocno Orasje 76278
                     Istocno Sarajevo 71123
                     Stanari 74208
                     Stara Dubrava 78243
                     Stari Majdan 79268
                     Stijena 77224
                     Stjenice 73223
                     Stjepan Polje 75324
                     Stolac 88360
                     Stranjani 72209
                     Stricici 78208
                     Strpci 75305
                     Studenci 88323
                     Stupari 75283
                     Sturlic 77223
                     Suho Polje 75344
                     Sujica 80249
                     Svodna 79229
                     Tarcin 71244
                     Teocak 75414
                     Tesanj 74260
                     Tesanjka 74266
                     Teslic 74270
                     Tihaljina 88348
                     Tinja 75357
                     Tisca 75455
                     Todorovo 77233
                     Tojsici 75265
                     Tolisa 76272
                     Tomina 79265
                     Tomislavgrad 80240
                     Topcic Polje 72213
                     Travnik 72270
                     Trebinja 88375
                     Trebinje 89000
                     Trn 78252
                     Trnava Donja 76335
                     Trnjaci 76310
                     Trnovo 71220
                     Trzacka Rastela 77225
                     Turbe 72283
                     Turija 75306
                     Turjak Kod Bosanske Gradiske 78404
                     Tuzla 75000
                     Ugljevik 76330
                     Ugodnovici 74278
                     Ulog 71233
                     Usora 74230
                     Ustikolina 73250
                     Uvac 73265
                     Vardiste 73249
                     Vares 71330
                     Varoska Rijeka 77245
                     Velika Bukovica 74213
                     Velika Gata 77207
                     Velika Kladusa 77230
                     Velika Obarska 76329
                     Vidosi 88208
                     Vidovice 76275
                     Vinac 70202
                     Vir Kod Posusja 88247
                     Visegrad 73240
                     Visici 88307
                     Visoko 71300
                     Vitez 72250
                     Vitina 88326
                     Vitkovci Donji 74265
                     Vitkovici 73205
                     Vlasenica 75440
                     Vogosca 71320
                     Vojkovici 71123
                     Voljevac 70246
                     Vozuca 72227
                     Vranjak 74488
                     Vrapcici 88113
                     Vrazici 75248
                     Vrbanja Kod Banja Luke 78211
                     Vrbanjci 78225
                     Vrbaska 78408
                     Vrnograc 77231
                     Vrsani 76325
                     Vrsta 77203
                     Vuckovci 76254
                     Vukosavlje 74470
                     Zabar Donji 76273
                     Zaborak 73287
                     Zabrdje 72220
                     Zabrdje 76333
                     Zabrdje Kod Kotor Varosi 78221
                     Zaluzani 78214
                     Zavidovici 72220
                     Zboriste 74451
                     Zelinja 76259
                     Zeljezno Polje 72236
                     Zenica 72000
                     Zepce 72230
                     Zitomislici 88268
                     Zivinice 75270
                     Zupca 71370
                     Zvornik 75400}

    separator = /(.*)\s(\d{5})/
    places = places_bulk.split("\n")
    places.each do |place|
    	matches = separator.match(place)
  		return matches[1].strip if matches and matches[2] === code
    end

    return "<nepoznato mjesto>";
  end

  def self.by_code_or_default(code)
    # removes garbage and converts whitespace prefixed codes correctly - like " 71000" -> 71000 
    valid_code = code.to_i.to_s 
    place = Place.where(postal_code: valid_code).first
    place ||= Place.where("postal_code is null or postal_code = ''").first
    return place
  end

end
