Esempio n. 1
0
        /// <summary>
        /// 가천 라이브러리에서 새로운 게시글이 올라오면 이 함수를 이벤트로 실행시킵니다.
        /// </summary>
        /// <param name="gclass">게시글이 올라온 강의</param>
        /// <param name="postItem">게시글</param>
        public static void NewPost(GachonClass gclass, PostItem postItem)
        {
            MysqlNode node      = new MysqlNode(private_data.mysqlOption, "SELECT * FROM keyword");
            JArray    array     = new JArray();
            string    ignore_id = "";

            using (node.ExecuteReader())
            {
                while (node.Read())
                {
                    if (ignore_id == node.GetString("student_id"))
                    {
                        continue;
                    }
                    string keyword = node.GetString("keyword");
                    if (CheckValid(keyword, gclass.Title, postItem.Title))
                    {
                        ignore_id = node.GetString("student_id");
                        PostSystem.SendPost(
                            string.Format("[{0}] 새로운 게시글 등록", gclass.Title),
                            string.Format("[게시글 정보]\r\n{0} - {1}\r\n\r\n{2}\r\n\r\nURL : {3}", postItem.Title, postItem.Publisher, postItem.Content, postItem.url),
                            "admin_keyword",
                            ignore_id
                            , false);
                        ESocket socket = GachonSocket.GetOnlineUser(ignore_id);
                        if (socket != null)
                        {
                            if (User.Items.ContainsKey(socket))
                            {
                                User.Items[socket].ToChatMessage("[" + gclass.Title + "] 에 새로운 게시글이 등록되었습니다.", ChatType.System);
                                if (postItem.posttype == BoardType.PostType.Homework)
                                {
                                    NetworkMessageList.AddHomework(socket,
                                                                   gclass.Title,
                                                                   postItem.Title,
                                                                   postItem.e_time);
                                }
                            }
                        }
                    }
                }
            }
        }
Esempio n. 2
0
        public static void SendPost(string title, string content, string sender, string receiver, bool notice = true)
        {
            DateTime  date = DateTime.Now;
            MysqlNode Node = new MysqlNode(private_data.mysqlOption, "INSERT INTO post(title, content, sender, receiver, date) VALUES (?title, ?content, ?sender, ?receiver, ?date)");

            Node["title"]    = title;
            Node["content"]  = content;
            Node["sender"]   = sender;
            Node["receiver"] = receiver;
            Node["date"]     = date.ToString("yyyy-MM-dd HH:mm:ss");
            Node.ExecuteNonQuery();

            JObject json = new JObject();

            json["type"]     = NetworkProtocol.PostAlarm;
            json["title"]    = title;
            json["content"]  = content;
            json["receiver"] = receiver;
            json["date"]     = date;
            if (notice == true)
            {
                // 받는사람이 게임 또는 스마트폰을 통해 접속중인가
                ESocket socket = GachonSocket.GetOnlineUser(receiver);
                if (socket != null)
                {
                    if (User.Items.ContainsKey(socket))
                    {
                        User.Items[socket].ToChatMessage("[우편함] 새로운 메세지가 도착했습니다.", ChatType.System);
                    }
                    else
                    {
                        socket.Send(json);
                    }
                }
                else
                {
                    AddQueue(receiver, json);
                }
            }
        }