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."); }
private async Task <Entities.PetrolStation> CreateStationIfDoesNotExist() { var petrolStation = await repository.FindAsync(globalSettings.Value.ServiceId); if (petrolStation != null) { return(petrolStation); } petrolStation = petrolStationFactory.Create(); await repository.AddAsync(petrolStation); await SendEvents(petrolStation); return(petrolStation); }