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); } }