private async Task InitializeGasPumps(Request request) { if (GasPumpsDataService.GasPumpsByStore != null) { return; } var gasScanInfo = new ScanInfo(); gasScanInfo.ScannedText = GetGasolineItemId(request); var getScanResultRequest = new GetScanResultRequest(gasScanInfo); var response = await request.RequestContext.Runtime.ExecuteAsync <GetScanResultResponse>(getScanResultRequest, request.RequestContext); if (response.Result.MaskType == BarcodeMaskType.Item) { GasPumpsDataService.COST_PER_UNIT = response.Result.Product.BasePrice; } var orgUnits = await GetAllOrgUnitsAsync(request); GasPumpsByStore = new Dictionary <string, IEnumerable <GasPump> >(); var itemId = GetGasolineItemId(request); if (orgUnits.Any()) { foreach (var orgUnit in orgUnits) { var gasPumps = CreateGasPumps(orgUnit); GasPumpsByStore.Add(orgUnit.OrgUnitNumber, gasPumps); var stationDetails = new GasStationDetails(orgUnit.OrgUnitNumber, itemId); stationDetails.GasPumpCount = gasPumps.Count; var daysSinceDelivery = (orgUnit.RecordId % 6) + 1; stationDetails.LastGasDeliveryTime = DateTimeOffset.UtcNow.AddDays(daysSinceDelivery * -1); var calculatedTime = DateTimeOffset.UtcNow.AddDays(7 - daysSinceDelivery).AddHours(orgUnit.RecordId % 8).AddMinutes(orgUnit.RecordId % 60); stationDetails.NextGasDeliveryTime = new DateTimeOffset(calculatedTime.Year, calculatedTime.Month, calculatedTime.Day, calculatedTime.Hour, 0, 0, calculatedTime.Offset); stationDetails.GasTankCapacity = stationDetails.GasPumpCount * 1000; stationDetails.GasTankLevel = stationDetails.GasTankCapacity - (stationDetails.GasTankCapacity / 10 * daysSinceDelivery); stationDetails.GasBasePrice = GasPumpsDataService.COST_PER_UNIT; GasStations.Add(stationDetails); } } }
public GetGasStationDetailsDataResponse(GasStationDetails details) { this.Details = details; }