public void HandleLiveAction(string actID, string xmlstr, string log, string eventName, int roomID) { //temporary solution for "if(url.xml == null)" always pass var logRes = JsonConvert.DeserializeObject <dynamic>(log); string user = logRes.userName.Value.ToString().Trim(); if (isSagletUserInRoom(roomID.ToString(), user)) { return; } criticalPointAlerts.user_action(roomID, user); UpdateRoomLastUpdate(roomID); //end temporary solution // TODO handle log and eventName var url = JsonConvert.DeserializeObject <dynamic>(xmlstr); if (url.xml == null) { return; } //var logRes= JsonConvert.DeserializeObject<dynamic>(log); VAction action = VAction.ConvertLiveActionJson(actID, url.xml.ToString(), logRes, eventName); if (action != null) { action.CriticalPoints = CriticalPointAnalyzer.Analyze(action); //int roomID = db.Tabs.Find(action.TabID).GroupID; //action.CriticalPoints.Add(criticalPointAlerts.user_action(roomID, action.UserID, (List<CriticalActionPoints>)action.CriticalPoints)); //temporary canceled SaveActionToDB(roomID, action); hubDetails.UpdateRoomActionLiveControl(roomID.ToString(), action); //hubIndex.UpdateRoomIndex(roomID.ToString()); } }
/* Sockets msgs */ public void HandleLiveMessage(int roomID, string json) { var results = JsonConvert.DeserializeObject <dynamic>(json); VMsg msg = VMsg.ConvertLiveMessageJson(roomID, results); //check msg not empty and its not teacher message if (msg != null && !isSagletUserInRoom(roomID.ToString(), msg.UserID)) { msg.CriticalPoints = CriticalPointAnalyzer.Analyze(msg, hubDetails); //tag for current message if (msg.Text.Contains("joined")) { string user = msg.Text.Split(' ')[0]; if (!isSagletUserInRoom(roomID.ToString(), user)) { if (criticalPointAlerts.RoomStarted(roomID)) { string[] arr = { user }; List <string> userJoined = new List <string>(arr); string jsonRes = JsonConvert.SerializeObject(new KeyValuePair <CriticalPointTypes, List <string> >(CriticalPointTypes.UJ, userJoined)); hubDetails.UpdateUserInRoom(roomID.ToString(), jsonRes); } criticalPointAlerts.user_joined(roomID, user); } CriticalMsgPoints serverCp = new CriticalMsgPoints(); serverCp.Type = CriticalPointTypes.None; msg.CriticalPoints.Add(serverCp); } else if (msg.Text.Contains("left")) { string user = msg.Text.Split(' ')[0]; if (!isSagletUserInRoom(roomID.ToString(), user)) { if (criticalPointAlerts.RoomStarted(roomID)) { string[] arr2 = { user }; List <string> userLeft = new List <string>(arr2); string jsonRes = JsonConvert.SerializeObject(new KeyValuePair <CriticalPointTypes, List <string> >(CriticalPointTypes.UL, userLeft)); hubDetails.UpdateUserInRoom(roomID.ToString(), jsonRes); } criticalPointAlerts.user_left(roomID, user); } CriticalMsgPoints serverCp = new CriticalMsgPoints(); serverCp.Type = CriticalPointTypes.None; msg.CriticalPoints.Add(serverCp); } else { if (msg.UserID != "server") { msg.CriticalPoints.Add(criticalPointAlerts.user_msg(msg.GroupID, msg.UserID, (List <CriticalMsgPoints>)msg.CriticalPoints)); } else { CriticalMsgPoints serverCp = new CriticalMsgPoints(); serverCp.Type = CriticalPointTypes.None; msg.CriticalPoints.Add(serverCp); } } //temporary canceled //need to fix saveChatMsgToDB to handle 2 cps //SaveChatMsgToDB(roomID, msg); if (msg.UserID != "server") { Logger.Log(msg.TimeStamp.ToLocalTime().ToString(), roomID.ToString(), msg.UserID, msg.Text, msg.CriticalPoints.ElementAt(0).Type.ToString(), msg.CriticalPoints.ElementAt(1).Type.ToString()); UpdateRoomLastUpdate(roomID); hubDetails.UpdateRoomMsgLiveControl(roomID.ToString(), msg); } } }