Veriyi güncellemeden önceki hali çekilir ve LOG alanına atılır.
Güncellenecek nesnenin tarih bilgisi işlemin saati olarak güncellenir ve HSET ile işlem tamamlanır.
@param _tahta_db
@param _kul_id
@returns {*}
421283
function f_tahta_guncelle(_tahta_db, _kul_id) {
        delete _tahta_db.Kurum;
        l.info("f_db_tahta_guncelle");
        return result.dbQ.hset(result.kp.tahta.tablo, _tahta_db.Id, JSON.stringify(_tahta_db))
            .then(function () {
                return f_tahta_id(_tahta_db.Id)
                    .then(function (_dbTahta) {
                        emitter.emit(schema.SABIT.OLAY.TAHTA_GUNCELLENDI, _dbTahta, _kul_id);
                        return _dbTahta;
                    });
            });
    }
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);
        }
    }
1269712
function f_teklif_urunleri(_teklif_id, _tahta_id, _opts) {

        return f_teklif_urun_idleri(_teklif_id)
            .then(function (_dbUrun_idler) {
                if (_dbUrun_idler && _dbUrun_idler.length > 0) {
                    console.log("_dbUrun_idler>" + _dbUrun_idler);

                    var db_urun = require("./db_urun");
                    return db_urun.f_db_urun_id(_dbUrun_idler, _tahta_id, _opts)

                } else {
                    return []
                }
            });
    }
450402
function f_kalem_onay_durumu(_kalem_id, _tahta_id) {

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

        //noinspection JSValidateTypes
        if (!_tahta_id && _tahta_id === 0) {
            defer.resolve({Id: 2, Baslik: "İlk Kayıt"});
            //throw new exception.Istisna("Kalem onay durumu çekilemedi", "Tahta_id bilgisi kalemin onay durumu çekilirken boş bırakılamaz!");
        }

        // birden fazla satir_id için hmget_json_parse ile çekilebilir şekilde yazılacak
        (Array.isArray(_kalem_id)
            ? result.dbQ.hmget_json_parse(result.kp.tahta.hsetKalemOnayDurumlari(_tahta_id), _kalem_id)
            : result.dbQ.hget_json_parse(result.kp.tahta.hsetKalemOnayDurumlari(_tahta_id), _kalem_id))
            .then(function (_durum) {

                function f_kalem_durumu(_kalemDurumu) {
                    return _kalemDurumu || {Id: 2, Baslik: "İlk Kayıt"};
                }

                return Array.isArray(_durum)
                    ? _durum.map(f_kalem_durumu)
                    : f_kalem_durumu(_durum)

            })
            .then(function (_res) {
                defer.resolve(_res);
            })
            .fail(function (_err) {
                defer.reject("Kalem onay durumu çekilirken hata alındı:", _err);
            });

        return defer.promise;
    }
909498
function f_kurum_ekle_ihaleDunyasindan(_db_kurum, _iIhaleDunyasiKurumId) {

        // İhaleDünyası kurum_id si ile bakalım, kurum sistemde kayıtlı mı?
        return result.dbQ.hget(result.kp.kurum.hsetKurum_ihaleDunyasiId, _iIhaleDunyasiKurumId)
            .then(function (_yeniKurumId) {

                // Eğer sistemde kayıtlıysa _yeniKurumId boş gelmeyecek
                return (_yeniKurumId // Kayıtlı
                    ? f_kurum_id(_yeniKurumId)
                    : f_kurum_ekle(_db_kurum, 0, 0))
                    .then(function (_kurum) { // Kaydedilecek
                        // Gelen kurum_id değerini bizim Kurum.Id ile İhale Dünyası kurumlarına da ekleyelim.
                        result.dbQ.hset(result.kp.kurum.hsetKurum_ihaleDunyasiId, _iIhaleDunyasiKurumId, _kurum.Id);
                        return _kurum;
                    });
            });
    }
679686
function f_eposta_to_db_kullanici_id(_eposta) {
        return result.dbQ.hget(result.kp.kullanici.hsetLocalKullanicilari, _eposta);
    }
1021594
function f_aktif_kalem_idler(_ihale_id, _tahta_id) {
        var defer = result.dbQ.Q.defer();

        result.dbQ.Q.all([
                result.dbQ.sunion(result.kp.ihale.ssetKalemleri(_ihale_id), result.kp.tahta.ssetOzelKalemleri(_tahta_id, _ihale_id, true)),
                result.dbQ.sunion(result.kp.tahta.ssetOzelKalemleri(_tahta_id, _ihale_id, false), result.kp.tahta.ssetEzilenKalemleri(_tahta_id), result.kp.tahta.ssetGizlenenKalemleri(_tahta_id))
            ])
            .then(function (_arrDbReplies) {
                var aktifler = _arrDbReplies[0],
                    pasifler = _arrDbReplies[1];
                defer.resolve(aktifler.differenceXU(pasifler));

            })
            .fail(function (_err) {
                l.e("Kalemler çekilirken hata oldu: " + _err);
                defer.reject(_err)
            });
        return defer.promise;
    }
630717
function f_tahtadan_ayril(_tahta_id, _kul_id) {

        return result.dbQ.Q.all([
            result.dbQ.srem(result.kp.kullanici.ssetUyeOlduguTahtalari(_kul_id, true), _tahta_id),
            result.dbQ.hdel(result.kp.tahta.hsUyeleri(_tahta_id), _kul_id)
        ]).then(function () {
            emitter.emit(schema.SABIT.OLAY.TAHTA_AYRIL, _tahta_id, _kul_id);
            return _tahta_id;
        });
    }
346003
function f_kullanici_id(_kul_id, _opts) {
        // _kul_id yoksa null dön
        if (!_kul_id) {
            return null;
        }
        l.info("f_db_kullanici_id");

        // 1. Temel bilgileri
        // 2. Profil bilgileri
        // 3. Tahta bilgileri
        // 3.1 Tahta ID leri (_opts.Tahtalari.arrTahta_id || f_db_kullanici_tahta_idleri(kul_id) )
        // 3.2 Tahta bilgileri
        // 4. oturum durumu

        /** @type {OptionsKullanici} */
        var opts = result.OptionsKullanici(_opts),
            kul_id = _kul_id;

        return [
            // 1
            result.dbQ.hget_json_parse(result.kp.kullanici.tablo, kul_id),
            // 2
            opts.bProfil
                ? result.dbQ.hget_json_parse(result.kp.kullanici.hsetKullaniciProfilleri, kul_id)
                : null,
            // 3
            opts.bTahtalari
                ? (opts.Tahtalari.arrTahta_id != null ? opts.Tahtalari.arrTahta_id : f_kullanici_tahta_idleri(kul_id))
                : null,
            //4
            opts.bOturumDurumu
                ? f_kullanici_oturum_durumu(parseInt(kul_id))
                : 1
        ].allX()
            .then(function (_dbReplies) {

                if (_dbReplies[0] == null) {
                    //Kullanıcı yok, boş dön
                    return null;
                }

                /** @type {Kullanici} */
                var kullanici = schema.f_create_default_object(schema.SCHEMA.KULLANICI);

                // 1
                _.extend(kullanici, _dbReplies[0]);
                // 2
                kullanici.Profil = _dbReplies[1];

                // 4
                kullanici.OturumDurumu = parseInt(_dbReplies[3]);

                // 3
                var arrKullaniciTahtaIdleri = _dbReplies[2];
                if (Array.isArray(arrKullaniciTahtaIdleri) && arrKullaniciTahtaIdleri.length == 0) {
                    kullanici.Tahtalari = [];
                    return kullanici;
                }

                return arrKullaniciTahtaIdleri
                    .mapX(null, f_kullanici_tahtalari, opts.Tahtalari).allX()
                    .then(function (_arrTahtalari) {
                        kullanici.Tahtalari = _arrTahtalari;

                        return kullanici;
                    });
            })
            .then(function (_dbKullanici) {
                return _dbKullanici;
            });
    }
1121451
function f_kurum_urun_tumu(_tahta_id, _kurum_id) {

        return result.dbQ.smembers(result.kp.kurum.ssetUrunleri(_tahta_id, _kurum_id))
            .then(function (_urun_idleri) {
                var db_urun = require("./db_urun");
                /** @type {OptionsUrun} */
                var opt = {};
                opt.bArrAnahtarKelimeler = true;
                opt.bArrIliskiliFirmalar = true;
                opt.bUreticiKurum = false;

                return db_urun.f_db_urun_id(_urun_idleri, _tahta_id, opt);
            })
            .fail(function (_err) {
                console.log("HATA ALINDI " + _err);
                return _err;
            });
    }
72700
function f_cop_urun_sil(_tahta_id, _urun_id, _kullanici_id) {
        var urun = require('./db_urun');
        return urun.f_db_urun_teklif_kontrol(_tahta_id, _urun_id)
            .then(function (_teklifler) {
                if (_teklifler && _teklifler != null && _teklifler.length > 0) {

                    throw new exception.Istisna("Ürün silinemedi!",
                        "Silinmek istenen ürüne ait sistemde kayıtlı teklifler olduğu için işlem gerçekleştirilemez!");

                } else {
                    return urun.f_db_urun_sil(_tahta_id, _urun_id, _kullanici_id);
                }
            });
    }
896833
function f_tahta_ihale_gizlenen_sil(_tahta_id, _ihale_id) {
        return result.dbQ.srem(result.kp.tahta.ssetGizlenenIhaleleri(_tahta_id), _ihale_id)
            .then(function () {
                emitter.emit(schema.SABIT.OLAY.IHALE_GIZLENDI, _ihale_id, _tahta_id);
                return _ihale_id;
            });
    }
866254
function f_tahta_ihale_rapor_bilgileri(_tahta_id, _arama) {


        /*return f_indekslenen_ve_takip_edilen_kalem_idler(_tahta_id)
         .then(function (_kalem_idler) {
         console.log("_kalem_idler>" + _kalem_idler)
         return result.dbQ.hmget(result.kp.kalem.hsetIhaleleri, _kalem_idler)
         .then(function (_ihale_idler) {
         //aynı ihale_id gelmesin diye uniq metoduna gönderiyoruz
         _ihale_idler = _.uniq(_ihale_idler);

         console.log("_ihale_idler>" + _ihale_idler);

         /!** @type {OptionsIhale} *!/
         var opts = {
         bArrKalemleri: true,
         bYapanKurum: true,
         bTakip: true,
         optsKalem: {
         bArrTeklifleri: true,
         bTakiptemi: true,
         bOnayDurumu: true
         }
         };
         var db_ihale = require("./db_ihale");
         return db_ihale.f_db_ihale_id(_ihale_idler, _tahta_id, opts);
         })
         });*/

        return f_indekslenen_ve_takip_edilen_ihale_idleri(_tahta_id)
            .then(function (_ihale_idler) {
                console.log("_ihale_idler>" + _ihale_idler);

                if (Array.isArray(_ihale_idler) && _ihale_idler.length > 0) {
                    /** @type {OptionsIhale} */
                    var opts = {
                        bArrKalemleri: false,
                        bYapanKurum: true,
                        bTakip: true
                        /*  optsKalem: {
                         bArrTeklifleri: true,
                         bTakiptemi: true,
                         bOnayDurumu: true
                         }*/
                    };
                    var db_ihale = require("./db_ihale");
                    return db_ihale.f_db_ihale_id(_ihale_idler, _tahta_id, opts);
                } else {
                    return [];
                }
            })
    }
1246755
function f_kurumun_teklif_verdigi_ihaleler(_tahta_id, _kurum_id, _onay_durum_id, _para_id, _tarih1, _tarih2) {
        //kurumun teklif_id lerini bul
        return f_kurumun_teklif_verdigi_ihale_idler(_tahta_id, _kurum_id, _onay_durum_id, _para_id, _tarih1, _tarih2)
            .then(function (_ihale_idleri) {
                if (_ihale_idleri && _ihale_idleri.length > 0) {
                    return result.dbQ.hmget_json_parse(result.kp.ihale.tablo, _ihale_idleri);
                }
                else {
                    return [];
                }
            });
    }
829258
function f_olay_kuyruguna_ekle(_olay, _nesne_id) {

        return result.dbQ.sismember(result.kp.uyari.ssetTetiklenecekOlay, _olay)
            .then(function (_dbVarYok) {
                if (_dbVarYok > 0) {
                    return result.dbQ.sadd(_olay, _nesne_id);
                } else {
                    l.warning("tetiklenecek olaylar içerisinde bulunamadığı için kuyruga eklenemedi.");
                    return 0;
                }
            });
    }
255648
function (_tahta_id, _kul_id) {
            l.info("f_kullaniciyi_rol_iliskilendir");
            // 3. Kullanıcıya rolü atayalım
            // 3.1 Kullanıcının rollerini çek
            // 3.2 Rollerine yeni rolü ekle
            return result.dbQ.Q.all([
                result.dbQ.smembers(result.kp.tahta.ssetOzelTahtaRolleri(_tahta_id, true)),
                result.dbQ.hget(result.kp.tahta.hsUyeleri(_tahta_id), _kul_id) // 3.1
            ]).then(function (_arrDbReplies) {
                var dbRol_idler = _arrDbReplies[1];
                // 3.2
                var roller = Array.isArray(dbRol_idler) ? dbRol_idler : [];

                //şemaya uygun hale getirmek için int yapılıyor
                var arr_tahta_rol_idler = _arrDbReplies[0].mapX(null, parseInt);

                var son = roller.concat(arr_tahta_rol_idler);
                return f_tahta_uye_rol_guncelle(_tahta_id, _kul_id, son)
            });
        }
786810
function f_kullanici_oturum_durumu(_kul_id) {
        return result.dbQ.hget(result.kp.kullanici.hsetKullaniciOturumDurumlari, _kul_id);
    }