public override void ExecuteCmdlet()

in src/PowerShell/Commands/GetPartnerInvoiceLineItem.cs [58:116]


        public override void ExecuteCmdlet()
        {
            Scheduler.RunTask(async () =>
            {
                IPartner partner = await PartnerSession.Instance.ClientFactory.CreatePartnerOperationsAsync().ConfigureAwait(false);
                IResourceCollectionEnumerator<ResourceCollection<InvoiceLineItem>> enumerator;
                List<InvoiceLineItem> items;
                ResourceCollection<InvoiceLineItem> lineItems;

                if (BillingProvider == BillingProvider.OneTime || BillingProvider == BillingProvider.Marketplace)
                {
                    lineItems = await partner.Invoices[InvoiceId].By(BillingProvider, LineItemType, CurrencyCode, BillingPeriod.Current).GetAsync(CancellationToken).ConfigureAwait(false);
                }
                else
                {
                    lineItems = await partner.Invoices[InvoiceId].By(BillingProvider, LineItemType).GetAsync(CancellationToken).ConfigureAwait(false);
                }

                enumerator = partner.Enumerators.InvoiceLineItems.Create(lineItems);
                items = new List<InvoiceLineItem>();

                while (enumerator.HasValue)
                {
                    items.AddRange(enumerator.Current.Items);
                    await enumerator.NextAsync(RequestContextFactory.Create(CorrelationId), CancellationToken).ConfigureAwait(false);
                }

                if (LineItemType == InvoiceLineItemType.BillingLineItems)
                {
                    if (BillingProvider == BillingProvider.Azure)
                    {
                        WriteObject(items.Select(i => new PSUsageBasedLineItem((UsageBasedLineItem)i)), true);
                    }
                    else if (BillingProvider == BillingProvider.Office)
                    {
                        WriteObject(items.Select(i => new PSLicenseBasedLineItem((LicenseBasedLineItem)i)), true);
                    }
                    else if (BillingProvider == BillingProvider.OneTime)
                    {
                        WriteObject(items.Select(i => new PSOneTimeInvoiceLineItem((OneTimeInvoiceLineItem)i)), true);
                    }
                    else if (BillingProvider == BillingProvider.Marketplace)
                    {
                        WriteObject(items.Select(i => new PSDailyRatedUsageLineItem((DailyRatedUsageLineItem)i)), true);
                    }
                }
                else
                {
                    if (BillingProvider == BillingProvider.Azure)
                    {
                        WriteObject(items.Select(i => new PSDailyUsageLineItem((DailyUsageLineItem)i)), true);
                    }
                    else
                    {
                        WriteObject(items.Select(i => new PSDailyRatedUsageLineItem((DailyRatedUsageLineItem)i)), true);
                    }
                }
            }, true);
        }