コード例 #1
0
        public IEnumerable <UsageBasedLineItem> GetSingleMonthData([FromUri] string monthYear)
        {
            UrlParameterValidation.ValidateMonthYearFormat(monthYear);
            try
            {
                int month = int.Parse(monthYear.Split('-')[0], CultureInfo.InvariantCulture);
                int year  = int.Parse(monthYear.Split('-')[1], CultureInfo.InvariantCulture);
                List <InvoiceLineItem> completeList = new List <InvoiceLineItem>();

                completeList = this.GetCompleteList(month, year, 0, 0);
                List <UsageBasedLineItem> dataToBeStored = new List <UsageBasedLineItem>();

                // extract properties
                foreach (InvoiceLineItem lineItem in completeList)
                {
                    UsageBasedLineItem lineItemWithBaseProperties = (UsageBasedLineItem)lineItem;
                    dataToBeStored.Add(lineItemWithBaseProperties);
                }

                return(dataToBeStored);
            }
            catch (Exception ex)
            {
                throw new CspBillingException(ex.Message, ex);
            }
        }
コード例 #2
0
        public IEnumerable <UsageBasedLineItem> GetDataForMonthRange([FromUri] string startMonthYear, [FromUri] string endMonthYear)
        {
            UrlParameterValidation.ValidateMonthYearFormat(startMonthYear);
            UrlParameterValidation.ValidateMonthYearFormat(endMonthYear);
            UrlParameterValidation.ValidateStartEndDate(startMonthYear, endMonthYear);
            try
            {
                int startMonth = int.Parse(startMonthYear.Split('-')[0], CultureInfo.InvariantCulture);
                int startYear  = int.Parse(startMonthYear.Split('-')[1], CultureInfo.InvariantCulture);
                int endMonth   = int.Parse(endMonthYear.Split('-')[0], CultureInfo.InvariantCulture);
                int endYear    = int.Parse(endMonthYear.Split('-')[1], CultureInfo.InvariantCulture);

                List <InvoiceLineItem> completeList = new List <InvoiceLineItem>();

                completeList = this.GetCompleteList(startMonth, startYear, endMonth, endYear);
                List <UsageBasedLineItem> dataToBeStored = new List <UsageBasedLineItem>();

                // extract properties
                foreach (InvoiceLineItem lineItem in completeList)
                {
                    UsageBasedLineItem lineItemWithBaseProperties = (UsageBasedLineItem)lineItem;
                    dataToBeStored.Add(lineItemWithBaseProperties);
                }

                return(dataToBeStored);
            }
            catch
            {
                throw;
            }
        }
コード例 #3
0
        /// <summary>
        /// Reads the JSON representation of the object.
        /// </summary>
        /// <param name="reader">The <see cref="JsonReader" /> to read from.</param>
        /// <param name="objectType">Type of the object.</param>
        /// <param name="existingValue">The existing value of object being read.</param>
        /// <param name="serializer">The calling serializer.</param>
        /// <returns>The object value.</returns>
        /// <exception cref="ArgumentNullException">
        /// reader
        /// or
        /// objectType
        /// </exception>
        /// <exception cref="JsonSerializationException">
        /// </exception>
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            BillingProvider billingProvider;
            JObject         json;
            string          billingProviderValue;
            string          invoiceLineItemType;
            InvoiceLineItem lineItem = null;

            json = JObject.Load(reader);

            billingProviderValue = json["billingProvider"].ToString();
            billingProvider      = JsonConvert.DeserializeObject <BillingProvider>($"'{billingProviderValue}'");

            invoiceLineItemType = json["invoiceLineItemType"].ToString();

            if (!invoiceLineItemType.Equals("usage_line_items", StringComparison.InvariantCultureIgnoreCase))
            {
                if (invoiceLineItemType.Equals("billing_line_items", StringComparison.InvariantCultureIgnoreCase))
                {
                    if (billingProvider == BillingProvider.Azure)
                    {
                        lineItem = new UsageBasedLineItem();
                    }
                    else if (billingProvider == BillingProvider.Office)
                    {
                        lineItem = new LicenseBasedLineItem();
                    }
                    else if (billingProvider == BillingProvider.OneTime)
                    {
                        lineItem = new OneTimeInvoiceLineItem();
                    }
                    else if (billingProvider == BillingProvider.All)
                    {
                        lineItem = new OneTimeInvoiceLineItem();
                    }
                }
            }
            else
            {
                if (billingProvider == BillingProvider.Azure)
                {
                    lineItem = new DailyUsageLineItem();
                }
                else if (billingProvider == BillingProvider.Marketplace)
                {
                    lineItem = new DailyRatedUsageLineItem();
                }
            }

            if (lineItem == null)
            {
                throw new JsonSerializationException($"InvoiceLineItemConverter cannot deserialize invoice line items with type: '{invoiceLineItemType}' && billing provider: '{billingProviderValue}'");
            }

            serializer.Populate(json.CreateReader(), lineItem);

            return(lineItem);
        }
コード例 #4
0
        public IEnumerable <UsageBasedLineItem> GetCurrentMonthData()
        {
            try
            {
                List <InvoiceLineItem> completeList = new List <InvoiceLineItem>();
                completeList = this.GetCompleteList(DateTime.Now.Month, DateTime.Now.Year, 0, 0);
                List <UsageBasedLineItem> dataToBeStored = new List <UsageBasedLineItem>();

                // extract properties
                foreach (InvoiceLineItem lineItem in completeList)
                {
                    UsageBasedLineItem lineItemWithBaseProperties = (UsageBasedLineItem)lineItem;
                    dataToBeStored.Add(lineItemWithBaseProperties);
                }

                return(dataToBeStored);
            }
            catch (Exception ex)
            {
                throw new CspBillingException(ex.Message, ex);
            }
        }
コード例 #5
0
        public List <UsageBasedLineItem> GetCSPSummaryData()
        {
            try
            {
                List <InvoiceLineItem> completeList = this.GetCompleteList(0, 0, 0, 0);

                List <UsageBasedLineItem> dataToBeStored = new List <UsageBasedLineItem>();

                // Extract properties
                foreach (InvoiceLineItem lineItem in completeList)
                {
                    UsageBasedLineItem lineItemWithBaseProperties = (UsageBasedLineItem)lineItem;
                    dataToBeStored.Add(lineItemWithBaseProperties);
                }

                return(dataToBeStored);
            }
            catch
            {
                throw;
            }
        }
コード例 #6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="PSUsageBasedLineItem" /> class.
 /// </summary>
 /// <param name="lineItem">The base line item for this instance.</param>
 public PSUsageBasedLineItem(UsageBasedLineItem lineItem)
 {
     this.CopyFrom(lineItem);
 }