예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        //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);
        }
예제 #4
0
        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;
                }
            }
        }
예제 #5
0
        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;
                }
            }
        }
예제 #6
0
        /* 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);
                }
            }
        }
예제 #7
0
        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);
        }