internal void UpdateRemovedCP(string roomID, CriticalMsgPoints cp) { CPData cpd = new CPData(cp.MsgID, cp.GroupID, cp.GroupID, cp.Type.ToString(), "msg", "chat-bubble-two", new DateTime(), "", "", cp.Type, cp.Priority); context.Clients.Group(roomID).updateRemovedCPGraph(roomID, cpd); context.Clients.Group(roomID + toolbarStr).updateRemovedCPToolBar(roomID, cpd); }
public CriticalMsgPoints user_msg(int roomID, string user, List <CriticalMsgPoints> cps) { CriticalPointTypes alert = CriticalPointTypes.None; if (this.rooms.ContainsKey(roomID) == true) { alert = this.rooms[roomID].HandleMessage(cps[0].Type, user); } CriticalMsgPoints res = new CriticalMsgPoints(); res.Type = alert; return(res); }
//return the tag for a message and the room solution internal static List <CriticalMsgPoints> Analyze(VMsg msg, RoomDetailsHub hubDetails) { List <CriticalMsgPoints> cps = new List <CriticalMsgPoints>(); CriticalMsgPoints cp = new CriticalMsgPoints(); cp.GroupID = msg.GroupID; cp.MsgID = msg.ID; cp.Priority = priority[i++ % priority.Length]; string cpReply = GetCriticalPoint(msg.GroupID, msg.Text); string[] splitReply = cpReply.Split(','); if (splitReply[0].CompareTo("DS") == 0) { if (splitReply[1].CompareTo("0") == 0) { cp.Type = CriticalPointTypes.WDS; } else if (splitReply[1].CompareTo("1") == 0) { cp.Type = CriticalPointTypes.CDS; } else { cp.Type = CriticalPointTypes.DS; } } else if (splitReply[0].CompareTo("TEC") == 0) { cp.Type = CriticalPointTypes.TEC; } else if (splitReply[0].CompareTo("NMD") == 0) { cp.Type = CriticalPointTypes.NMD; } else { cp.Type = CriticalPointTypes.None; } cps.Add(cp); return(cps); }
public void InjectCPM(string action, string roomID, string msgID, CriticalPointTypes type, string priority) { int i_roomID = Convert.ToInt32(roomID); int i_msgID = Convert.ToInt32(msgID); using (SagletModel db = new SagletModel()) { CriticalMsgPoints cpm = null; try { switch (action) { case "add": VMsg msg = db.Msgs.Find(i_msgID, i_roomID); cpm = new CriticalMsgPoints(); cpm.Type = type; cpm.Priority = priority; msg.CriticalPoints.Add(cpm); // save db.SaveChanges(); // update clients UpdateNewCP(roomID, cpm); break; case "remove": // TODO - not supported yet -> need to inform modal and inform all clients on toolbar(remove from table and update numbers and colors) cpm = db.CriticalMsgPoints.Find(i_msgID, i_roomID, type); db.CriticalMsgPoints.Remove(cpm); // save db.SaveChanges(); // update clients UpdateRemovedCP(roomID, cpm); break; } UpdateCPModal(roomID, msgID, action, type, priority); UpdateCPOutSiteModal(roomID, msgID); } catch (Exception e) { throw e; } } }
public void UpdateLike(int idOne, int idTwo, string type, CriticalPointTypes idLabel, string like) { int roomID = -1; using (SagletModel db = new SagletModel()) { try { switch (type) { case "msg": { roomID = idTwo; CriticalMsgPoints cmp = db.CriticalMsgPoints.Find(idOne, idTwo, idLabel); cmp.Like = (like == "like") ? true : false; break; } case "act": { CriticalActionPoints cap = db.CriticalActionPoints.Find(idOne, idTwo, idLabel); cap.Like = (like == "like") ? true : false; roomID = cap.Action.Tab.GroupID; break; } } // save db.SaveChanges(); // update clients UpdateLike(roomID.ToString(), type, idOne, idTwo, idLabel.ToString(), like); } catch (Exception e) { throw e; } } }
/* 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); } } }
internal static List <CriticalMsgPoints> Analyze(VMsg msg) { List <CriticalMsgPoints> cps = new List <CriticalMsgPoints>(); CriticalMsgPoints cp = new CriticalMsgPoints(); cp.GroupID = msg.GroupID; cp.MsgID = msg.ID; cp.Priority = priority[i++ % priority.Length]; // enable for running a demo script //switch (msg.Text) //{ // case "נראלי שזה מעוין כי האלכסונים שוים זה לזה ומאונכים זה לזה": // { // cp.Type = CriticalPointTypes.CR; // cp.Priority = "1"; // cps.Add(cp); // break; // } // case "שימו לב האלכסונים מאונכים ושווים": // { // cp.Type = CriticalPointTypes.CM; // cps.Add(cp); // break; // } // case "ללא כול תכונה נוספת": // { // cp.Type = CriticalPointTypes.CM; // cps.Add(cp); // break; // } // case "אז זה לא דלתון!!": // { // cp.Type = CriticalPointTypes.C; // cps.Add(cp); // break; // } // case "למה": // { // cp.Type = CriticalPointTypes.Q; // cps.Add(cp); // break; // } // case "כי אין לו שני זוגות של צלעות שוות כל הזמן!": // { // cp.Type = CriticalPointTypes.Cre; // cps.Add(cp); // break; // } // case "זה סתם מרובע עם התכונות...": // { // cp.Type = CriticalPointTypes.C; // cps.Add(cp); // break; // } // case "אז אין לו הגדרה כי יש לו את התכונות והוא לא משהוא": // { // cp.Type = CriticalPointTypes.CR; // cps.Add(cp); // break; // } //} //TODO replace with eran's code cp.Type = CriticalPointTypes.CR; cps.Add(cp); //return cps; return(null); }