public async Task Handle(TankRefueled @event)
        {
            logger.LogDebug($"Tank refueled event received. Id: {@event.Id}");

            var petrolStation = await repository.GetAsync(callContext.PetrolStationId.Value);

            petrolStation.Time = @event.TimeStamp;

            var tank = petrolStation.Tanks.SingleOrDefault(x => x.Id == @event.Id);

            var report = factory.CreateReportForTankRefused(@event);

            if (petrolStation.Reports == null)
            {
                petrolStation.Reports = new List <PetrolStationReport>();
            }

            petrolStation.Reports.Add(report);

            tank.CurrentVolume = @event.CurrentPetrolVolume;

            await repository.UpdateAsync(petrolStation);

            await hub.Clients.All.SendAsync("StationUpdate", petrolStation.Id);

            logger.LogDebug($"Tank refueled event received handling ended.");
        }
Example #2
0
 public PetrolStationReport CreateReportForTankRefused(TankRefueled @event)
 {
     return(new PetrolStationReport()
     {
         TankId = @event.Id,
         NozzleId = null,
         TimeStamp = @event.TimeStamp,
         Report = $"Tank refueled. Current petrol volume: {@event.CurrentPetrolVolume}. Arrived petrol amount: {@event.ArrivedPetrolAmount}. Leaked petrol amount: {@event.LeakedPetrolAmount}. Stolen petrol amount {@event.StolenPetrolAmount}",
         Status = ReportStatus.TankRefueled
     });
 }