public void EndRace(Guid raceId, DateTime time) { var race = this._raceRepository.Get(raceId); race.EndRace(time); Parallel.ForEach(race.Events, (domainEvent) => { var sender = new DomainEventSender(); sender.Send(domainEvent); }); }
public void AddTeam( string name, Guid raceId, string chipId) { // TODO chipId must be in allowed in race var team = new Team(name, raceId, chipId); this._teamRepository.Create(team); Parallel.ForEach(team.Events, (domainEvent) => { var sender = new DomainEventSender(); sender.Send(domainEvent); }); }
public void LapCompleted(string chipId, DateTime time) { var activeTeam = this._activeTeamRepository.Find(chipId); var team = this._teamRepository.Get(activeTeam.TeamId); var laplength = team.LapCompleted(time); var sender = new DomainEventSender(); sender.Send(new LapCompleted { CompletedOn = time, LapLength = laplength, RaceId = team.RaceId, TeamId = team.Id, TeamName = team.Name }); }
private void FireTeamRaceFinishedEvents(Race race, DateTime raceFinished) { var teamLapStarted = new List <DomainEvent>(); foreach (var teamId in race.TeamIds) { teamLapStarted.Add( new TeamRaceFinished { Date = raceFinished.Date, TeamId = teamId }); } Parallel.ForEach(teamLapStarted, (domainEvent) => { var sender = new DomainEventSender(); sender.Send(domainEvent); }); }
static void Main(string[] args) { const bool UseMongo = true; const string DatabaseaName = "relayrace"; StatsPrinter.Configure(UseMongo); var container = new Container(x => x.IncludeRegistry( new CmdletRegistry( Connection.MongoDbConnectionString, Connection.SqlConnectionString, DatabaseaName, UseMongo))); var eventDispatcher = container.GetInstance <EventDispatcher>(); while (true) { var fetcher = new DomainEventFetcher(); var result = fetcher.Fetch(); if (result != null) { try { eventDispatcher.DispatchEvents(new List <DomainEvent> { result }); } catch (Exception e) { var sender = new DomainEventSender(); sender.Send(result); } } Thread.Sleep(200); } }