public bool Handle(DomainEventHandlerData <DeleteSoldierEvent> data) { CastleAggregate snapshot = data.Snapshot as CastleAggregate; if (snapshot != null) { Debug.WriteLine("Soldier deleted!"); --snapshot.SoldiersAmount; List <SoldierAggregate> soldiers = snapshot.Soldiers; SoldierAggregate soldierAggregate1; if (soldiers == null) { soldierAggregate1 = null; } else { Func <SoldierAggregate, bool> predicate = e => e.Id == data.EventObject.SoldierId; soldierAggregate1 = soldiers.FirstOrDefault <SoldierAggregate>(predicate); } SoldierAggregate soldierAggregate2 = soldierAggregate1; if (soldierAggregate2 != null) { soldierAggregate2.IsDead = true; } } return(true); }
public bool Handle(DomainEventHandlerData <CreateSoldierEvent> data) { GameAggregate snapshot = data.Snapshot as GameAggregate; if (snapshot == null) { return(false); } if (data.EventObject.Army == Army.Blue) { if (snapshot.UserSoldiers == null) { snapshot.UserSoldiers = new List <SoldierAggregate>(); } ++snapshot.UserSoldiersAmount; } else { if (snapshot.OpponentSoldiers == null) { snapshot.OpponentSoldiers = new List <SoldierAggregate>(); } ++snapshot.OpponentSoldierAmount; } SoldierAggregate soldierAggregate = new SoldierAggregate { Id = Guid.NewGuid() }; var castleTroopType = snapshot.GetTroopTypeData(data.EventObject.Army, data.EventObject.TroopType); if (castleTroopType != null) { soldierAggregate.CastleTroopType = castleTroopType; if (data.EventObject.Army == Army.Blue) { snapshot.UserSoldiers.Add(soldierAggregate); } else { snapshot.OpponentSoldiers.Add(soldierAggregate); } } _gameDomainService.CreateSoldierIfNeed(snapshot, data.EventObject.Army); return(true); }