Tahtanın indexli ihale id lerini döner
@param {integer} _tahta_id
@returns {*}
428679
function f_tahta_ihale_indeksli_idler(_tahta_id) {
        return result.dbQ.exists(result.kp.temp.ssetTahtaAnahtarIhaleleri(_tahta_id))
            .then(function (_exists) {
                if (_exists == 1) {
                    return result.dbQ.smembers(result.kp.temp.ssetTahtaAnahtarIhaleleri(_tahta_id));

                } else {
                    return f_tahta_ihale_indeksli_tahta_anahtar_kelimelerine_gore(_tahta_id)
                        .then(function () {
                            return result.dbQ.smembers(result.kp.temp.ssetTahtaAnahtarIhaleleri(_tahta_id));
                        });
                }
            });
    }
1284856
function f_tahta_ihale_indeksli_toplami(_tahta_id) {
        return f_tahta_ihale_indeksli_idler_tarihe_gore_sirali(_tahta_id)
            .then(function () {
                /**
                 * önce tüm sıralı indekslenen ihale sayısı
                 * sonra da işlem yapılan tarihten (bugun) itibaren ihale sayısını buluyoruz
                 * 1. bulduklarımız tüm ihale sayısını
                 * 2.si ise tarihi geçmemiş teklif verilebilir ihale sayısını getirir
                 */

                return result.dbQ.Q.all([
                    result.dbQ.zcount(result.kp.temp.zsetTahtaAnahtaraGoreSiraliIhaleTarihineGore(_tahta_id), "-inf", "+inf"),//1
                    result.dbQ.zcount(result.kp.temp.zsetTahtaAnahtaraGoreSiraliIhaleTarihineGore(_tahta_id), new Date().getTime(), "+inf")//2
                ]).then(function (_results) {
                    console.log("_results>" + JSON.stringify(_results));

                    var toplam = parseInt(_results[0] || 0),
                        gecerli = parseInt(_results[1] || 0);

                    return {
                        Toplam: toplam,
                        Gecerli: gecerli,
                        Gecersiz: toplam - gecerli
                    };
                });
            });
    }
599489
function f_tahta_ihale_idler_aktif(_tahta_id) {
        var defer = result.dbQ.Q.defer();

        result.dbQ.exists(result.kp.temp.ssetTahtaIhale(_tahta_id))
            .then(function (_dbReply) {
                if (_dbReply == 1) {
                    result.dbQ.smembers(result.kp.temp.ssetTahtaIhale(_tahta_id))
                        .then(function (_ihale_idler) {
                            defer.resolve(_ihale_idler);
                        });

                } else {
                    l.info(result.kp.temp.ssetTahtaIhale(_tahta_id) + " anahtarı yok. Oluşturacağız...");

                    result.rc.multi()
                        .sunionstore(result.kp.temp.ssetTahtaIhaleTumu(_tahta_id), result.kp.tahta.ssetOzelIhaleleri(_tahta_id, true), result.kp.ihale.ssetGenel)
                        .sunionstore(result.kp.temp.ssetTahtaIhaleIstenmeyen(_tahta_id), result.kp.tahta.ssetOzelIhaleleri(_tahta_id, false), result.kp.tahta.ssetEzilenIhaleleri(_tahta_id), result.kp.tahta.ssetGizlenenIhaleleri(_tahta_id))
                        .sdiffstore(result.kp.temp.ssetTahtaIhale(_tahta_id), result.kp.temp.ssetTahtaIhaleTumu(_tahta_id), result.kp.temp.ssetTahtaIhaleIstenmeyen(_tahta_id))
                        .exec(function (_err, _replies) {
                            result.dbQ.smembers(result.kp.temp.ssetTahtaIhale(_tahta_id))
                                .then(function (_ihale_idler) {
                                    defer.resolve(_ihale_idler);
                                });
                        });
                }
            });

        return defer.promise;
    }
1294051
function f_temp_sil_tahta(_tahta_id) {
    return db.redis.dbQ.del(db.redis.kp.temp.ssetTahtaKullanici(_tahta_id));
}
1190073
function f_tahta_uyeleri_x_rolune_sahip(_tahta_id, _rol_id) {
        return f_tahta_uyeleri(_tahta_id)
            .then(
                /**
                 * @param {Uye[]} _uyeler
                 * @returns {Array}
                 */
                function (_uyeler) {
                    return _uyeler.whereXU({Roller: [_rol_id]});
                });
    }
1036453
function f_tahta_ihale_gizlenen_toplami(_tahta_id) {
        var db_ihale = require("./db_ihale");
        return result.dbQ.exists(result.kp.temp.ssetTahtaIhaleTumu(_tahta_id))
            .then(function (_iExist) {
                return (_iExist
                    ? 1//temp kayıtlı
                    : db_ihale.f_db_tahta_ihale_idler_aktif(_tahta_id))//temp oluşturmak için ihale idlerini çek
            })
            .then(function () {
                return result.dbQ.Q.all([
                    f_tahta_ihale_gizlenen_idler(_tahta_id),
                    result.dbQ.scard(result.kp.temp.ssetTahtaIhaleTumu(_tahta_id))

                ]).then(function (_ress) {
                    /** @type {GrafikDonut} */
                    var sonuc = schema.f_create_default_object(schema.SCHEMA.GRAFIK_DONUT);
                    var gecerli = parseInt(_ress[0].length || 0),
                        toplam = parseInt(_ress[1] || 0);

                    sonuc.Toplam = toplam;
                    sonuc.Gecerli = gecerli;
                    sonuc.Gecersiz = toplam - gecerli;
                    return sonuc;
                });
            });

    }
1005718
function f_ihaleDunyasiIhalesiniKaydet(_elm) {
        var defer = redis.dbQ.Q.defer();

        f_ihaleRedisteVarmi(_elm.ihale_id)
            .then(function (_ihaleVarmi) {
                if (_ihaleVarmi === 0) {
                    return f_ihaleIdsiniKaydet(_elm.ihale_id)
                        .then(function () {
                        //bölge ve şehir kaydet
                        return redis.dbQ.Q.all([
                            f_sehir_ekle(_elm.ilad),
                            f_bolge_ekle(_elm.bolge)
                        ])
                            .then(function (_ress) {
                            return f_ihaleyiRediseKaydet(_elm, _ress[0], _ress[1])
                        });
                    });
                }
            })
            .then(function (_result) {
                defer.resolve(_result);
            })
            .fail(function (_err) {
                defer.reject(_err);
            });

        return defer.promise;
    }
1334696
function f_kalemleri_by_page(_ihale_id, _tahta_id, _arama) {
        l.info("f_kalemleri_by_page");

        //anahtar yok
        //ihalenin aktif kalem idlerini çek
        //sonuçta result.kp.temp.ssetTahtaIhaleKalemleri(_tahta_id, _ihale_id) anahtarı oluşmuş olacaktır
        //böylece sayfalama işlemine geçebiliriz

        var defer = result.dbQ.Q.defer(),
            defer_kriter = result.dbQ.Q.defer();

        var sonuc = schema.f_create_default_object(schema.SCHEMA.LAZY_LOADING_RESPONSE);

        switch (_arama.Kriter) {
            case schema.SABIT.URL_QUERY.KRITER.TAKIPTEKILER:
            {
                defer_kriter = f_tahtanin_takipteki_kalem_idleri(_ihale_id, _tahta_id);
                break;
            }
            case schema.SABIT.URL_QUERY.KRITER.GIZLENENLER:
            {
                defer_kriter = f_tahtanin_gizlenen_kalem_idleri(_ihale_id, _tahta_id);
                break;
            }
            case schema.SABIT.URL_QUERY.KRITER.AKTIFLER:
            default:
                defer_kriter = f_aktif_kalem_idler(_ihale_id, _tahta_id);
                break;
        }

        defer_kriter.then(function (_cekilen_idler) {
                if (!_cekilen_idler || _cekilen_idler.length == 0) {

                    sonuc.ToplamKayitSayisi = 0;
                    sonuc.Data = [];
                    defer.resolve(sonuc);
                } else {

                    sonuc.ToplamKayitSayisi = _cekilen_idler.length;

                    //temp e ekle ve sonra da sil
                    var temp_key = "temp_tahta_ihale_kalem_" + _ihale_id;
                    result.dbQ.sadd(temp_key, _cekilen_idler)
                        .then(function () {

                            var baslangic = 0,
                                bitis = 10;

                            if (_arama.Sayfalama) {
                                baslangic = _arama.Sayfalama.Sayfa * _arama.Sayfalama.SatirSayisi;
                                bitis = _arama.Sayfalama.SatirSayisi;
                            }

                            l.info("Baslangic: " + baslangic);
                            l.info("Bitis: " + bitis);

                            result.dbQ.sort(temp_key, "LIMIT", baslangic, bitis)
                                .then(/**
                                 *
                                 * @param {string[]} _kalem_idler
                                 */
                                function (_kalem_idler) {

                                    //temp ile işimiz bitti sil
                                    result.dbQ.del(temp_key);

                                    if (_kalem_idler && _kalem_idler.length > 0) {
                                        var db_kalem = require('./db_kalem');

                                        /** @type {OptionsKalem} */
                                        var opt = {};
                                        opt.bArrTeklifleri = false;
                                        opt.bOnayDurumu = true;
                                        opt.bTakiptemi = true;

                                        db_kalem.f_db_kalem_id(_kalem_idler, _tahta_id, opt)
                                            .then(function (_dbKalemler) {
                                                sonuc.Data = [].concat(_dbKalemler);
                                                defer.resolve(sonuc);
                                            });
                                    } else {
                                        sonuc.Data = [];
                                        defer.resolve(sonuc);
                                    }
                                });
                        });
                }

            })
            .fail(function (_err) {
                defer.reject("İhaleye bağlı kalemler sayfalı çekilemedi!", "HATA MESAJI:" + _err);
            });

        return defer.promise;
    }
1217831
function f_kalem_gizlenen_tumu(_tahta_id) {
        return f_kalem_gizlenen_idler(_tahta_id)
            .then(function (_kalem_idler) {
                if (_kalem_idler && _kalem_idler.length > 0) {
                    return f_kalem_id(_kalem_idler, _tahta_id);
                } else {
                    return [];
                }
            });
    }
640437
function (_ihale_id, _kalem, _tahta_id) {
        console.log("f_db_kalem_index");

        function f_indexle(_tahta_id, _ihale_id, _kalem) {
            console.log(_kalem);

            return db.tahta.f_db_tahta_anahtar_tumu(_tahta_id)
                .then(
                    /**
                     *
                     * @param {AnahtarKelime[]} _arrKelimeler
                     * @returns {*}
                     */
                    function (_arrKelimeler) {
                        if (_arrKelimeler && _arrKelimeler.length > 0) {

                            _.some(_arrKelimeler, function (_elm) {
                                var anahtar = _elm.Anahtar.turkishToLower();
                                if ((_kalem.Aciklama && _kalem.Aciklama.turkishToLower().indexOf(anahtar) > -1) ||
                                    (_kalem.BransKodu && _kalem.BransKodu.turkishToLower().indexOf(anahtar) > -1)) {

                                    console.log("bulunan");
                                    console.log("açıklama:" + _kalem.Aciklama);
                                    console.log("branş:" + _kalem.BransKodu);

                                    return db.redis.dbQ.Q.all([
                                        db.anahtar.f_db_anahtar_index_ekle_kalem(_elm.Id, _kalem.Id),
                                        db.anahtar.f_db_anahtar_index_ekle_ihale(_elm.Id, _ihale_id)
                                    ]);
                                }
                            });

                        } else {
                            return _kalem;
                        }
                    })
                .then(function () {
                    return _kalem;
                });
        }

        if (_tahta_id && _tahta_id > 0) {
            //tahtaya g�re index olu�tur
            f_indexle(_tahta_id, _ihale_id, _kalem);

        } else {

            //t�m tahtalar� �ek
            return db.tahta.f_db_tahta_tumu()
                .then(function (_arrTahtalar) {
                    console.log("tahtalar");

                    //her biri i�inde d�n�p �r�n�n/kurumun/tahtan�n/kullan�c�n�n anahtarlar�na ba�l� sat�rlar� varsa ihale_id yi yaz ve indexle
                    var arrPromises = _.map(_arrTahtalar, function (_dbTahta) {
                        console.log("tahtalar i�inde d�n�yoruz");

                        console.log(_kalem);
                        return f_indexle(_dbTahta.Id, _ihale_id, _kalem)
                            .then(function () {
                                return _kalem;
                            });
                    });

                    return db.redis.db.dbQ.Q.all(arrPromises);
                })
                .then(function (_arr) {
                    console.log(_arr);
                    return _arr;
                });
        }
    }
596052
function f_kontrol(es_ihale, db_ihale, tahta_id, kurum_id, _kul_id) {

        var orj_ihale_id = db_ihale.Id;
        return f_id(orj_ihale_id, tahta_id)
            .then(function (_eski_ihale_bilgisi) {

                return f_genel_kontrol(orj_ihale_id)
                    .then(function (_iGenelIhale) {
                        if (_iGenelIhale == 1) {

                            //genel ihaleler içinde kayıtlı
                            /*önce ezilen ihalelere ekle
                             * sonra ihale_id yi bir arttır ve yeni tahta ihalesi olarak ekle*/
                            return result.dbQ.sadd(result.kp.tahta.ssetEzilenIhaleleri(tahta_id), orj_ihale_id)
                                .then(function () {
                                    return result.dbQ.incr(result.kp.ihale.idx)
                                        .then(function (_id) {
                                            es_ihale.Id = db_ihale.Id = _id;
                                            db_ihale.Orjinal_Id = orj_ihale_id;

                                            return result.dbQ.Q.all([

                                                result.dbQ.hset(result.kp.ihale.tablo, _id, JSON.stringify(db_ihale)),
                                                result.dbQ.sadd(result.kp.tahta.ssetOzelIhaleleri(tahta_id, true), _id),
                                                result.dbQ.zadd(result.kp.ihale.zsetYapilmaTarihi, db_ihale.IhaleTarihi, db_ihale.Id)

                                            ]).then(function () {

                                                /**ihaleyi indexle
                                                 * ama önce ihale id yi indexlenmişse listeden kaldırmalıyız.
                                                 * (gelen konu içinde indexlenecek anahtar var mı bilmiyoruz, bu nedenle kaldırılmalı)
                                                 */

                                                    //_ihale, _kurum_id, _tahta_id, _kul_id
                                                emitter.emit(schema.SABIT.OLAY.IHALE_EKLENDI, es_ihale, kurum_id, tahta_id, _kul_id);

                                                //ihalenin kurumunu ata
                                                if (kurum_id > 0) {
                                                    return result.dbQ.Q.all([
                                                        result.dbQ.hset(result.kp.ihale.hsetYapanKurumlari, db_ihale.Id, kurum_id),
                                                        result.dbQ.srem(result.kp.kurum.ssetIhaleleri(_eski_ihale_bilgisi.Kurum_Id), db_ihale.Id),
                                                        result.dbQ.sadd(result.kp.kurum.ssetIhaleleri(kurum_id), db_ihale.Id)
                                                    ]);
                                                } else {
                                                    return db_ihale;
                                                }

                                            }).then(function () {
                                                //satırları kopyala ve durumlarını düzenle
                                                return f_guncellendi_satir_kontrol(tahta_id, db_ihale.Id, orj_ihale_id);
                                            }).then(function () {
                                                //teklifi var mı kontrol et varsa düzenle
                                                return f_guncellendi_teklif_kontrol(tahta_id, orj_ihale_id, db_ihale.Id);
                                            }).then(function () {

                                                //ihale bilgisini dön
                                                return f_id(db_ihale.Id, tahta_id);
                                            });
                                        });
                                });
                        }
                        else {

                            // bu ihale genel değil, tahtaya eklenen özel ihaledir

                            return result.dbQ.Q.all([
                                result.dbQ.hset(result.kp.ihale.tablo, db_ihale.Id, JSON.stringify(db_ihale)),
                                result.dbQ.zrem(result.kp.ihale.zsetYapilmaTarihi, db_ihale.Id),
                                result.dbQ.zadd(result.kp.ihale.zsetYapilmaTarihi, db_ihale.IhaleTarihi, db_ihale.Id)

                            ]).then(function () {
                                /**ihaleyi indexle
                                 * ama önce ihale id yi indexlenmişse listeden kaldırmalıyız.
                                 * (gelen konu içinde indexlenecek anahtar var mı bilmiyoruz, bu nedenle kaldırılmalı)
                                 */
                                emitter.emit(schema.SABIT.OLAY.IHALE_GUNCELLENDI,
                                    {
                                        eski_ihale: _eski_ihale_bilgisi,
                                        yeni_ihale: es_ihale,
                                        tahta_id: tahta_id,
                                        kul_id: _kul_id
                                    });

                                if (kurum_id > 0) {

                                    //ihalenin kurumunu yenisiyle değiştiriyoruz
                                    //kurumun ihalelerinde eski kurumu çıkarıp yenisini ekliyoruz

                                    return result.dbQ.Q.all([
                                        result.dbQ.hset(result.kp.ihale.hsetYapanKurumlari, db_ihale.Id, kurum_id),
                                        result.dbQ.srem(result.kp.kurum.ssetIhaleleri(_eski_ihale_bilgisi.Kurum_Id), db_ihale.Id),
                                        result.dbQ.sadd(result.kp.kurum.ssetIhaleleri(kurum_id), db_ihale.Id)
                                    ]);
                                }
                                else {
                                    return db_ihale;
                                }
                            }).then(function () {
                                return f_id(db_ihale.Id, tahta_id);
                            });
                        }
                    });
            });
    }
1024348
function f_tahta_kurum_idleri(_tahta_id) {
        return result.dbQ.smembers(result.kp.tahta.ssetOzelKurumlari(_tahta_id, true));
    }
52909
function _f_arama_kriterinden_ihale_idleri(_arama, _tahta_id) {
        // Validasyon
        if (!_arama) throw exception.Istisna('Arama kriteri boş bırakılamaz!');
        if (!_tahta_id) throw exception.Istisna('Tahta ID falsy olamaz!');

        var defer_kriter = 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;
        }

        return defer_kriter.promise;
    }
946112
function f_tahta_ihale_indeksli_idler_tarihe_gore_sirali(_tahta_id) {
        console.log("f_db_tahta_ihale_indeksli_idler_tarihe_gore_sirali");
        return f_tahta_ihale_indeksli_idler(_tahta_id)
            .then(function () {
                return result.dbQ.exists(result.kp.temp.zsetTahtaAnahtaraGoreSiraliIhaleTarihineGore(_tahta_id))
                    .then(function (_iExist) {
                        return _iExist == 1
                            ? 1
                            : (result.dbQ.zinterstore(result.kp.temp.zsetTahtaAnahtaraGoreSiraliIhaleTarihineGore(_tahta_id), 2,
                            result.kp.temp.ssetTahtaAnahtarIhaleleri(_tahta_id),
                            result.kp.ihale.zsetYapilmaTarihi));
                    });
            });
    }
239029
function f_bolge_ekle(_bolge, _tahta_id) {

        /**
         *
         * @param {Bolge} _bolge
         * @param {integer} _tahta_id
         * @returns {*}
         */
        function f_bolge_ekle(_bolge, _tahta_id) {
            //SON EKLENEN bölgenin İD SİNİ ÇEK VE EKLEME İŞLEMİNE BAŞLA

            return result.dbQ.sismember(result.kp.bolge.ssetAdlari, _bolge.Adi)
                .then(function (_iKayitli) {
                    if (_iKayitli == 1) {
                        return f_bolge_bul_adindan(_bolge.Adi);
                    } else {
                        return result.dbQ.incr(result.kp.bolge.idx)
                            .then(function (_id) {
                                _bolge.Id = _id;

                                //tahta_id yoksa genele eklenecek varsa da tahtanın özel bölgelerine
                                return result.dbQ.Q.all([
                                        result.dbQ.hset(result.kp.bolge.tablo, _id, JSON.stringify(_bolge)),
                                        result.dbQ.sadd(result.kp.bolge.ssetAdlari, _bolge.Adi),
                                        !_tahta_id ? result.dbQ.sadd(result.kp.bolge.ssetBolgeGenel, _id) : null,
                                        _tahta_id ? result.dbQ.sadd(result.kp.tahta.ssetBolgeleri(_tahta_id, true), _id) : null
                                    ])
                                    .then(function () {
                                        return f_bolge_id(_id);
                                    });
                            });
                    }
                });
        }

        if (Array.isArray(_bolge) && _bolge.length > 0) {
            return _bolge.mapX(null, f_bolge_ekle, _tahta_id).allX();
        }
        else {
            return f_bolge_ekle(_bolge, _tahta_id);
        }
    }
362792
function f_teklifleri(tahta_id, ihale_id) {
        var defer = result.dbQ.Q.defer();

        //ihaleye bağlı teklifleri bul
        result.rc.multi()
            .sinterstore("temp_ihale_teklif", result.kp.ihale.ssetTeklifleri(ihale_id), result.kp.tahta.ssetTeklifleri(tahta_id, true))
            .smembers("temp_ihale_teklif")
            .expire("temp_ihale_teklif", 10)
            .exec(function (err, replies) {
                l.info("MULTI REPLY" + JSON.stringify(replies));

                if (replies[1] && replies[1].length > 0) {
                    defer.resolve(replies[1]);

                } else {
                    defer.resolve(null);
                }
            });

        return defer.promise;
    }
1287610
function f_indekslenen_ve_takip_edilen_kalem_idler(_tahta_id) {

        var db_kalem = require("./db_kalem");
        return result.dbQ.Q.all([
                db_kalem.f_db_kalem_indeksli_idler(_tahta_id),
                db_kalem.f_db_kalem_takip_idler(_tahta_id)
            ])
            .then(function (_ress) {

                var indeksliler = _ress[0],
                    takipteki_kalemler = _ress[1];

                return indeksliler.unionXU(takipteki_kalemler);
            });
    }