예제 #1
0
        public string Post(MessageModel m)
        {
            var time = DateTime.Now;

            using (var context = new ChatEntities())
            {
                var user = context.Users.SingleOrDefault(u => u.Email == m.Email);
                if (user != null)
                {
                    context.Messages.Add(new MvcApplication2.Data.Message
                    {
                        UserId = user.Id,
                        Time = time,
                        Text = m.Text,
                        SessionId = m.SessionId
                    });

                    context.SaveChanges();

                    Dispatcher.NewMessage();
                }
            }

            return time.ToString();
        }
예제 #2
0
        public ActionResult Index()
        {
            var emailCookie = Request.Cookies["Email"];
            var passwordCookie = Request.Cookies["Password"];
            if (emailCookie != null && passwordCookie != null)
            {
                try
                {
                    Session["User"] = AuthHelper.Login(emailCookie.Value, passwordCookie.Value);
                }
                catch { }
            }

            using (var context = new ChatEntities())
            {
                var messages =
                    context.Messages
                    .OrderByDescending(m => m.Time)
                    .Take(5)
                    .ToArray();
                ViewBag.Messages = messages.Select(m => new MessageModel(m)).ToList();
                ViewBag.Messages.Reverse();
            }

            return View();
        }
예제 #3
0
 public IEnumerable<MessageModel> GetNew(int userId, long lastId)
 {
     using (var context = new ChatEntities())
     {
         do
         {
             var result = context.Messages.Where(m => m.Id > lastId).ToArray();
             if (result.Length > 0)
             {
                 return result.Select(m => new MessageModel(m)).ToArray();
             }
             else
             {
                 Dispatcher.Subscribe(userId);
                 Dispatcher.Wait(userId);
             }
         } while (true);
     }
 }