docs: function f_tahta_ihale_idler_sort_page(_tahta_id, _arama, _opts) {
  
          if (!_arama.Siralama || (Array.isArray(_arama.Siralama) && _arama.Siralama.length == 0 )) {
              throw new exception.Istisna("Sıralama fonksiyonuna sıralama bilgisi olmadan gönderiyorsun. Kendine gel dostum!");
          }
  
          // Döneceğimiz verinin içinde toplam kayıt sayısı olacakki LAZY LOADING yapabilelim
          var baslangic = 0,
              bitis = 10,
              multi = result.rc.multi(),
              sonucAnahtari = result.kp.temp.zsetTahtaIhaleSiraliIhaleTarihineGore(_tahta_id);
  
          if (_arama.Sayfalama) {
              baslangic = _arama.Sayfalama.Sayfa * _arama.Sayfalama.SatirSayisi;
              bitis = _arama.Sayfalama.SatirSayisi;
          }
  
          l.info("Baslangic: " + baslangic);
          l.info("Bitis: " + bitis);
  
          var defer_kriter = result.dbQ.Q.defer(),
              defer = result.dbQ.Q.defer();
  
          switch (_arama.Kriter) {
  
              case schema.SABIT.URL_QUERY.KRITER.TAKIPTEKILER :
                  defer_kriter = f_tahtanin_takipteki_ihale_idleri(_tahta_id);
                  break;
              case schema.SABIT.URL_QUERY.KRITER.GIZLENENLER :
                  defer_kriter = f_tahtanin_gizlenen_ihale_idleri(_tahta_id);
                  break;
              case schema.SABIT.URL_QUERY.KRITER.AKTIFLER :
              default:
                  defer_kriter = f_tahta_ihale_idler_aktif(_tahta_id);
                  break;
          }
  
          defer_kriter.then(function (_donen_ihale_idleri) {
  
              /** @type {LazyLoadingResponse} */
              var sonuc = schema.f_create_default_object(schema.SCHEMA.LAZY_LOADING_RESPONSE);
  
              if (_donen_ihale_idleri && _donen_ihale_idleri.length == 0) {
                  sonuc.Data = [];
                  sonuc.ToplamKayitSayisi = 0;
                  defer.resolve(sonuc);
              }
              else {
                  //geçici temp e ekliyoruz sonra da sileceğiz
                  //neden?
                  //çünkü artık sadece aktif ihale idlerini değil
                  //takipteki aktif gizlenen..vb de de çekebiliriz.
                  var temp_key = "temp_tahta_ihale_" + _tahta_id;
                  result.dbQ.sadd(temp_key, _donen_ihale_idleri)
                      .then(function (_iToplamKayit) {
                          // region sıralama
                          _arama.Siralama.forEach(function (_siralama) {
  
                              switch (_siralama.Alan) {
  
                                  case schema.SABIT.URL_QUERY.SORT.ihale.yapilmaTarihi:
                                      multi.zinterstore(sonucAnahtari, 2, temp_key, result.kp.ihale.zsetYapilmaTarihi);
  
                                      _siralama.Asc
                                          ? multi.zrangebyscore(sonucAnahtari, _arama.Tarih.tarih1, _arama.Tarih.tarih2, "LIMIT", baslangic, bitis)
                                          : multi.zrevrangebyscore(sonucAnahtari, _arama.Tarih.tarih2, _arama.Tarih.tarih1, "LIMIT", baslangic, bitis);
  
                                      break;
  
                                  case schema.SABIT.URL_QUERY.SORT.ihale.ihaleninSistemeEklenmeTarihi:
  
                                      multi.zinterstore(sonucAnahtari, 2, temp_key, result.kp.ihale.zsetSistemeEklenmeTarihi);
  
                                      _siralama.Asc
                                          ? multi.zrangebyscore(sonucAnahtari, _arama.Tarih.tarih1, _arama.Tarih.tarih2, "LIMIT", baslangic, bitis)
                                          : multi.zrevrangebyscore(sonucAnahtari, _arama.Tarih.tarih2, _arama.Tarih.tarih1, "LIMIT", baslangic, bitis);
  
                                      break;
                              }
                          });
                          // endregion
  
                          // region multi exec
                          multi.exec(function (_err, _replies) {
  
                              sonuc.ToplamKayitSayisi = _iToplamKayit;
  
                              //temp le işimiz bitti sil gitsin
                              result.dbQ.del(temp_key);
  
                              if (_replies[1] && _replies[1].length > 0) {
                                  f_id(_replies[1], _tahta_id, _opts)
                                      .then(function (_ihaleler) {
                                          sonuc.Data = _ihaleler;
                                          defer.resolve(sonuc);
                                      });
                              } else {
                                  sonuc.Data = [];
                                  defer.resolve(sonuc);
                              }
                          });
                          // endregion
                      });
              }
          });
          return defer.promise;
      }