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);
}