public async Task Handle(PetrolStationCreated @event) { logger.LogDebug($"Petrol station created event received. Id: {@event.Id}, Name: {@event.Name}"); var petrolStation = await repository.FindAsync(@event.Id); if (petrolStation != null) { return; } var tanks = new List <Tank>(); foreach (var item in @event.Tanks) { var nozzles = @event.Nozzles?.Where(x => x.TankId == item.Id).Select(x => new Nozzle { Id = x.Id, LastStolenPetrolAmount = x.LastStolenPetrolAmount, LastTransactionVolume = x.LastTransactionVolume, TotalPetrolAmount = 0, TotalStolenPetrolAmount = x.TotalStolenPetrolAmount }); var tank = new Tank { Id = item.Id, CurrentVolume = item.CurrentVolume, MaximumVolume = item.MaximumVolume, PetrolTemperature = item.PetrolTemperature, TankHigh = item.TankHigh, Nozzles = nozzles.ToList() }; tanks.Add(tank); } petrolStation = new Entities.PetrolStation() { Id = @event.Id, Name = @event.Name, Tanks = tanks.ToList() }; await repository.AddAsync(petrolStation); await hub.Clients.All.SendAsync("NewStation"); logger.LogDebug($"Petrol station created event received handling ended."); }
public Entities.PetrolStation Create() { var tanks = Enumerable.Range(0, TANKS_COUNT).Select(x => new Tank(Guid.NewGuid(), MAX_TANK_VOLUME, MAX_TANK_VOLUME, 15, TANK_HIGH, null)).ToList(); var nozzles = new List <Nozzle>(); foreach (var tank in tanks) { nozzles.AddRange(Enumerable.Range(0, NOZZLES_COUNT_PER_TANK).Select(x => new Nozzle(Guid.NewGuid(), tank.Id, 0d, 0d, 0d, 0d)).ToList()); } var petrolStation = new Entities.PetrolStation(globalSettings.ServiceId, globalSettings.ServiceName, tanks.ToList(), nozzles, DateTime.UtcNow); petrolStation.Created(); return(petrolStation); }