⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 message.cs

📁 动易SiteFactory&#8482 网上商店系统1.0源代码
💻 CS
字号:
namespace PowerEasy.SqlServerDal.Accessories
{
    using Microsoft.Practices.EnterpriseLibrary.Data;
    using PowerEasy.Enumerations;
    using PowerEasy.IDal.Accessories;
    using PowerEasy.Model.Accessories;
    using PowerEasy.SqlServerDal;
    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.Common;
    using System.Text;

    public class Message : IMessage
    {
        private int m_NumMessages;

        public bool Add(MessageInfo messageInfo)
        {
            Parameters cmdParams = new Parameters();
            cmdParams.AddInParameter("@Title", DbType.String, messageInfo.Title);
            cmdParams.AddInParameter("@Content", DbType.String, messageInfo.Content);
            cmdParams.AddInParameter("@Sender", DbType.String, messageInfo.Sender);
            cmdParams.AddInParameter("@Incept", DbType.String, messageInfo.Incept);
            cmdParams.AddInParameter("@SendTime", DbType.DateTime, messageInfo.SendTime);
            cmdParams.AddInParameter("@IsSend", DbType.Int32, messageInfo.IsSend);
            cmdParams.AddInParameter("@IsDelInbox", DbType.Int32, messageInfo.IsDelInbox);
            cmdParams.AddInParameter("@IsDelSendbox", DbType.Int32, messageInfo.IsDelSendbox);
            cmdParams.AddInParameter("@IsRead", DbType.Int32, messageInfo.IsRead);
            return DBHelper.ExecuteProc("PR_Accessories_Message_Add", cmdParams);
        }

        public bool Clear(MessageManageType manageType, string userName, string messageIdList)
        {
            string format = string.Empty;
            switch (manageType)
            {
                case MessageManageType.Inbox:
                    format = "Update PE_Message set IsDelInbox=1 Where Incept='{0}' And IsDelInbox=0 {1}";
                    break;

                case MessageManageType.Outbox:
                    format = "Update PE_Message set IsDelSendbox=1 Where Sender='{0}' And IsDelSendbox=0 And IsSend=0 {1}";
                    break;

                case MessageManageType.IsSend:
                    format = "Update PE_Message Set IsDelSendbox=1 Where Sender='{0}' And IsDelSendbox=0 And IsSend=1 {1}";
                    break;

                case MessageManageType.Recycle:
                    format = "Delete From PE_Message Where Incept='{0}' And IsDelInbox=1 And IsDelSendbox=2 {1} ; Delete From PE_Message Where Sender='{0}' And IsDelSendbox=1 And IsDelInbox=2 {1} ; Delete From PE_Message Where Sender='{0}' And IsDelSendbox=1 And IsSend=0 {1} ; Update PE_Message Set IsDelSendbox=2 Where Sender='{0}' And IsDelSendbox=1 {1} ; Update PE_Message Set IsDelInbox=2 Where Incept='{0}' And IsDelInbox=1 {1} ";
                    break;

                default:
                    return false;
            }
            string str2 = string.Empty;
            if (!string.IsNullOrEmpty(messageIdList))
            {
                str2 = " And MessageID In(" + messageIdList + ")";
            }
            return DBHelper.ExecuteSql(string.Format(format, userName, str2));
        }

        public int Count()
        {
            return this.m_NumMessages;
        }

        public bool Delete(MessageDelType deleteType, string deleteValue)
        {
            Parameters cmdParams = new Parameters();
            cmdParams.AddInParameter("@DeleteType", DbType.Int32, (int) deleteType);
            cmdParams.AddInParameter("@DeleteValue", DbType.String, deleteValue);
            return DBHelper.ExecuteProc("PR_Accessories_Message_Delete", cmdParams);
        }

        private IList<MessageInfo> GetList(int startRowIndexId, int maxNumberRows, Database db, DbCommand ProcdbComm)
        {
            db.AddInParameter(ProcdbComm, "@StartRows", DbType.Int32, startRowIndexId);
            db.AddInParameter(ProcdbComm, "@PageSize", DbType.Int32, maxNumberRows);
            db.AddInParameter(ProcdbComm, "@SortColumn", DbType.String, "MessageID");
            db.AddInParameter(ProcdbComm, "@StrColumn", DbType.String, "*");
            db.AddInParameter(ProcdbComm, "@Sorts", DbType.String, "DESC");
            db.AddInParameter(ProcdbComm, "@TableName", DbType.String, "PE_Message");
            db.AddOutParameter(ProcdbComm, "@Total", DbType.Int32, maxNumberRows);
            IList<MessageInfo> list = new List<MessageInfo>();
            using (NullableDataReader reader = new NullableDataReader(db.ExecuteReader(ProcdbComm)))
            {
                while (reader.Read())
                {
                    list.Add(MessageFromrdr(reader));
                }
            }
            this.m_NumMessages = (int) db.GetParameterValue(ProcdbComm, "@Total");
            return list;
        }

        private static MessageInfo GetMessage(int messsageId, string userName, string sqlCmd)
        {
            Parameters cmdParams = new Parameters();
            cmdParams.AddInParameter("@UserName", DbType.String, userName);
            cmdParams.AddInParameter("@ID", DbType.Int32, messsageId);
            using (NullableDataReader reader = DBHelper.ExecuteReaderSql(sqlCmd, cmdParams))
            {
                if (reader.Read())
                {
                    return MessageFromrdr(reader);
                }
                return new MessageInfo(true);
            }
        }

        public MessageInfo GetMessageById(int messageId)
        {
            Database database = DatabaseFactory.CreateDatabase();
            DbCommand storedProcCommand = database.GetStoredProcCommand("PR_Accessories_Message_GetById");
            database.AddInParameter(storedProcCommand, "@MessageId", DbType.Int32, messageId);
            using (NullableDataReader reader = new NullableDataReader(database.ExecuteReader(storedProcCommand)))
            {
                if (reader.Read())
                {
                    return MessageFromrdr(reader);
                }
                return new MessageInfo(true);
            }
        }

        public IList<MessageInfo> GetMessageList(int startRowIndexId, int maxNumberRows, MessageSearchField searchType, string keyword)
        {
            Database db = DatabaseFactory.CreateDatabase();
            DbCommand storedProcCommand = db.GetStoredProcCommand("PR_Common_GetList");
            if ((searchType != MessageSearchField.All) && !string.IsNullOrEmpty(keyword))
            {
                if (searchType == MessageSearchField.OnePeople)
                {
                    string str = "Sender like '%" + keyword + "%' or Incept like '%" + keyword + "%'";
                    db.AddInParameter(storedProcCommand, "@Filter", DbType.String, str);
                }
                else
                {
                    db.AddInParameter(storedProcCommand, "@Filter", DbType.String, searchType.ToString() + " like '%" + keyword + "%'");
                }
            }
            else
            {
                db.AddInParameter(storedProcCommand, "@Filter", DbType.String, "");
            }
            return this.GetList(startRowIndexId, maxNumberRows, db, storedProcCommand);
        }

        public IList<MessageInfo> GetMessageList(int startRowIndexId, int maxNumberRows, string userName, int read)
        {
            Database db = DatabaseFactory.CreateDatabase();
            StringBuilder builder = new StringBuilder();
            switch (read)
            {
                case -1:
                    builder.Append(" IsRead=1 AND ");
                    break;

                case 1:
                    builder.Append(" IsRead=0 AND ");
                    break;
            }
            if (!string.IsNullOrEmpty(userName))
            {
                builder.Append("Incept='" + userName + "' AND ");
            }
            if (builder.Length > 0)
            {
                builder.Remove(builder.Length - 4, 4);
            }
            DbCommand storedProcCommand = db.GetStoredProcCommand("PR_Common_GetList");
            db.AddInParameter(storedProcCommand, "@Filter", DbType.String, builder.ToString());
            return this.GetList(startRowIndexId, maxNumberRows, db, storedProcCommand);
        }

        public IList<MessageInfo> GetMessageList(int startRowIndexId, int maxNumberRows, string userName, MessageManageType manageType, MessageSearchField searchField, string keyword)
        {
            Database db = DatabaseFactory.CreateDatabase();
            StringBuilder builder = new StringBuilder();
            switch (manageType)
            {
                case MessageManageType.Inbox:
                    builder.Append("IsSend = 1 and IsDelInbox = 0 and Incept = '" + userName + "'");
                    break;

                case MessageManageType.Outbox:
                    builder.Append("Sender = '" + userName + "' and IsSend = 0 and IsDelSendbox = 0");
                    break;

                case MessageManageType.IsSend:
                    builder.Append("Sender = '" + userName + "' and IsSend = 1 and IsDelSendbox = 0");
                    break;

                case MessageManageType.Recycle:
                    builder.Append("((Sender = '" + userName + "' and IsDelSendbox = 1) or (Incept = '" + userName + "' and IsDelInbox = 1))");
                    break;

                default:
                    builder.Append("IsSend = 1 and IsDelInbox = 0 and Incept = '" + userName + "'");
                    break;
            }
            if ((searchField != MessageSearchField.All) && !string.IsNullOrEmpty(keyword))
            {
                builder.Append(" and " + searchField.ToString() + " like '%" + keyword + "%'");
            }
            DbCommand storedProcCommand = db.GetStoredProcCommand("PR_Common_GetList");
            db.AddInParameter(storedProcCommand, "@Filter", DbType.String, builder.ToString());
            return this.GetList(startRowIndexId, maxNumberRows, db, storedProcCommand);
        }

        public MessageInfo GetMessageOfEdit(int messageId, string userName)
        {
            string sqlCmd = "Select * from PE_Message where Sender=@UserName and IsSend=0 and MessageID=@ID";
            return GetMessage(messageId, userName, sqlCmd);
        }

        public MessageInfo GetMessageOfForward(int messageId, string userName)
        {
            string sqlCmd = "Select * from PE_Message where (Incept=@UserName or Sender=@UserName) and MessageID=@ID";
            return GetMessage(messageId, userName, sqlCmd);
        }

        public MessageInfo GetMessageOfReply(int messageId, string userName)
        {
            string sqlCmd = "Select * from PE_Message where Incept=@UserName and MessageID=@ID";
            return GetMessage(messageId, userName, sqlCmd);
        }

        public int GetUnreadMessageFirstId(string userName)
        {
            string strSql = "select max(MessageID) from PE_Message where incept=@UserName and IsSend=1 and IsRead=0 and isdelinbox=0";
            object obj2 = DBHelper.ExecuteScalarSql(strSql, new Parameters("@UserName", DbType.String, userName));
            if (obj2 != null)
            {
                return (int) obj2;
            }
            return 0;
        }

        public IList<string> GetUserNameList(string groupId)
        {
            string str;
            IList<string> list = new List<string>();
            Database database = DatabaseFactory.CreateDatabase();
            if (string.IsNullOrEmpty(groupId))
            {
                str = "select UserName from PE_Users";
            }
            else
            {
                str = "select UserName from PE_Users where GroupID in ( " + groupId + " )";
            }
            DbCommand sqlStringCommand = database.GetSqlStringCommand(str);
            using (NullableDataReader reader = new NullableDataReader(database.ExecuteReader(sqlStringCommand)))
            {
                while (reader.Read())
                {
                    list.Add(reader.GetString("UserName"));
                }
            }
            return list;
        }

        private static MessageInfo MessageFromrdr(NullableDataReader rdr)
        {
            MessageInfo info = new MessageInfo();
            info.MessageId = rdr.GetInt32("MessageId");
            info.Title = rdr.GetString("Title");
            info.Content = rdr.GetString("Content");
            info.Sender = rdr.GetString("Sender");
            info.Incept = rdr.GetString("Incept");
            info.SendTime = rdr.GetDateTime("SendTime");
            info.IsSend = rdr.GetInt32("IsSend");
            info.IsDelInbox = rdr.GetInt32("IsDelInbox");
            info.IsDelSendbox = rdr.GetInt32("IsDelSendbox");
            info.IsRead = rdr.GetInt32("IsRead");
            return info;
        }

        public int UnreadMessageCount(string userName)
        {
            string strSql = "select count(*) from PE_Message where incept=@UserName and IsSend=1 and IsRead=0 and isdelinbox=0";
            object obj2 = DBHelper.ExecuteScalarSql(strSql, new Parameters("@UserName", DbType.String, userName));
            if (obj2 != null)
            {
                return (int) obj2;
            }
            return 0;
        }

        public bool Update(MessageInfo messageInfo)
        {
            Parameters cmdParams = new Parameters();
            cmdParams.AddInParameter("@Title", DbType.String, messageInfo.Title);
            cmdParams.AddInParameter("@Content", DbType.String, messageInfo.Content);
            cmdParams.AddInParameter("@Sender", DbType.String, messageInfo.Sender);
            cmdParams.AddInParameter("@Incept", DbType.String, messageInfo.Incept);
            cmdParams.AddInParameter("@SendTime", DbType.DateTime, messageInfo.SendTime);
            cmdParams.AddInParameter("@IsSend", DbType.Int32, messageInfo.IsSend);
            cmdParams.AddInParameter("@IsRead", DbType.Int32, messageInfo.IsRead);
            cmdParams.AddInParameter("@MessageId", DbType.Int32, messageInfo.MessageId);
            return DBHelper.ExecuteSql("Update PE_Message set Title=@Title,Content=@Content,Sender=@Sender,Incept=@Incept,SendTime=@SendTime,IsSend=@IsSend,IsRead=@IsRead where MessageId=@MessageId", cmdParams);
        }

        public bool UpdateState(int messageId)
        {
            return DBHelper.ExecuteSql("Update PE_Message Set IsRead=1 where MessageID=@MessageId", new Parameters("@MessageId", DbType.Int32, messageId));
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -