public async Task <ICataloguePrice> Handle(GetPriceByPriceIdQuery request, CancellationToken cancellationToken) { var price = await pricingReader.GetByPriceIdAsync(request.PriceId, cancellationToken); ICataloguePrice cataloguePrice = price switch { CataloguePriceFlat cataloguePriceFlat => new FlatCataloguePriceDto { CataloguePriceId = price.CataloguePriceId, CatalogueItemName = price.CatalogueItemName, CatalogueItemId = price.CatalogueItemId, Type = price.CataloguePriceType.Name, ProvisioningType = price.ProvisioningType.Name, CurrencyCode = price.CurrencyCode, PricingUnit = mapper.Map <IPricingUnit>(price.PricingUnit), TimeUnit = mapper.Map <ITimeUnit>(price.TimeUnit), Price = cataloguePriceFlat.Price, }, CataloguePriceTier cataloguePriceTier => new TieredCataloguePriceDto { CatalogueItemId = price.CatalogueItemId, CatalogueItemName = price.CatalogueItemName, CataloguePriceId = price.CataloguePriceId, Type = price.CataloguePriceType.Name, ProvisioningType = price.ProvisioningType.Name, CurrencyCode = price.CurrencyCode, PricingUnit = mapper.Map <IPricingUnit>(price.PricingUnit), TimeUnit = mapper.Map <ITimeUnit>(price.TimeUnit), TieredPrices = mapper.Map <IEnumerable <ITieredPrice> >(cataloguePriceTier.TieredPrices), }, _ => null, }; return(cataloguePrice); }
private static CataloguePriceFlat GetFlatPrice(ICataloguePriceListResult price) { var flatPrice = new CataloguePriceFlat { CataloguePriceId = price.CataloguePriceId, CatalogueItemName = price.CatalogueItemName, CatalogueItemId = price.CatalogueItemId, PricingUnit = new PricingUnit { Description = price.PricingUnitDescription, Name = price.PricingUnitName, TierName = price.PricingUnitTierName }, TimeUnit = price.TimeUnitId == 0 ? null : Enumerator.FromValue <TimeUnit>(price.TimeUnitId), CurrencyCode = price.CurrencyCode, Price = price.FlatPrice.GetValueOrDefault(), ProvisioningType = Enumerator.FromValue <ProvisioningType>(price.ProvisioningTypeId) }; return(flatPrice); }