CardBoard: BusinessLogic and entities.

This commit is contained in:
2015-06-13 17:14:40 +02:00
parent e6c579051f
commit 4261b13410
4 changed files with 350 additions and 0 deletions

View File

@@ -0,0 +1,249 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Scrummer.Code.Entities;
namespace Scrummer.Code.BusinessLogic
{
public class CardBoard
{
#region Declarations
private List<Card> _cards = new List<Card>();
private int _lastIDCard = 0;
private List<ICardEvent> _cardEvents = new List<ICardEvent>();
private int _lastIDCardEvent = 0;
private int _idBoard = 0;
#endregion
#region Life cycle
public CardBoard(int idBoard)
{
_idBoard = idBoard;
LoadData();
}
#endregion
#region Public methods
public List<Card> Cards_Status()
{
return _cards;
}
public List<ICardEvent> Cards_GetEventList(int idCardEvent)
{
List<ICardEvent> listEvents = new List<ICardEvent>();
for (int i = 0, n = _cardEvents.Count; i < n; i++)
{
ICardEvent cardEvent = _cardEvents[i];
if (cardEvent.IDCardEvent > idCardEvent)
{
listEvents.Insert(0, cardEvent);
}
else { break; }
}
return listEvents;
}
public int GetLastIDCardEvent()
{
return _lastIDCardEvent;
}
public int GetLastIDCard()
{
return _lastIDCard;
}
public int Card_Create(string title, string body, int x, int y)
{
Card card;
lock (_cards)
{
// Create card
_lastIDCard++;
card = new Card()
{
IDCard = _lastIDCard,
Title = title,
Body = body,
X = x,
Y = y,
};
_cards.Add(card);
// Create event
_lastIDCardEvent++;
CardCreateEvent cardCreateEvent = new CardCreateEvent()
{
IDCardEvent = _lastIDCardEvent,
IDCard = card.IDCard,
Title = card.Title,
Body = card.Body,
X = card.X,
Y = card.Y,
};
_cardEvents.Insert(0, cardCreateEvent);
SaveData();
}
return card.IDCard;
}
public bool Card_Move(int idCard, int x, int y)
{
lock (_cards)
{
// Move card
Card card = GetByID(idCard);
if (card == null) { return false; }
card.X = x;
card.Y = y;
// Create event
_lastIDCardEvent++;
CardMoveEvent cardMoveEvent = new CardMoveEvent()
{
IDCardEvent = _lastIDCardEvent,
IDCard = card.IDCard,
X = card.X,
Y = card.Y,
};
_cardEvents.Insert(0, cardMoveEvent);
SaveData();
}
return true;
}
public bool Card_Edit(int idCard, string title, string body)
{
lock (_cards)
{
// Edit card
Card card = GetByID(idCard);
if (card == null) { return false; }
card.Title = title;
card.Body = body;
// Create event
_lastIDCardEvent++;
CardEditEvent cardEditEvent = new CardEditEvent()
{
IDCardEvent = _lastIDCardEvent,
IDCard = card.IDCard,
Title = card.Title,
Body = card.Body,
};
_cardEvents.Insert(0, cardEditEvent);
SaveData();
}
return true;
}
public bool Card_Delete(int idCard)
{
lock (_cards)
{
// Delete card
Card card = GetByID(idCard);
if (card == null) { return false; }
_cards.Remove(card);
// Create event
_lastIDCardEvent++;
CardDeleteEvent cardDeleteEvent = new CardDeleteEvent()
{
IDCardEvent = _lastIDCardEvent,
IDCard = card.IDCard,
};
_cardEvents.Insert(0, cardDeleteEvent);
SaveData();
}
return true;
}
public static List<ICardEvent> ConvertCardsToEvents(List<Card> listCards, int lastIDCardEvent)
{
List<ICardEvent> listEvents = new List<ICardEvent>();
foreach (Card card in listCards)
{
var evt = new CardCreateEvent()
{
IDCardEvent = lastIDCardEvent,
IDCard = card.IDCard,
Title = card.Title,
Body = card.Body,
X = card.X,
Y = card.Y,
};
listEvents.Add(evt);
}
return listEvents;
}
#endregion
#region Private methods
private Card GetByID(int idCard)
{
foreach (Card card in _cards)
{
if (card.IDCard == idCard)
{
return card;
}
}
return null;
}
#region Persistence
private const string CardsPersistenceFile = "priv/cardBoard.{0}.json";
private const string EventsPersistenceFile = "priv/cardEvents.{0}.json";
private void LoadData()
{
_cards = Persistence.LoadList<Card>(String.Format(CardsPersistenceFile, _idBoard));
_lastIDCard = 0;
if (_cards.Count > 0)
{
_lastIDCard = _cards[0].IDCard;
}
_cardEvents = Persistence.LoadList<ICardEvent>(String.Format(EventsPersistenceFile, _idBoard),
new List<Type> {
typeof(CardCreateEvent),
typeof(CardMoveEvent),
typeof(CardEditEvent),
typeof(CardDeleteEvent),
});
_lastIDCardEvent = 0;
if (_cardEvents.Count > 0)
{
_lastIDCardEvent = _cardEvents[0].IDCardEvent;
}
}
private void SaveData()
{
Persistence.SaveList(String.Format(CardsPersistenceFile, _idBoard), _cards);
Persistence.SaveList(String.Format(EventsPersistenceFile, _idBoard), _cardEvents);
}
#endregion
#endregion
}
}

View File

@@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Scrummer.Code.Entities
{
public class Card
{
public int IDCard { get; set; }
public string Title { get; set; }
public string Body { get; set; }
public int X { get; set; }
public int Y { get; set; }
}
}

View File

@@ -0,0 +1,80 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Scrummer.Code.Entities
{
public interface ICardEvent
{
int IDCardEvent { get; set; }
string EventType { get; set; }
int IDCard { get; set; }
string UserName { get; set; }
}
public class CardCreateEvent : ICardEvent
{
#region ICardEvent
public int IDCardEvent { get; set; }
private string _eventType="CardCreate";
public string EventType { get { return _eventType; } set { _eventType = value; } }
public int IDCard { get; set; }
public string UserName { get; set; }
#endregion
public string Title { get; set; }
public string Body { get; set; }
public int X { get; set; }
public int Y { get; set; }
}
public class CardMoveEvent : ICardEvent
{
#region ICardEvent
public int IDCardEvent { get; set; }
private string _eventType = "CardMove";
public string EventType { get { return _eventType; } set { _eventType = value; } }
public int IDCard { get; set; }
public string UserName { get; set; }
#endregion
public int X { get; set; }
public int Y { get; set; }
}
public class CardEditEvent : ICardEvent
{
#region ICardEvent
public int IDCardEvent { get; set; }
private string _eventType = "CardEdit";
public string EventType { get { return _eventType; } set { _eventType = value; } }
public int IDCard { get; set; }
public string UserName { get; set; }
#endregion
public string Title { get; set; }
public string Body { get; set; }
}
public class CardDeleteEvent : ICardEvent
{
#region ICardEvent
public int IDCardEvent { get; set; }
private string _eventType = "CardDelete";
public string EventType { get { return _eventType; } set { _eventType = value; } }
public int IDCard { get; set; }
public string UserName { get; set; }
#endregion
}
}

View File

@@ -66,10 +66,13 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Code\Bundler.cs" />
<Compile Include="Code\BusinessLogic\CardBoard.cs" />
<Compile Include="Code\BusinessLogic\MessageBoard.cs" />
<Compile Include="Code\BusinessLogic\Persistence.cs" />
<Compile Include="Code\BusinessLogic\Sessions.cs" />
<Compile Include="Code\BusinessLogic\Users.cs" />
<Compile Include="Code\Entities\Card.cs" />
<Compile Include="Code\Entities\CardEvents.cs" />
<Compile Include="Controls\CButton.cs" />
<Compile Include="Controls\ChatControl.cs" />
<Compile Include="Controls\ChatHandler.cs" />