public static void setUsernameInactive(string username, OnlineChatDBEntities db = null) { if (db == null) db = new OnlineChatDBEntities(); User existing_user = db.Users.Where(u => u.username == username).FirstOrDefault(); if(existing_user != null) { existing_user.is_session_active = false; db.SaveChanges(); } }
public ChatModel(int latest_id) { //initialize list object messages = new List<MessageModel>(); //create reference to entity framework object OnlineChatDBEntities db = new OnlineChatDBEntities(); foreach (Message msg in db.Messages.Where(m => m.msg_id > latest_id).OrderByDescending(m => m.date_posted)) messages.Add(new MessageModel(msg)); active_users = PosterModel.getActiveUsers(db); }
//on session end, 'log out' user protected void Session_End(object sender, EventArgs e) { if (Session["username"] != null) { String inactive_user = Session["username"].ToString(); OnlineChatDBEntities db = new OnlineChatDBEntities(); User current_user = db.Users.Where(u => u.username == inactive_user).FirstOrDefault(); current_user.is_session_active = false; db.SaveChanges(); } }
public Boolean isUsernameTaken(string username, OnlineChatDBEntities db = null) { if (db == null) db = new OnlineChatDBEntities(); //if the username is currently taken by the active session, return false if (Session["username"] != null && Session["username"].ToString() == username) return false; Boolean taken = db.Users.Count(u => u.username == username && u.is_session_active == true) > 0; return taken; }
public ChatModel(int message_count = 12, int message_index = 0) { //initialize list object messages = new List<MessageModel>(); //create reference to entity framework object OnlineChatDBEntities db = new OnlineChatDBEntities(); foreach (Message msg in db.Messages.OrderByDescending(m => m.date_posted).Skip(message_index).Take(message_count)) messages.Add(new MessageModel(msg)); active_users = PosterModel.getActiveUsers(db); if (db.Messages.Count() <= message_count + message_index) end_of_messages = true; }
public ActionResult createMessage(MessageModel message) { OnlineChatDBEntities db = new OnlineChatDBEntities(); Message new_message = new Message(); new_message.message_body = message.body; new_message.date_posted = DateTime.UtcNow; String username = HttpContext.Session["username"].ToString(); new_message.fk_poster_id = db.Users.Where(u => u.username == username).FirstOrDefault().user_id; db.Messages.Add(new_message); db.SaveChanges(); message.id = new_message.msg_id; message.posted_by.username = username; message.date_posted = new_message.date_posted; //message.time_elapsed_since = MessageModel.getDateSince(new_message.date_posted); return Json(message, JsonRequestBehavior.AllowGet); }
public static List<PosterModel> getActiveUsers(OnlineChatDBEntities db = null) { if (db == null) db = new OnlineChatDBEntities(); List<PosterModel> users = new List<PosterModel>(); foreach (User user in db.Users.Where(u => u.is_session_active == true)) users.Add(new PosterModel(user)); return users; }
public ActionResult setUsername(string username) { //nothing is done if provided username is blank if (username != "") { OnlineChatDBEntities db = new OnlineChatDBEntities(); //if an existing username is taken by session, set it as inactive if (Session["username"] != null && username != Session["username"].ToString()) setUsernameInactive(Session["username"].ToString()); //if username doesn't currently exist, create it in the database User target_user = db.Users.Where(u => u.username == username).FirstOrDefault(); if (target_user == null) { target_user = new User(); target_user.username = username; target_user.is_session_active = false; db.Users.Add(target_user); } //check if username is taken, if free, set session variable to username and session trait in db to true if (!isUsernameTaken(username, db)) { HttpContext.Session["username"] = username; target_user.is_session_active = true; db.SaveChanges(); return Json(username, JsonRequestBehavior.AllowGet); } } return Json(false, JsonRequestBehavior.AllowGet); }
public ActionResult findNewUpdates(int latest_id) { OnlineChatDBEntities db = new OnlineChatDBEntities(); return Json(db.Messages.Count(m => m.msg_id > latest_id) > 0, JsonRequestBehavior.AllowGet); }