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);
        }