//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"; }
//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(); } } }
//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(); }
//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(); }
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"); }
//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."; } }
//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(); }