MessageBoard: Add persistence to chat messages.
This commit is contained in:
@@ -6,8 +6,26 @@ namespace Scrummer.Code.BusinessLogic
|
||||
{
|
||||
public class MessageBoard
|
||||
{
|
||||
#region Declarations
|
||||
|
||||
private List<Message> _messages = new List<Message>();
|
||||
private int lastIDMessage = 0;
|
||||
private int _lastIDMessage = 0;
|
||||
|
||||
private int _idBoard = 0;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Life cycle
|
||||
|
||||
public MessageBoard(int idBoard)
|
||||
{
|
||||
_idBoard = idBoard;
|
||||
LoadData();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Public methods
|
||||
|
||||
public List<Message> Messages_GetList(int idMessage)
|
||||
{
|
||||
@@ -19,24 +37,53 @@ namespace Scrummer.Code.BusinessLogic
|
||||
{
|
||||
listMessages.Insert(0, msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
else { break; }
|
||||
}
|
||||
return listMessages;
|
||||
}
|
||||
|
||||
public void Message_Add(string userName, string text)
|
||||
{
|
||||
lastIDMessage++;
|
||||
Message msg = new Message();
|
||||
msg.IDMessage = lastIDMessage;
|
||||
msg.UserName = userName;
|
||||
msg.Text = text;
|
||||
msg.Date = DateTime.UtcNow;
|
||||
_messages.Insert(0, msg);
|
||||
lock (_messages)
|
||||
{
|
||||
_lastIDMessage++;
|
||||
Message msg = new Message();
|
||||
msg.IDMessage = _lastIDMessage;
|
||||
msg.UserName = userName;
|
||||
msg.Text = text;
|
||||
msg.Date = DateTime.UtcNow;
|
||||
_messages.Insert(0, msg);
|
||||
SaveData();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Private methods
|
||||
|
||||
#region Persistence
|
||||
|
||||
private const string PersistenceFile = "priv/messageBoard.{0}.json";
|
||||
|
||||
private void LoadData()
|
||||
{
|
||||
_messages = Persistence.LoadList<Message>(String.Format(PersistenceFile, _idBoard));
|
||||
_lastIDMessage = 0;
|
||||
if (_messages.Count > 0)
|
||||
{
|
||||
_lastIDMessage = _messages[0].IDMessage;
|
||||
}
|
||||
}
|
||||
|
||||
private void SaveData()
|
||||
{
|
||||
Persistence.SaveList(String.Format(PersistenceFile, _idBoard), _messages);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -51,6 +51,18 @@ namespace Scrummer.Code
|
||||
bool mustWait = (timePoolData > 0);
|
||||
do
|
||||
{
|
||||
if (_chatBoards.ContainsKey(idBoard) == false)
|
||||
{
|
||||
lock (_chatBoards)
|
||||
{
|
||||
if (_chatBoards.ContainsKey(idBoard) == false)
|
||||
{
|
||||
messageBoard = new MessageBoard(idBoard);
|
||||
_chatBoards[idBoard] = messageBoard;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (_chatBoards.ContainsKey(idBoard))
|
||||
{
|
||||
messageBoard = _chatBoards[idBoard];
|
||||
@@ -86,7 +98,7 @@ namespace Scrummer.Code
|
||||
}
|
||||
else
|
||||
{
|
||||
messageBoard = new MessageBoard();
|
||||
messageBoard = new MessageBoard(idBoard);
|
||||
_chatBoards[idBoard] = messageBoard;
|
||||
}
|
||||
messageBoard.Message_Add(userName, text);
|
||||
|
||||
Reference in New Issue
Block a user