コード例 #1
0
        //to zostanie wywołane przez klienta przy zamknięciu przeglądarki przez użytkownika
        public void RaiseCallbackEvent(string eventArgument)
        {
            _callBackStatus = "failed";

            if (!string.IsNullOrEmpty(eventArgument))
            {
                if (eventArgument == "LogOut")
                {
                    ChatDataContext db         = new ChatDataContext();
                    var             loggedUser = (from user in db.LoggedInUsers
                                                  where user.RoomID == Convert.ToInt32(Session["roomID"]) &&
                                                  user.UserID == Convert.ToInt32(Session["ChatUserID"])
                                                  select user).SingleOrDefault();

                    db.LoggedInUsers.DeleteOnSubmit(loggedUser);
                    db.SubmitChanges();

                    //usuń "ticket" forms authentication z przeglądarki i wyczyść info o autentykacji bieżącego użytkownika
                    FormsAuthentication.SignOut();
                    HttpContext.Current.User = new GenericPrincipal(new GenericIdentity(string.Empty), null);
                    updateTimer.Enabled      = false;
                }
                else if (eventArgument == "FocusThisWindow")
                {
                    FocusThisWindow();
                }
            }
            _callBackStatus = "success";
        }
コード例 #2
0
        //sprawdzenie zaproszen do prywatnych konwersacji
        private void CheckForPrivateMessages()
        {
            //sprawdzam, czy mozna, być może już jest zaproszenie, które jeszcze nie doczekało się odpowiedzi
            if ((bool)Session["searchForPrivate"])
            {
                Session["searchForPrivate"] = false;
                ChatDataContext db = new ChatDataContext();

                var inv = (from msg in db.PrivateMessages
                           where msg.ToUserID == Convert.ToInt32(Session["ChatUserID"])
                           orderby msg.PrivateMessageID
                           select msg).SingleOrDefault();

                if (inv != null)
                {
                    var username = (from user in db.Users
                                    where user.UserID == inv.UserID
                                    select user.Username).SingleOrDefault();

                    lblChatNowUser.Text      = username;
                    btnChatNow.OnClientClick =
                        "window.open('ChatWindow.aspx?FromUserId=" + Session["ChatUserID"] +
                        "&ToUserId=" + inv.UserID + "&Username="******"&IsReply=yes','','width=400,"
                        + "height=200'); isLostFocus = 'true';";

                    panelPrivateChat.Visible = true;

                    db.PrivateMessages.DeleteOnSubmit(inv);
                    db.SubmitChanges();
                }
            }
        }
コード例 #3
0
        //umieszczenie wysyłanej wiadomości w bazie danych (treść)
        private void InsertMessage(string messageText, bool system)
        {
            ChatDataContext db  = new ChatDataContext();
            Message         msg = new Message();

            var id = (from message in db.Messages
                      select message.MessageID).Count();

            msg.MessageID = id;
            msg.TimeStamp = DateTime.Now;
            msg.ToUserID  = Convert.ToInt32(lblToUserId.Text);
            msg.Text      = messageText;
            if (system)
            {
                msg.systemMsg = 1;
            }
            else
            {
                msg.systemMsg = 0;
            }
            msg.UserID = Convert.ToInt32(lblFromUserId.Text);

            db.Messages.InsertOnSubmit(msg);
            db.SubmitChanges();
        }
コード例 #4
0
        //wstawienie wiadomości do bazy danych
        private void InsertMessageToDatabase(string text)
        {
            ChatDataContext db        = new ChatDataContext();
            var             messageID = (from messages in db.Messages
                                         select messages.MessageID).Count();
            Message message = new Message();
            int     roomID  = Convert.ToInt32(Session["roomID"]);

            message.RoomID    = roomID == 0 ? 1 : roomID;
            message.Text      = text;
            message.TimeStamp = DateTime.Now;
            message.UserID    = Convert.ToInt32(Session["ChatUserID"]);
            message.ToUserID  = null; //bedzie sluzyc do prywatych wiadomosci
            message.Color     = ddlColors.SelectedValue;
            message.MessageID = messageID;
            db.Messages.InsertOnSubmit(message);
            db.SubmitChanges();
        }
コード例 #5
0
        protected void tLogout_Click(object sender, EventArgs e)
        {
            ChatDataContext db         = new ChatDataContext();
            var             loggedUser = (from user in db.LoggedInUsers
                                          where user.RoomID == Convert.ToInt32(Session["roomID"]) &&
                                          user.UserID == Convert.ToInt32(Session["ChatUserID"])
                                          select user).SingleOrDefault();

            db.LoggedInUsers.DeleteOnSubmit(loggedUser);
            db.SubmitChanges();

            Session.RemoveAll();
            Session.Abandon();

            //usuń "ticket" forms authentication z przeglądarki i wyczyść info o autentykacji bieżącego użytkownika
            FormsAuthentication.SignOut();
            HttpContext.Current.User = new GenericPrincipal(new GenericIdentity(string.Empty), null);
            updateTimer.Enabled      = false;

            Response.Redirect("Default.aspx");
        }
コード例 #6
0
        //inicjalizacja rozmowy (komunikat o inicjalizacji-zapisanie do bazy tylko raz)
        private void InsertPrivateMessage()
        {
            CheckIfClosed();
            //informacje o checi rozpoczecia konwersacji z danym uzytkownikiem zapisujemy w bazie tylko raz
            //to nie jest tresc wiadomosci, tylko komunikat o checi nawiazania rozmowy
            //spowoduje wyswietlenie okna z proba o zaakceptowania w Chatroom.aspx
            if (string.IsNullOrEmpty(lblMessageSent.Text))
            {
                ChatDataContext db             = new ChatDataContext();
                PrivateMessage  privateMessage = new PrivateMessage();
                var             id             = (from message in db.PrivateMessages
                                                  select message.PrivateMessageID).Count();
                privateMessage.PrivateMessageID = id;
                privateMessage.ToUserID         = Convert.ToInt32(lblToUserId.Text);
                privateMessage.UserID           = Convert.ToInt32(lblFromUserId.Text);

                db.PrivateMessages.InsertOnSubmit(privateMessage);
                db.SubmitChanges();

                lblMessageSent.Text = "Sent.";
            }
        }
コード例 #7
0
        //pobierz zalogowanych użytkowników
        private void GetLoggedUsers()
        {
            ChatDataContext db = new ChatDataContext();
            //sprawdź, czy bieżący użytkownik jest na liście zalogowanych w tym pokoju
            var usr = (from user in db.LoggedInUsers
                       where user.UserID == Convert.ToInt32(Session["ChatUserID"]) &&
                       user.RoomID == Convert.ToInt32(Session["roomID"])
                       select user).SingleOrDefault();

            //jeśli nie, to go dodaj
            if (usr == null)
            {
                LoggedInUser loggedUser = new LoggedInUser();
                int          id         = (from user in db.LoggedInUsers
                                           orderby user.LoggedInUserId descending
                                           select user.LoggedInUserId
                                           ).FirstOrDefault();
                loggedUser.LoggedInUserId = id + 1;
                loggedUser.UserID         = Convert.ToInt32(Session["ChatUserID"]);
                loggedUser.RoomID         = Convert.ToInt32(Session["roomID"]);
                db.LoggedInUsers.InsertOnSubmit(loggedUser);
                db.SubmitChanges();
            }

            StringBuilder sb = new StringBuilder();

            //wyświetl zalogowanych użytkowników w tym pokoju
            var loggedUsers = from users in db.LoggedInUsers
                              where users.RoomID == Convert.ToInt32(Session["roomID"])
                              select users;

            foreach (var loggedOne in loggedUsers)
            {
                //ikonka
                var thisOne = (from users in db.Users
                               where users.UserID == loggedOne.UserID
                               select new { users.Sex, users.Username }).SingleOrDefault();

                if (thisOne.Sex.ToLower() == "m")
                {
                    sb.Append("<img src='man-icon.gif' style='vertical-align:middle;'/>");
                }
                else
                {
                    sb.Append("<img src='female-icon.gif' style='vertical-align:middle;'/>");
                }

                //do wszystkich uzytkownikow oprocz biezacego beda linki (do prywatnej rozmowy)
                if (thisOne.Username != (string)Session["ChatUsername"])
                {
                    sb.Append("<a href=# onclick=\"window.open('ChatWindow.aspx?FromUserID=" + Session["ChatUserID"]
                              + "&ToUserID=" + loggedOne.UserID + "&Username="******"&isReply=no" + "',"
                              + "'','width=400,height=200,scrollbars=no,toolbars=no,titlebar=no,menubar=no'); isLostFocus='true';\">"
                              + thisOne.Username + "</a><br>");
                }
                else
                {
                    sb.Append("<b>" + thisOne.Username + "</b><br>");
                }
            }

            litUsers.Text = sb.ToString();
        }