private BoardEditedEvent CreateBoardEditedEvent(BoardHistoryEvent boardEvent)
		{
			return new BoardEditedEvent(boardEvent.EventDateTime, boardEvent.Message);
		}
		private CardMoveEvent CreateCardMoveEvent(BoardHistoryEvent boardEvent, IEnumerable<Lane> affectedLanes)
		{
			try
			{
				// Is the card being moved in or to a taskboard?
				if (!_board.AllLanes().ContainsLane(boardEvent.ToLaneId) && !_includeTaskboards)
					return null;

				var fromLaneId = boardEvent.FromLaneId.GetValueOrDefault();
				var toLaneId = boardEvent.ToLaneId;
				var lanes = affectedLanes as IList<Lane> ?? affectedLanes.ToList();

				var fromLane = _board.AllLanes().ContainsLane(fromLaneId)
					? _board.AllLanes().FindLane(fromLaneId)
					: null;

				Lane toLane = null;
				CardView affectedCardView = null;
				if (lanes.ContainsLane(toLaneId))
				{
					toLane = lanes.FindLane(toLaneId);
					affectedCardView = toLane.Cards.FirstOrDefault(aCard => aCard.Id == boardEvent.CardId);
				}
				else if (_board.Archive.ContainsLane(toLaneId))
				{
					toLane = _board.Archive.FindLane(toLaneId);
					affectedCardView = GetCard(boardEvent.CardId).ToCardView();
				}

				// If fromLane or toLane are null, then the card is probably on a taskboard
				if (affectedCardView == null || (toLane == null && !_includeTaskboards)) return null;

				var card = affectedCardView.ToCard();
				return new CardMoveEvent(boardEvent.EventDateTime, fromLane, toLane, card);
			}
			catch (ItemNotFoundException ex)
			{
				throw new ItemNotFoundException(
					string.Format(
						"Unable to create Card Move Event for board [{0}], card [{1}], from lane [{2}] and to lane [{3}]. {4}", _boardId,
						boardEvent.CardId, boardEvent.FromLaneId.GetValueOrDefault(), boardEvent.ToLaneId, ex.Message));
			}
		}
		private CardUpdateEvent CreateCardUpdateEvent(BoardHistoryEvent boardEvent, IEnumerable<Lane> affectedLanes)
		{
			try
			{
				// Is the card being updated on a taskboard?
				if (!_board.AllLanes().ContainsLane(boardEvent.ToLaneId) && !_includeTaskboards)
					return null;

				var originalCard = _board.GetCardById(boardEvent.CardId);

				if (originalCard == null)
					return null;

				var lanes = affectedLanes.ToList();

				var updatedCard = (lanes.ContainsCard(boardEvent.CardId))
					? lanes.FindContainedCard(boardEvent.ToLaneId, boardEvent.CardId)
					: GetCard(boardEvent.CardId, true);

				return new CardUpdateEvent(boardEvent.EventDateTime, originalCard, updatedCard);
			}
			catch (ItemNotFoundException ex)
			{
				throw new ItemNotFoundException(
					string.Format("Unable to create Card Update Event for board [{0}], card [{1}], and to lane [{2}]. {3}", _boardId,
						boardEvent.CardId, boardEvent.ToLaneId, ex.Message));
			}
		}
		private CardMoveFromBoardEvent CreateCardMoveFromBoardEvent(BoardHistoryEvent boardEvent)
		{
			return new CardMoveFromBoardEvent(boardEvent.EventDateTime, boardEvent.CardId, boardEvent.FromLaneId);
		}
		private CardDeletedEvent CreateCardDeletedEvent(BoardHistoryEvent boardEvent)
		{
			// Is the card being deleted from a taskboard?
			if (!_includeTaskboards && !_board.AllLanes().ContainsLane(boardEvent.ToLaneId))
				return null;

			var card = (_board.AllLanes().ContainsLane(boardEvent.ToLaneId))
				? _board.AllLanes().FindContainedCard(boardEvent.ToLaneId, boardEvent.CardId)
				: GetCard(boardEvent.CardId);

			return new CardDeletedEvent(boardEvent.EventDateTime, card);
		}
		private UserWipOverrideEvent CreateUserWipOverrideEvent(BoardHistoryEvent boardEvent)
		{
			try
			{
				User affectedUser = _board.BoardUsers.FindUser(boardEvent.WipOverrideUser);
				return new UserWipOverrideEvent(boardEvent.EventDateTime, boardEvent.WipOverrideComment, affectedUser);
			}
			catch (ItemNotFoundException)
			{
				throw new ItemNotFoundException(
					string.Format("Unable to create User Wip Override Event for board [{0}] and user [{1}]", _boardId,
						boardEvent.WipOverrideUser));
			}
		}
		private AttachmentChangedEvent CreateAttachmentEvent(BoardHistoryEvent boardEvent)
		{
			// Is the card on a taskboard?
			if (!_board.AllLanes().ContainsLane(boardEvent.ToLaneId) && !_includeTaskboards)
				return null;

			var card = _board.AllLanes().FindContainedCard(boardEvent.ToLaneId, boardEvent.CardId);
			return new AttachmentChangedEvent(boardEvent.EventDateTime, card, boardEvent.FileName, boardEvent.CommentText,
				boardEvent.IsFileBeingDeleted);
		}
		private WipOverrideEvent CreateWipOverrideEvent(BoardHistoryEvent boardEvent, IEnumerable<Lane> affectedLanes)
		{
			try
			{
				Lane affectedLane = affectedLanes.FindLane(boardEvent.WipOverrideLane);
				return new WipOverrideEvent(boardEvent.EventDateTime, boardEvent.WipOverrideComment, affectedLane);
			}
			catch (ItemNotFoundException ex)
			{
				throw new ItemNotFoundException(
					string.Format("Unable to create Wip Override Event for board [{0}] and lane [{1}]. {2}", _boardId,
						boardEvent.WipOverrideLane, ex.Message));
			}
		}
		private CommentPostedEvent CreateCommentPostedEvent(BoardHistoryEvent boardEvent)
		{
			//since no info in affectedLanes getting card from board
			Card affectedCard = _board.GetCardById(boardEvent.CardId);
			return new CommentPostedEvent(boardEvent.EventDateTime, affectedCard, boardEvent.CommentText);
		}
		private CardUserUnAssignmentEvent CreateCardUserUnAssignmentEvent(BoardHistoryEvent boardEvent,
			IEnumerable<Lane> affectedLanes)
		{
			// Is the card on a taskboard?
			if (!_includeTaskboards && !_board.AllLanes().ContainsLane(boardEvent.ToLaneId))
				return null;

			try
			{
				var card = affectedLanes.FindContainedCard(boardEvent.ToLaneId, boardEvent.CardId);
				var unAssignedUser = _board.BoardUsers.FindUser(boardEvent.AssignedUserId);

				return new CardUserUnAssignmentEvent(boardEvent.EventDateTime, card, unAssignedUser);
			}
			catch (ItemNotFoundException ex)
			{
				throw new ItemNotFoundException(
					string.Format(
						"Unable to create Card User Unassignment Event for board [{0}], lane [{1}], card [{2}], and user [{3}]. User count: {4}. {5}",
						_boardId, boardEvent.ToLaneId, boardEvent.CardId, boardEvent.AssignedUserId, _board.BoardUsers.Count(), ex.Message));
			}
		}
		private static CardUnBlockedEvent CreateCardUnBlockedEvent(BoardHistoryEvent boardEvent,
			IEnumerable<Lane> affectedLanes)
		{
			//Get the effected lanes from the original board
			var card = affectedLanes.FindContainedCard(boardEvent.ToLaneId, boardEvent.CardId);

			return new CardUnBlockedEvent(boardEvent.EventDateTime, card, boardEvent.BlockedComment);
		}
Exemplo n.º 12
0
		private UserWipOverrideEvent CreateUserWipOverrideEvent(BoardHistoryEvent boardEvent)
		{
			try
			{
				var affectedUser = _board.BoardUsers.FindUser(boardEvent.WipOverrideUser);
				return new UserWipOverrideEvent(boardEvent.EventDateTime, boardEvent.WipOverrideComment, affectedUser);
			}
			catch (ItemNotFoundException)
			{
				// Might be a recently added user, try refreshing board
				InitBoard();

				try
				{
					var affectedUser = _board.BoardUsers.FindUser(boardEvent.WipOverrideUser);
					return new UserWipOverrideEvent(boardEvent.EventDateTime, boardEvent.WipOverrideComment, affectedUser);
				}
				catch (ItemNotFoundException)
				{
					throw new ItemNotFoundException(
						string.Format("Unable to create User Wip Override Event for board [{0}] and user [{1}]", _boardId,
							boardEvent.WipOverrideUser));
				}
			}
		}