$(function () {
    if (view && view.loginInfo && view.loginInfo()) {
        // mesajların ekranda görünmesini sağlayacak olan html;
        var modal = document.getElementById("NotificationPopup");

        // Reference the auto-generated proxy for the hub.
        var sc = $.connection.notification; // hub/notification dan bir instance

        var username = view.user().UserName && view.user().UserName();
        var scid = "";

        // Kullanıcıdan (garson) mutfağa veya herhangi bir yere msj göndermenin basit bir seneryosu.
        //$('#sendmessage').click(function () {
        //    sc.server.send($('#displayname').val(), $('#message').val(), connId || $.connection.hub.id);
        //});

        // kullanıcı bazlı msjı yakalayabilmek için kullanılır.
        sc.client.receiveNotification = function (name, message, garsonMsgId) {
            if (name || "" && message || "") {
                var not = new notificationModel(name || "anonim", message || "", garsonMsgId || 0);
                view.SignalRNotifications.push(not);
                if (modal) {
                    var sender = document.getElementById("NotificationSender");
                    if (sender)
                        sender.innerHTML = name;
                    var _msg = document.getElementById("NotificationMessage")
                    if (_msg)
                        _msg.innerHTML = message;
                    var _grsMsgId = document.getElementById("NotificationGarsonId")
                    if (_grsMsgId)
                        _grsMsgId.innerHTML = garsonMsgId;

                    $(modal).modal();
                }
            }
            if (!name) {
                console.log("name" + "boş geldi :"+ name);
            }
            if (!message) {
                console.log("message" + "boş geldi :" + message);
            }
            if (!garsonMsgId) {
                console.log("garsonMsgId" + "boş geldi :" + garsonMsgId);
            }
            return;
        };

        // tüm kullanıclar için gelen msj yakalabilmek için kullanılır
        sc.client.sendAll = function (name, message, garsonMsgId) {
            if (name || "" && message || "" && garsonMsgId || "0") {
                var not = new notificationModel(name, message, garsonMsgId);
                view.SignalRNotifications.push(not);
                if (modal) {
                    document.getElementById("NotificationSender").innerHTML = name;
                    document.getElementById("NotificationMessage").innerHTML = message;
                    $(modal).modal();
                }
            }
            return;
        };

        sc.client.refreshCache = function () {
            view.RemoveAllCache();
        };

        sc.client.refreshCacheByUserId = function () {
            view.RemoveAllCache();
        };

        sc.connection.start().done(function () {
            if (!scid) {
                scid = $.connection.hub.id;
                if (scid && view.user().ID()) {
                    //ShowLoader();
                    PostQuery("/api/modifySignalR", { "signalRId": scid, "garsonId": view.user().ID() }, function (res) {
                        if (res.Error) {
                            //HideLoader();
                            MessageBox("mesajlar alınamayacak db ile bağlantı kurulamadı veya hata oluştu.","danger");
                        } else {
                            view.user().SignalRId(scid);
                            console.log("username:" + view.user().UserName() +"<br>"+ "SID :"+ scid);
                            //HideLoader();
                            return
                        }
                    })
                }
            }
        });

    }
});
var notificationModel = function (senderName, message, garsonMsgId) {
    return { senderName: ko.observable(senderName || ""), message: ko.observable(message || ""), state: ko.observable("1"), garsonMsgId: ko.observable(garsonMsgId) };
}