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);
        }
Beispiel #2
0
        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);
        }