예제 #1
0
        public virtual IDataReader GetTopicNewMessageCount(IDbConnection cn, YZResourceType resType, string resId, string uid)
        {
            using (OracleCommand cmd = new OracleCommand())
            {
                cmd.Connection = cn as OracleConnection;
                cmd.BindByName = true;

                cmd.CommandText = "select NVL(max(readId),0) from YZAppCommunicationRead WHERE resType=:resType and resId=:resId and \"UID\"=:pm_uid";
                cmd.Parameters.Add(":resType", OracleDbType.NVarchar2).Value = resType.ToString();
                cmd.Parameters.Add(":resId", OracleDbType.NVarchar2).Value   = resId;
                cmd.Parameters.Add(":pm_uid", OracleDbType.NVarchar2).Value  = uid;

                int readId = 0;
                using (YZReader rd = new YZReader(cmd.ExecuteReader()))
                {
                    if (rd.Read())
                    {
                        readId = rd.ReadInt32(0);
                    }
                }

                cmd.Parameters.Clear();
                cmd.CommandText = "select count(*) from YZAppCommunication WHERE resType=:resType and resId=:resId and id>:readId";

                cmd.Parameters.Add(":resType", OracleDbType.NVarchar2).Value = resType.ToString();
                cmd.Parameters.Add(":resId", OracleDbType.NVarchar2).Value   = resId;
                cmd.Parameters.Add(":readId", OracleDbType.Int32).Value      = readId;

                return(cmd.ExecuteReader());
            }
        }
예제 #2
0
        public virtual void UpdateTopicReaded(IDbConnection cn, YZResourceType resType, string resId, string uid, int maxReadedMessageId)
        {
            using (OracleCommand cmd = new OracleCommand())
            {
                cmd.Connection = cn as OracleConnection;
                cmd.BindByName = true;

                StringBuilder sb = new StringBuilder();
                sb.AppendLine("DECLARE");
                sb.AppendLine("cnt NUMBER;");
                sb.AppendLine("cnt1 NUMBER;");
                sb.AppendLine("BEGIN");
                sb.AppendLine("SELECT COUNT(*) INTO cnt FROM YZAppCommunicationRead WHERE \"UID\"=:pm_uid AND resType=:resType AND resId=:resId AND readId>:readId;");
                sb.AppendLine("SELECT COUNT(*) INTO cnt1 FROM YZAppCommunicationRead WHERE \"UID\"=:pm_uid AND resType=:resType AND resId=:resId;");
                sb.AppendLine("IF(cnt = 0) THEN");
                sb.AppendLine("BEGIN");
                sb.AppendLine("IF(cnt1 != 0) THEN");
                sb.AppendLine("UPDATE YZAppCommunicationRead SET readId=:readId WHERE \"UID\"=:pm_uid AND resType=:resType AND resId=:resId;");
                sb.AppendLine("ELSE");
                sb.AppendLine("INSERT INTO YZAppCommunicationRead(\"UID\",resType,resId,readId) VALUES(:pm_uid,:resType,:resId,:readId);");
                sb.AppendLine("END IF;");
                sb.AppendLine("END;");
                sb.AppendLine("END IF;");
                sb.AppendLine("END;");

                cmd.CommandText = this.SBToString(sb);

                cmd.Parameters.Add(":pm_uid", OracleDbType.NVarchar2).Value  = uid;
                cmd.Parameters.Add(":resType", OracleDbType.NVarchar2).Value = resType.ToString();
                cmd.Parameters.Add(":resId", OracleDbType.NVarchar2).Value   = resId;
                cmd.Parameters.Add(":readId", OracleDbType.Int32).Value      = maxReadedMessageId;

                cmd.ExecuteNonQuery();
            }
        }
예제 #3
0
파일: Social.cs 프로젝트: radtek/EMIP
        public virtual void UpdateReaded(HttpContext context)
        {
            YZRequest      request = new YZRequest(context);
            YZResourceType resType = request.GetEnum <YZResourceType>("resType");
            string         resId   = request.GetString("resId");
            int            msgId   = request.GetInt32("msgId");
            string         uid     = YZAuthHelper.LoginUserAccount;

            using (IYZDbProvider provider = YZDbProviderManager.DefaultProvider)
            {
                using (IDbConnection cn = provider.OpenConnection())
                {
                    YZSoft.Web.Social.SocialManager.UpdateReaded(provider, cn, resType, resId, uid, msgId);
                }
            }

            JObject   jMessage = new JObject();
            YZMessage message  = new YZMessage();

            message.resType = resType;
            message.resId   = resId;
            message.uid     = uid;
            message.message = jMessage.ToString();
            message.date    = DateTime.Now;
            YZSoft.Web.Push.MessageBus.Instance.PushMessage(null, new string[] { "readed" }, message, false);
        }
예제 #4
0
        public virtual object AddFavorite(HttpContext context)
        {
            YZRequest      request  = new YZRequest(context);
            YZResourceType resType  = request.GetEnum <YZResourceType>("resType");
            string         resId    = request.GetString("resId");
            string         comments = request.GetString("comments", null);
            string         uid      = YZAuthHelper.LoginUserAccount;

            using (IYZDbProvider provider = YZDbProviderManager.DefaultProvider)
            {
                using (IDbConnection cn = provider.OpenConnection())
                {
                    if (!FavoriteManager.HasFavorited(provider, cn, uid, resType, resId))
                    {
                        Favorite favorite = new Favorite()
                        {
                            uid        = uid,
                            resType    = resType,
                            resId      = resId,
                            comments   = comments,
                            date       = DateTime.Now,
                            orderIndex = FavoriteManager.GetNextOrderIndex(provider, cn, uid, resType)
                        };

                        FavoriteManager.Insert(provider, cn, favorite);
                    }

                    return(true);
                }
            }
        }
예제 #5
0
        public virtual void UpdateTopicReaded(IDbConnection cn, YZResourceType resType, string resId, string uid, int maxReadedMessageId)
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.Connection = cn as SqlConnection;

                StringBuilder sb = new StringBuilder();
                sb.AppendLine("SELECT * FROM YZAppCommunicationRead WHERE uid=@uid AND resType=@resType AND resId=@resId AND readId>@readId");
                sb.AppendLine("IF @@ROWCOUNT = 0");
                sb.AppendLine("BEGIN");
                sb.AppendLine("UPDATE YZAppCommunicationRead SET readId=@readId WHERE uid=@uid AND resType=@resType AND resId=@resId");
                sb.AppendLine("IF @@ROWCOUNT = 0");
                sb.AppendLine("INSERT INTO YZAppCommunicationRead(uid,resType,resId,readId) VALUES(@uid,@resType,@resId,@readId)");
                sb.AppendLine("END");

                cmd.CommandText = sb.ToString();

                cmd.Parameters.Add("@uid", SqlDbType.NVarChar).Value     = uid;
                cmd.Parameters.Add("@resType", SqlDbType.NVarChar).Value = resType.ToString();
                cmd.Parameters.Add("@resId", SqlDbType.NVarChar).Value   = resId;
                cmd.Parameters.Add("@readId", SqlDbType.Int).Value       = maxReadedMessageId;

                cmd.ExecuteNonQuery();
            }
        }
예제 #6
0
파일: YZMessage.cs 프로젝트: linxueyang/F7
 public YZMessage(string uid, DateTime date, YZResourceType resType, string resId, string message)
 {
     this.uid = uid;
     this.date = date;
     this.resType = resType;
     this.resId = resId;
     this.message = message;
 }
예제 #7
0
 public YZMessage(string uid, DateTime date, YZResourceType resType, string resId, string message) : this()
 {
     this.uid     = uid;
     this.date    = date;
     this.resType = resType;
     this.resId   = resId;
     this.message = message;
 }
예제 #8
0
 public virtual IDataReader GetTopicMessageCount(IDbConnection cn, YZResourceType resType, string resId)
 {
     using (SqlCommand cmd = new SqlCommand())
     {
         cmd.Connection  = cn as SqlConnection;
         cmd.CommandText = @"SELECT count(*) FROM YZAppCommunication WHERE resType=@resType AND resId=@resId";
         cmd.Parameters.Add("@resType", SqlDbType.NVarChar).Value = resType.ToString();
         cmd.Parameters.Add("@resId", SqlDbType.NVarChar).Value   = resId;
         return(cmd.ExecuteReader());
     }
 }
예제 #9
0
        public static YZMessageCollection GetNewMessages(IDbConnection cn, YZResourceType resType, string resId, int maxReadedMessageId)
        {
            IYZDBProvider dbProvider = YZDBProviderManager.CurrentProvider;
            IDbCommand cmd = dbProvider.GetResourceCommunicationNewMessagesCommand(resType, resId, maxReadedMessageId);
            cmd.Connection = cn;

            using (YZReader reader = new YZReader(cmd.ExecuteReader()))
            {
                YZMessageCollection messages = new YZMessageCollection(reader);
                return messages;
            }
        }
예제 #10
0
 public IDataReader HasFavorited(IDbConnection cn, string uid, YZResourceType resType, string resId)
 {
     using (SqlCommand cmd = new SqlCommand())
     {
         cmd.Connection  = cn as SqlConnection;
         cmd.CommandText = @"SELECT count(*) FROM YZSysFavorites WHERE uid=@uid AND resType=@resType AND resId=@resId";
         cmd.Parameters.Add("@uid", SqlDbType.NVarChar).Value     = this.Convert(uid, false);
         cmd.Parameters.Add("@resType", SqlDbType.NVarChar).Value = resType.ToString();
         cmd.Parameters.Add("@resId", SqlDbType.NVarChar).Value   = this.Convert(resId, false);
         return(cmd.ExecuteReader());
     }
 }
예제 #11
0
 public void DeleteFavorite(IDbConnection cn, string uid, YZResourceType resType, string resId)
 {
     using (SqlCommand cmd = new SqlCommand())
     {
         cmd.Connection  = cn as SqlConnection;
         cmd.CommandText = @"DELETE FROM YZSysFavorites WHERE uid=@uid AND resType=@resType AND resId=@resId";
         cmd.Parameters.Add("@uid", SqlDbType.NVarChar).Value     = this.Convert(uid, false);
         cmd.Parameters.Add("@resType", SqlDbType.NVarChar).Value = resType.ToString();
         cmd.Parameters.Add("@resId", SqlDbType.NVarChar).Value   = this.Convert(resId, false);
         cmd.ExecuteNonQuery();
     }
 }
예제 #12
0
 public virtual IDataReader GetTopicMessageCount(IDbConnection cn, YZResourceType resType, string resId)
 {
     using (OracleCommand cmd = new OracleCommand())
     {
         cmd.Connection  = cn as OracleConnection;
         cmd.BindByName  = true;
         cmd.CommandText = "SELECT COUNT(*) FROM YZAPPCOMMUNICATION WHERE RESTYPE=:RESTYPE AND RESID=:RESID";
         cmd.Parameters.Add(":RESTYPE", OracleDbType.NVarchar2).Value = resType.ToString();
         cmd.Parameters.Add(":RESID", OracleDbType.NVarchar2).Value   = resId;
         return(cmd.ExecuteReader());
     }
 }
예제 #13
0
        public virtual IDataReader GetTopicNewMessages(IDbConnection cn, YZResourceType resType, string resId, int maxReadedMessageId)
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.Connection  = cn as SqlConnection;
                cmd.CommandText = "SELECT * FROM YZAppCommunication WHERE resType=@resType AND resId=@resId AND id>@id ORDER BY id";

                cmd.Parameters.Add("@resType", SqlDbType.NVarChar).Value = resType.ToString();
                cmd.Parameters.Add("@resId", SqlDbType.NVarChar).Value   = resId;
                cmd.Parameters.Add("@id", SqlDbType.Int).Value           = maxReadedMessageId;
                return(cmd.ExecuteReader());
            }
        }
예제 #14
0
        public static YZMessageCollection GetNewMessages(IDbConnection cn, YZResourceType resType, string resId, int maxReadedMessageId)
        {
            IYZDBProvider dbProvider = YZDBProviderManager.CurrentProvider;
            IDbCommand    cmd        = dbProvider.GetResourceCommunicationNewMessagesCommand(resType, resId, maxReadedMessageId);

            cmd.Connection = cn;

            using (YZReader reader = new YZReader(cmd.ExecuteReader()))
            {
                YZMessageCollection messages = new YZMessageCollection(reader);
                return(messages);
            }
        }
예제 #15
0
        public virtual IDbCommand GetResourceCommunicationNewMessagesCommand(YZResourceType resType, string resId, int maxReadedMessageId)
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.CommandText = "SELECT * FROM YZAppCommunication WHERE resType=@resType AND resId=@resId AND id>@id ORDER BY id";

                cmd.Parameters.Add("@resType", SqlDbType.NVarChar).Value = resType.ToString();
                cmd.Parameters.Add("@resId", SqlDbType.NVarChar).Value   = resId;
                cmd.Parameters.Add("@id", SqlDbType.Int).Value           = maxReadedMessageId;

                return(cmd);
            }
        }
예제 #16
0
        public static int GetNewMessageCount(IDbConnection cn, string uid, YZResourceType resType, string resId)
        {
            IYZDBProvider dbProvider = YZDBProviderManager.CurrentProvider;
            IDbCommand cmd = dbProvider.GetResourceCommunicationNewMessageCountCommand(uid, resType, resId);
            cmd.Connection = cn;

            using (YZReader reader = new YZReader(cmd.ExecuteReader()))
            {
                if (reader.Read())
                    return reader.ReadInt32(0);
                else
                    return 0;
            }
        }
예제 #17
0
        public IDataReader GetFavorites(IDbConnection cn, string uid, YZResourceType resType)
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.Connection = cn as SqlConnection;

                cmd.CommandText = "SELECT * FROM YZSysFavorites WHERE uid=@uid AND resType=@resType ORDER BY orderIndex ASC";

                cmd.Parameters.Add("@uid", SqlDbType.NVarChar).Value     = this.Convert(uid, false);
                cmd.Parameters.Add("@resType", SqlDbType.NVarChar).Value = resType.ToString();

                return(cmd.ExecuteReader());
            }
        }
예제 #18
0
        public virtual IDbCommand GetResourceCommunicationCountCommand(YZResourceType resType, string resId)
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("select count(*) from YZAppCommunication WHERE resType=@resType and resId=@resId");
                cmd.CommandText = sb.ToString();

                cmd.Parameters.Add("@resType", SqlDbType.NVarChar).Value = resType.ToString();
                cmd.Parameters.Add("@resId", SqlDbType.NVarChar).Value   = resId;

                return(cmd);
            }
        }
예제 #19
0
파일: Social.cs 프로젝트: radtek/EMIP
        public virtual object GetNewMesssageCount(HttpContext context)
        {
            YZRequest      request = new YZRequest(context);
            YZResourceType resType = request.GetEnum <YZResourceType>("resType");
            string         resId   = request.GetString("resId");
            string         uid     = YZAuthHelper.LoginUserAccount;

            using (IYZDbProvider provider = YZDbProviderManager.DefaultProvider)
            {
                using (IDbConnection cn = provider.OpenConnection())
                {
                    return(YZSoft.Web.Social.SocialManager.GetNewMessageCount(provider, cn, resType, resId, uid));
                }
            }
        }
예제 #20
0
 public static int GetMessageCount(IYZDbProvider provider, IDbConnection cn, YZResourceType resType, string resId)
 {
     try
     {
         using (YZReader reader = new YZReader(provider.GetTopicMessageCount(cn, resType, resId)))
         {
             reader.Read();
             return(reader.ReadInt32(0));
         }
     }
     catch (Exception e)
     {
         throw new BPMException(BPMExceptionType.DBInsertDataErr, "YZAppCommunication", e.Message);
     }
 }
예제 #21
0
        public virtual IDataReader GetTopicNewMessageCount(IDbConnection cn, YZResourceType resType, string resId, string uid)
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.Connection  = cn as SqlConnection;
                cmd.CommandText = @"
DECLARE @readId int
SELECT @readId = ISNULL(max(readId),0) FROM YZAppCommunicationRead WHERE resType=@resType AND resId=@resId and uid=@uid
SELECT count(*) FROM YZAppCommunication WHERE resType=@resType AND resId=@resId and id>@readId
";

                cmd.Parameters.Add("@resType", SqlDbType.NVarChar).Value = resType.ToString();
                cmd.Parameters.Add("@resId", SqlDbType.NVarChar).Value   = resId;
                cmd.Parameters.Add("@uid", SqlDbType.NVarChar).Value     = uid;
                return(cmd.ExecuteReader());
            }
        }
예제 #22
0
        public static BPMObjectNameCollection GetNotifyUsers(YZResourceType resType, string resId)
        {
            BPMObjectNameCollection uids = new BPMObjectNameCollection();

            switch (resType)
            {
            case YZResourceType.Group:
                using (IYZDbProvider provider = YZDbProviderManager.DefaultProvider)
                {
                    using (IDbConnection cn = provider.OpenConnection())
                    {
                        MemberCollection members = GroupManager.GetGroupMembers(provider, cn, Int32.Parse(resId));
                        foreach (Member member in members)
                        {
                            uids.Add(member.UID);
                        }
                    }
                }
                break;

            case YZResourceType.SingleChat:
                using (IYZDbProvider provider = YZDbProviderManager.DefaultProvider)
                {
                    using (IDbConnection cn = provider.OpenConnection())
                    {
                        P2PGroup.P2PGroup group = P2PGroupManager.GetGroup(provider, cn, Int32.Parse(resId));
                        uids.Add(group.Account1);
                        uids.Add(group.Account2);
                    }
                }
                break;

            case YZResourceType.Task:
                using (IYZDbProvider provider = YZDbProviderManager.DefaultProvider)
                {
                    using (IDbConnection cn = provider.OpenConnection())
                    {
                        uids = NotifyManager.GetNotifyUsersTaskSocial(provider, cn, Int32.Parse(resId));
                    }
                }
                break;
            }

            return(uids);
        }
예제 #23
0
        public virtual void MoveFavorites(HttpContext context)
        {
            YZRequest      request  = new YZRequest(context);
            string         uid      = YZAuthHelper.LoginUserAccount;
            YZResourceType resType  = request.GetEnum <YZResourceType>("resType");
            string         target   = request.GetString("target");
            MovePosition   position = request.GetEnum <MovePosition>("position");
            JArray         post     = request.GetPostData <JArray>();
            List <string>  ids      = post.ToObject <List <string> >();

            using (IYZDbProvider provider = YZDbProviderManager.DefaultProvider)
            {
                using (IDbConnection cn = provider.OpenConnection())
                {
                    FavoriteManager.MoveFavorites(provider, cn, uid, resType, ids.ToArray(), target, position);
                }
            }
        }
예제 #24
0
        public static int GetNewMessageCount(IDbConnection cn, string uid, YZResourceType resType, string resId)
        {
            IYZDBProvider dbProvider = YZDBProviderManager.CurrentProvider;
            IDbCommand    cmd        = dbProvider.GetResourceCommunicationNewMessageCountCommand(uid, resType, resId);

            cmd.Connection = cn;

            using (YZReader reader = new YZReader(cmd.ExecuteReader()))
            {
                if (reader.Read())
                {
                    return(reader.ReadInt32(0));
                }
                else
                {
                    return(0);
                }
            }
        }
예제 #25
0
        public virtual object CancelFavorite(HttpContext context)
        {
            YZRequest      request  = new YZRequest(context);
            YZResourceType resType  = request.GetEnum <YZResourceType>("resType");
            string         resId    = request.GetString("resId");
            string         comments = request.GetString("comments", null);
            string         uid      = YZAuthHelper.LoginUserAccount;

            using (IYZDbProvider provider = YZDbProviderManager.DefaultProvider)
            {
                using (IDbConnection cn = provider.OpenConnection())
                {
                    if (FavoriteManager.HasFavorited(provider, cn, uid, resType, resId))
                    {
                        FavoriteManager.DeleteFavorite(provider, cn, uid, resType, resId);
                    }

                    return(false);
                }
            }
        }
예제 #26
0
파일: Social.cs 프로젝트: radtek/EMIP
        public virtual object PostComments(HttpContext context)
        {
            YZRequest      request  = new YZRequest(context);
            string         clientid = request.GetString("clientid", null);
            YZResourceType resType  = request.GetEnum <YZResourceType>("resType");
            string         resId    = request.GetString("resId");
            int            duration = request.GetInt32("duration", -1);
            JObject        jPost    = request.GetPostData <JObject>();
            string         msg      = (string)jPost["message"];
            string         uid      = YZAuthHelper.LoginUserAccount;

            YZMessage message = new YZMessage();

            message.resType  = resType;
            message.resId    = resId;
            message.uid      = uid;
            message.date     = DateTime.Now;
            message.message  = msg;
            message.replyto  = -1;
            message.duration = duration;

            using (BPMConnection cn = new BPMConnection())
            {
                cn.WebOpen();
                this.PostProcessMessage(cn, message);
            }

            using (IYZDbProvider provider = YZDbProviderManager.DefaultProvider)
            {
                using (IDbConnection cn = provider.OpenConnection())
                {
                    SocialManager.Insert(provider, cn, message);
                    SocialManager.UpdateReaded(provider, cn, resType, resId, uid, message.id);
                }
            }

            YZSoft.Web.Push.MessageBus.Instance.onPostComments(clientid, message);
            return(message);
        }
예제 #27
0
파일: Social.cs 프로젝트: radtek/EMIP
        public virtual object GetMessages(HttpContext context)
        {
            YZRequest      request = new YZRequest(context);
            YZResourceType resType = request.GetEnum <YZResourceType>("resType");
            string         resId   = request.GetString("resId");

            YZMessageCollection messagesAll = new YZMessageCollection();
            YZMessageCollection messages;

            using (IYZDbProvider provider = YZDbProviderManager.DefaultProvider)
            {
                using (IDbConnection cn = provider.OpenConnection())
                {
                    messages = SocialManager.GetMessages(provider, cn, resType, resId);
                    messagesAll.AddRange(messages);

                    foreach (YZMessage message in messages)
                    {
                        YZMessageCollection replies = SocialManager.GetMessageReplies(provider, cn, message.id);
                        message["Replies"] = replies;
                        message["Praised"] = SocialManager.GetVotePraisedCount(provider, cn, message.id);

                        messagesAll.AddRange(replies);
                    }
                }
            }

            using (BPMConnection cn = new BPMConnection())
            {
                cn.WebOpen();

                foreach (YZMessage message in messagesAll)
                {
                    this.PostProcessMessage(cn, message);
                }
            }

            return(messages);
        }
예제 #28
0
        public virtual IDataReader GetSocialMessagesNext(IDbConnection cn, YZResourceType resType, string resId, int msgId, int rows)
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.Connection  = cn as SqlConnection;
                cmd.CommandText = @"
WITH A AS(
    SELECT * FROM YZAppCommunication WHERE resType=@resType AND resId=@resId AND ((id > @msgId) OR @msgId=-1)
),
B AS(
	SELECT *,ROW_NUMBER() OVER(ORDER BY id ASC) AS RowNum FROM A
)
SELECT * FROM B WHERE RowNum <= @rows ORDER BY id ASC
";

                cmd.Parameters.Add("@resType", SqlDbType.NVarChar).Value = resType.ToString();
                cmd.Parameters.Add("@resId", SqlDbType.NVarChar).Value   = resId;
                cmd.Parameters.Add("@msgId", SqlDbType.Int).Value        = msgId;
                cmd.Parameters.Add("@rows", SqlDbType.Int).Value         = rows;
                return(cmd.ExecuteReader());
            }
        }
예제 #29
0
파일: Social.cs 프로젝트: radtek/EMIP
        public virtual object GetSocialMessages(HttpContext context)
        {
            YZRequest      request = new YZRequest(context);
            YZResourceType resType = request.GetEnum <YZResourceType>("resType");
            string         resId   = request.GetString("resId");
            string         dir     = request.GetString("dir");
            int            msgId   = request.GetInt32("msgId", -1);
            int            rows    = request.GetInt32("rows", 20);

            YZMessageCollection messages;

            using (IYZDbProvider provider = YZDbProviderManager.DefaultProvider)
            {
                using (IDbConnection cn = provider.OpenConnection())
                {
                    if (NameCompare.EquName(dir, "prev"))
                    {
                        messages = SocialManager.GetSocialMessagesPrev(provider, cn, resType, resId, msgId, rows);
                    }
                    else
                    {
                        messages = SocialManager.GetSocialMessagesNext(provider, cn, resType, resId, msgId, rows);
                    }
                }
            }

            using (BPMConnection cn = new BPMConnection())
            {
                cn.WebOpen();

                foreach (YZMessage message in messages)
                {
                    this.PostProcessMessage(cn, message);
                }
            }

            return(messages);
        }
예제 #30
0
        public virtual IDataReader GetSocialMessagesNext(IDbConnection cn, YZResourceType resType, string resId, int msgId, int rows)
        {
            using (OracleCommand cmd = new OracleCommand())
            {
                cmd.Connection  = cn as OracleConnection;
                cmd.BindByName  = true;
                cmd.CommandText = @"
WITH A AS(
    SELECT * FROM YZAppCommunication WHERE resType=:resType AND resId=:resId AND ((id > :msgId) OR :msgId=-1) ORDER BY id ASC
),
B AS(
	SELECT *,ROWNUM RN__ FROM A
)
SELECT * FROM B WHERE RN__ <= :PM_rows ORDER BY id ASC
";

                cmd.Parameters.Add(":resType", OracleDbType.NVarchar2).Value = resType.ToString();
                cmd.Parameters.Add(":resId", OracleDbType.NVarchar2).Value   = resId;
                cmd.Parameters.Add(":msgId", OracleDbType.Int32).Value       = msgId;
                cmd.Parameters.Add(":PM_rows", OracleDbType.Int32).Value     = rows;
                return(cmd.ExecuteReader());
            }
        }
예제 #31
0
 public static void DeleteFavorite(IYZDbProvider provider, IDbConnection cn, string uid, YZResourceType resType, string resId)
 {
     try
     {
         provider.DeleteFavorite(cn, uid, resType, resId);
     }
     catch (Exception e)
     {
         throw new BPMException(BPMExceptionType.DBUpdateDataErr, "YZSysFavorites", e.Message);
     }
 }
예제 #32
0
 public static int GetNextOrderIndex(IYZDbProvider provider, IDbConnection cn, string uid, YZResourceType resType)
 {
     try
     {
         return(provider.GetNextOrderIndex(cn, "YZSysFavorites", "uid", uid, "resType", resType.ToString()));
     }
     catch (Exception e)
     {
         throw new BPMException(BPMExceptionType.DBLoadDataErr, "YZSysFavorites", e.Message);
     }
 }
예제 #33
0
        public virtual IDbCommand GetResourceCommunicationNewMessageCountCommand(string uid, YZResourceType resType, string resId)
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("declare @readId int");
                sb.AppendLine("select @readId = ISNULL(max(readId),0) from YZAppCommunicationRead WHERE resType=@resType and resId=@resId and uid=@uid");
                sb.AppendLine("select count(*) from YZAppCommunication WHERE resType=@resType and resId=@resId and id>@readId");
                cmd.CommandText = sb.ToString();

                cmd.Parameters.Add("@resType", SqlDbType.NVarChar).Value = resType.ToString();
                cmd.Parameters.Add("@resId", SqlDbType.NVarChar).Value = resId;
                cmd.Parameters.Add("@uid", SqlDbType.NVarChar).Value = uid;

                return cmd;
            }
        }
예제 #34
0
        public virtual void UpdateResourceCommunicationReaded(IDbConnection cn, string uid, YZResourceType resType, string resId, int maxReadedMessageId)
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.Connection = cn as SqlConnection;

                StringBuilder sb = new StringBuilder();
                sb.AppendLine("SELECT * FROM YZAppCommunicationRead WHERE uid=@uid AND resType=@resType AND resId=@resId AND readId>@readId");
                sb.AppendLine("IF @@ROWCOUNT = 0");
                sb.AppendLine("BEGIN");
                sb.AppendLine("UPDATE YZAppCommunicationRead SET readId=@readId WHERE uid=@uid AND resType=@resType AND resId=@resId");
                sb.AppendLine("IF @@ROWCOUNT = 0");
                sb.AppendLine("INSERT INTO YZAppCommunicationRead(uid,resType,resId,readId) VALUES(@uid,@resType,@resId,@readId)");
                sb.AppendLine("END");

                cmd.CommandText = sb.ToString();

                cmd.Parameters.Add("@uid", SqlDbType.NVarChar).Value = uid;
                cmd.Parameters.Add("@resType", SqlDbType.NVarChar).Value = resType.ToString();
                cmd.Parameters.Add("@resId", SqlDbType.NVarChar).Value = resId;
                cmd.Parameters.Add("@readId", SqlDbType.Int).Value = maxReadedMessageId;

                cmd.ExecuteNonQuery();
            }
        }
예제 #35
0
        public virtual IDbCommand GetResourceCommunicationCountCommand(YZResourceType resType, string resId)
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("select count(*) from YZAppCommunication WHERE resType=@resType and resId=@resId");
                cmd.CommandText = sb.ToString();

                cmd.Parameters.Add("@resType", SqlDbType.NVarChar).Value = resType.ToString();
                cmd.Parameters.Add("@resId", SqlDbType.NVarChar).Value = resId;

                return cmd;
            }
        }
예제 #36
0
 public static void UpdateReaded(IDbConnection cn, string uid, YZResourceType resType, string resId, int maxReadedMessageId)
 {
     IYZDBProvider dbProvider = YZDBProviderManager.CurrentProvider;
     dbProvider.UpdateResourceCommunicationReaded(cn, uid, resType, resId, maxReadedMessageId);
 }
예제 #37
0
        public void ProcessRequest(HttpContext context)
        {
            try
            {
                YZAuthHelper.OAuth();
                //YZAuthHelper.AshxAuthCheck();

                string loginUid = YZAuthHelper.LoginUserAccount;

                IDBProvider dbProvider = YZDBProviderManager.CurrentProvider;

                string   method = context.Request.Params["method"];
                JsonItem rv     = new JsonItem();

                // System.Threading.Thread.Sleep(2000);

                if (method == "Send")
                {
                    //http://oauth.skyworthdigital.com/WebService/Iservice/Communication.ashx?UserAccount=SDT12872&restype=1&message=添加一条哦啊讨论啊&resId=216928&method=Send

                    YZResourceType resType = (YZResourceType)Enum.Parse(typeof(YZResourceType), context.Request.Params["resType"], true);
                    string         resId   = context.Request.Params["resId"];
                    string         msg     = context.Request.Params["message"];

                    if (!string.IsNullOrEmpty(msg.Trim()))
                    {
                        using (IDbConnection cn = dbProvider.OpenConnection())
                        {
                            YZMessage message = new YZMessage(loginUid, DateTime.Now, resType, resId, msg);
                            message.Insert(cn);

                            YZCommunicationManager.UpdateReaded(cn, loginUid, resType, resId, message.id);

                            JsonItem result = new JsonItem();
                            rv.Attributes.Add("message", result);
                            message.Serialize(result);
                        }
                    }
                }
                else if (method == "GetTaskCommunicationList")
                {
                    GridPageInfo gridPageInfo = new GridPageInfo(context);

                    SecurityToken token = null;
                    using (BPMConnection bpmcn = new BPMConnection())
                    {
                        bpmcn.WebOpen();
                        token = bpmcn.Token;
                    }

                    using (IDbConnection cn = dbProvider.OpenConnection())
                    {
                        //http://oauth.skyworthdigital.com/WebService/Iservice/Communication.ashx?UserAccount=SDT12872&method=GetTaskCommunicationList&SearchType=QuickSearch&Keyword=216928
                        //http://oauth.skyworthdigital.com/WebService/Iservice/Communication.ashx?UserAccount=SDT12872&method=GetTaskCommunicationList&SearchType=QuickSearch&Keyword=REQ2014090001

                        using (BPMConnection bpmcn = new BPMConnection())
                        {
                            bpmcn.WebOpen();

                            IDbCommand cmd = dbProvider.GetTaskCommunicationListCommand(cn, loginUid, token.SIDs, dbProvider.FilterStringCommunicationListTaskTableFilter, dbProvider.FilterStringCommunicationMessageTableFilter, gridPageInfo.Start, gridPageInfo.Limit);
                            cmd.Connection = cn;

                            JsonItemCollection children = new JsonItemCollection();
                            rv.Attributes.Add("children", children);

                            using (YZReader reader = new YZReader(cmd.ExecuteReader()))
                            {
                                while (reader.Read())
                                {
                                    JsonItem item = new JsonItem();
                                    children.Add(item);

                                    string ownerAccount     = reader.ReadString("OwnerAccount");
                                    User   owner            = User.TryGetUser(bpmcn, ownerAccount);
                                    string ownerDisplayName = owner != null ? owner.DisplayName : ownerAccount;

                                    string lastMsgUid  = reader.ReadString("uid");
                                    User   lastMsgUser = User.TryGetUser(bpmcn, lastMsgUid);
                                    string lastMessageUserShortName = lastMsgUser != null ? lastMsgUser.ShortName : lastMsgUid;

                                    TaskState state  = (TaskState)reader.ReadEnum("State", typeof(TaskState), TaskState.Unknow);
                                    int       taskid = reader.ReadInt32("TaskID");

                                    item.Attributes["tid"]       = taskid;
                                    item.Attributes["sn"]        = reader.ReadString("SerialNum");
                                    item.Attributes["pn"]        = reader.ReadString("ProcessName");
                                    item.Attributes["user"]      = YZStringHelper.GetUserShortName(ownerAccount, ownerDisplayName);
                                    item.Attributes["state"]     = state.ToString();
                                    item.Attributes["stateText"] = YZStringHelper.GetTaskStateDisplayString(bpmcn, state, taskid);
                                    item.Attributes["date"]      = YZStringHelper.DateToStringL(reader.ReadDateTime("CreateAt"));

                                    string desc = Convert.ToString(reader.ReadString("Description"));



                                    item.Attributes["desc"] = String.IsNullOrEmpty(desc) ? "无内容摘要" : desc.CutStrHTML(isHTML: true);

                                    item.Attributes["count"]                    = reader.ReadInt32("count");
                                    item.Attributes["total"]                    = reader.ReadInt32("total");
                                    item.Attributes["Id"]                       = reader.ReadInt32("Id");
                                    item.Attributes["lastMessageId"]            = reader.ReadInt32("lastMsgId");
                                    item.Attributes["lastMessageUid"]           = lastMsgUid;
                                    item.Attributes["lastMessageUserShortName"] = lastMessageUserShortName;
                                    item.Attributes["lastMessageDate"]          = YZStringHelper.DateToStringL(reader.ReadDateTime("date"));
                                    item.Attributes["lastMessage"]              = reader.ReadString("message");
                                }
                            }
                        }

                        rv.Attributes["newMessageCount"] = dbProvider.GetTaskCommunicationNewMessageCount(cn, loginUid, token.SIDs);
                    }
                }
                else if (method == "GetBadge")
                {
                    YZResourceType resType = (YZResourceType)Enum.Parse(typeof(YZResourceType), context.Request.Params["resType"], true);
                    string         resId   = context.Request.Params["resId"];

                    using (IDbConnection cn = dbProvider.OpenConnection())
                    {
                        rv.Attributes["total"]           = YZCommunicationManager.GetMessageCount(cn, resType, resId);
                        rv.Attributes["newMessageCount"] = YZCommunicationManager.GetNewMessageCount(cn, loginUid, resType, resId);
                    }
                }
                else if (method == "UpdateReaded")
                {
                    YZResourceType resType   = (YZResourceType)Enum.Parse(typeof(YZResourceType), context.Request.Params["resType"], true);
                    string         resId     = context.Request.Params["resId"];
                    string         strLastId = context.Request.Params["lastid"];
                    if (String.IsNullOrEmpty(strLastId))
                    {
                        strLastId = "-1";
                    }
                    int lastId = Convert.ToInt32(strLastId);

                    using (IDbConnection cn = dbProvider.OpenConnection())
                    {
                        YZCommunicationManager.UpdateReaded(cn, loginUid, resType, resId, lastId);
                    }
                }
                else
                {
                    //http://bpm.sdt.com/YZSoft/Forms/XForm/%E5%B7%A5%E4%BD%9C%E6%8A%A5%E5%91%8A/%E5%B7%A5%E4%BD%9C%E6%8A%A5%E5%91%8A.aspx?tid=216928
                    //http://oauth.skyworthdigital.com/WebService/Iservice/Communication.ashx?UserAccount=SDT12872&restype=1&lastid=306&resId=216928

                    YZResourceType resType   = (YZResourceType)Enum.Parse(typeof(YZResourceType), context.Request.Params["resType"], true);
                    string         resId     = context.Request.Params["resId"];
                    string         strLastId = context.Request.Params["lastid"];
                    if (String.IsNullOrEmpty(strLastId))
                    {
                        strLastId = "-1";
                    }
                    int lastId = Convert.ToInt32(strLastId);

                    //获得数据
                    JsonItemCollection children = new JsonItemCollection();
                    rv.Attributes.Add("children", children);

                    using (BPMConnection bpmcn = new BPMConnection())
                    {
                        bpmcn.WebOpen();

                        using (IDbConnection cn = dbProvider.OpenConnection())
                        {
                            YZMessageCollection messages = YZCommunicationManager.GetNewMessages(cn, resType, resId, lastId);
                            messages.Serialize(bpmcn, children);
                        }
                    }
                }


                //输出数据
                context.Response.AppendHeader("Access-Control-Allow-Origin", "*");      // 响应类型
                context.Response.AppendHeader("Access-Control-Allow-Methods", "POST");  // 响应头设置
                context.Response.AppendHeader("Access-Control-Allow-Headers", "x-requested-with,content-type");

                context.Response.Charset         = "gb2312"; //设置字符集类型
                context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
                context.Response.ContentType     = "application/json;charset=gb2312";

                //输出数据
                rv.Attributes.Add("success", true);
                context.Response.Write(rv.ToString());
            }
            catch (Exception e)
            {
                JsonItem rv = new JsonItem();

                context.Response.AppendHeader("Access-Control-Allow-Origin", "*");      // 响应类型
                context.Response.AppendHeader("Access-Control-Allow-Methods", "POST");  // 响应头设置
                context.Response.AppendHeader("Access-Control-Allow-Headers", "x-requested-with,content-type");

                context.Response.Charset         = "gb2312"; //设置字符集类型
                context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
                context.Response.ContentType     = "application/json;charset=gb2312";

                rv.Attributes.Add("success", false);
                rv.Attributes.Add("errorMessage", e.Message);
                context.Response.Write(rv.ToString());
            }
        }
예제 #38
0
        public virtual IDbCommand GetResourceCommunicationNewMessagesCommand(YZResourceType resType, string resId, int maxReadedMessageId)
        {
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.CommandText = "SELECT * FROM YZAppCommunication WHERE resType=@resType AND resId=@resId AND id>@id ORDER BY id";

                cmd.Parameters.Add("@resType", SqlDbType.NVarChar).Value = resType.ToString();
                cmd.Parameters.Add("@resId", SqlDbType.NVarChar).Value = resId;
                cmd.Parameters.Add("@id", SqlDbType.Int).Value = maxReadedMessageId;

                return cmd;
            }
        }