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();
     }
 }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 5
0
        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);
        }
Exemplo n.º 7
0
 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);
 }