public IEnumerable <IResult> ConsumptionReport() { var commnand = new ConsumptionReport(Waybill); yield return(new Models.Results.TaskResult(commnand.ToTask(Shell.Config))); yield return(new OpenResult(commnand.Result)); }
private async Task <bool> CheckCounters(IStreamBatchingTestConsumerGrain consumer, int expectedConsumed, int minBatchSize, bool assertIsTrue) { ConsumptionReport report = await consumer.GetConsumptionReport(); this.output.WriteLine($"Report - Consumed: {report.Consumed}, MaxBatchSize: {report.MaxBatchSize}"); if (assertIsTrue) { Assert.Equal(expectedConsumed, report.Consumed); Assert.True(report.MaxBatchSize >= minBatchSize); return(true); } else { return(report.Consumed == expectedConsumed && report.MaxBatchSize >= minBatchSize); } }
public async Task consumption_report_returns_ok_when_valid_input() { var duration = "24h"; _mockRepo.Setup(repo => repo.GetByCutOffDateAsync(It.IsAny <DateTime>())) .Returns(Task.FromResult(GetByCutOffDateAsync())); var controller = new ConsumptionReportController(_mockRepo.Object); var expectedResultObject = new ConsumptionReport(new List <ConsumptionPerVillage>(2) { new ConsumptionPerVillage("Villarriba", 10000.123f), new ConsumptionPerVillage("Villabajo", 20000.246f) }); var result = await controller.consumption_report(duration); var content = ((OkObjectResult)result).Value; result.Should().BeOfType <OkObjectResult>(); content.ShouldBeEquivalentTo(expectedResultObject); }
public async Task <ActionResult> consumption_report(string duration) { var timeInterval = new ConsumptionTimeInterval(duration); if (!timeInterval.IsValid) { return(BadRequest("The time interval supplied is invalid")); } var cutOffDate = GetCutOffDateByTimeInterval(DateTime.Now, timeInterval); var consumptionCounterFilteredByDate = await _repository.GetByCutOffDateAsync(cutOffDate); var consumptionPerVillage = consumptionCounterFilteredByDate .GroupBy(a => a.VillageName) .Select(x => new ConsumptionPerVillage(x.Key, x.Sum(y => y.Amount))); var result = new ConsumptionReport(consumptionPerVillage); return(Ok(result)); }
public void Handle(CalculateFuelConsumption command) { commandValidator.Validate(command); if (!unitOfWork.Context.Vehicle.Any(v => v.Id == command.VehicleId)) { throw new VehicleNotFoundException(command.VehicleId); } if (!unitOfWork.Context.User.Any(u => u.Id == command.UserId)) { throw new UserNotFoundException(command.UserId); } var unitsSettings = unitOfWork.Context.UserSettings.Single(s => s.UserId == command.UserId); if (unitsSettings == null) { throw new UserSettingsNotFoundException(command.UserId); } var report = new ConsumptionReport() { Id = command.Id, VehicleId = command.VehicleId, Distance = command.Distance, FuelBurned = command.FuelBurned, DateCreated = DateTime.Now, PricePerUnit = command.PricePerUnit, LastChanged = DateTime.Now }; switch (unitsSettings.Units) { case Units.Imperial: report.Units = Units.Imperial; report.FuelEfficiency = command.Distance / command.FuelBurned; break; case Units.Metric: report.Units = Units.Metric; report.FuelEfficiency = (command.FuelBurned * 100) / command.Distance; break; default: throw new NotImplementedException(); } var fuelSummary = unitOfWork.Context.FuelSummary.SingleOrDefault(f => f.VehicleId == command.VehicleId); if (fuelSummary == null) { fuelSummary = new FuelSummary() { Id = Guid.NewGuid() }; fuelSummary.DistanceDriven = report.Distance; fuelSummary.FuelBurned = report.FuelBurned; fuelSummary.MoneySpent = report.PricePerUnit * report.FuelBurned; fuelSummary.ReportsNumber = 1; fuelSummary.VehicleId = command.VehicleId; fuelSummary.AverageConsumption = report.FuelEfficiency; fuelSummary.Units = report.Units; switch (fuelSummary.Units) { case Units.Metric: fuelSummary.AverageConsumption = (fuelSummary.FuelBurned * 100) / fuelSummary.DistanceDriven; break; case Units.Imperial: fuelSummary.AverageConsumption = fuelSummary.DistanceDriven / fuelSummary.FuelBurned; break; } unitOfWork.Context.FuelSummary.Add(fuelSummary); } else { fuelSummary.ReportsNumber++; fuelSummary.DistanceDriven += report.Distance; fuelSummary.FuelBurned += report.FuelBurned; fuelSummary.MoneySpent += report.PricePerUnit * report.FuelBurned; switch (unitsSettings.Units) { case Units.Imperial: fuelSummary.Units = Units.Imperial; fuelSummary.AverageConsumption = fuelSummary.DistanceDriven / fuelSummary.FuelBurned; break; case Units.Metric: report.Units = Units.Metric; report.FuelEfficiency = (fuelSummary.FuelBurned * 100) / fuelSummary.DistanceDriven; break; default: throw new NotImplementedException(); } unitOfWork.Context.Entry(fuelSummary).State = Microsoft.EntityFrameworkCore.EntityState.Modified; } unitOfWork.Context.ConsumptionReport.Add(report); }