Esempio n. 1
0
        public ActionResult History()
        {
            try {
                var clntId = GetClientId();

                using (var db = new CloudTalkEntities()) {
                    var entries = db.History.Where(h => h.ClientId == clntId).ToList();

                    return(View(entries.Select(e => new CloudTalkHistoryViewModel {
                        SenderEmail = e.Sender,
                        Message = e.Text.Replace("{ Message = ", "").Replace("}", ""),
                        TimeStamp = e.Timestamp
                    }).ToList()));
                }
            }
            catch (ArgumentException e) {
                TempData["Message"] = e.Message;
                return(View());
            }
        }
 public CloudTalkController()
 {
     using (var db = new CloudTalkEntities()) {
         AllClients = db.Client.ToList();
     }
 }
        private void SendMessage(ChatMember _from, object _msg, string _roomName, string _to = null, EventType _type = EventType.Message)
        {
            if (_from == null)
            {
                throw new ArgumentNullException("_from");
            }
            if (String.IsNullOrWhiteSpace(_roomName))
            {
                throw new ArgumentNullException("_roomName");
            }
            if (_msg == null)
            {
                throw new ArgumentNullException("_msg");
            }

            var room = GetChatRoom(_roomName);

            if (room == null)
            {
                throw new ArgumentException("_roomName");
            }

            if (_to != null && room.GetMember(_to) == null && room.GetWaitingMember(_to) == null)
            {
                throw new ArgumentException("_to");
            }

            var newEvent = EventFactory.NewEvent(_type);
            var jss      = new JavaScriptSerializer();

            newEvent.RoomName    = _from.Name;
            newEvent.SenderName  = _from.Name;
            newEvent.SenderEmail = _from.Email;
            newEvent.Text        = jss.Serialize(_msg);
            newEvent.Timestamp   = DateTime.Now;
            newEvent.RoomName    = room.Name;

            var roomClients = room.Members.Where(c => c.Email != _from.Email);

            if (_to != null)
            {
                // direct message
                newEvent.Recipients.Add(_to);
            }
            else
            {
                // broadcast message
                newEvent.Recipients.AddRange(roomClients.Select(c => c.Email));
            }

            messages.Add(newEvent);

            using (var db = new CloudTalkEntities()) {
                db.AddToHistory(new History {
                    Room      = _roomName,
                    Client    = db.Client.First(c => c.Id == room.OwnerId),
                    Sender    = _from.Email,
                    Text      = _msg.ToString(),
                    Timestamp = DateTime.Now.ToString()
                });

                db.SaveChanges();
            }

            foreach (var item in roomClients)
            {
                SignalMember(item.Email);
            }
        }