📄 message.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 + -