public IEnumerable <CspUsageLineItem> 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   = this.GetCompleteList(month, year, 0, 0);
                List <CspUsageLineItem> dataToBeStored = new List <CspUsageLineItem>();

                // extract properties
                foreach (InvoiceLineItem lineItem in completeList)
                {
                    CspUsageLineItem cspUsageItem = this.GetSingleInvoiceData(lineItem);
                    dataToBeStored.Add(cspUsageItem);
                }

                return(dataToBeStored);
            }
            catch (Exception ex)
            {
                throw new CspBillingException(ex.Message, ex);
            }
        }
        public IEnumerable <CspUsageLineItem> GetAllData()
        {
            try
            {
                List <InvoiceLineItem>  completeList   = this.GetCompleteList(0, 0, 0, 0);
                List <CspUsageLineItem> dataToBeStored = new List <CspUsageLineItem>();

                // extract properties
                foreach (InvoiceLineItem lineItem in completeList)
                {
                    CspUsageLineItem cspUsageItem = this.GetSingleInvoiceData(lineItem);
                    dataToBeStored.Add(cspUsageItem);
                }

                return(dataToBeStored);
            }
            catch
            {
                throw;
            }
        }
        public IEnumerable <CspUsageLineItem> GetCurrentMonthData()
        {
            try
            {
                List <InvoiceLineItem>  completeList   = this.GetCompleteList(DateTime.Now.Month, DateTime.Now.Year, 0, 0);
                List <CspUsageLineItem> dataToBeStored = new List <CspUsageLineItem>();

                // extract properties
                foreach (InvoiceLineItem lineItem in completeList)
                {
                    CspUsageLineItem cspUsageItem = this.GetSingleInvoiceData(lineItem);
                    dataToBeStored.Add(cspUsageItem);
                }

                return(dataToBeStored);
            }
            catch (Exception ex)
            {
                throw new CspBillingException(ex.Message, ex);
            }
        }
        /// <summary>
        /// Converts an object of type CspUsageLineItem from the input InvoiceLineItem values.
        /// </summary>
        /// <param name="lineItem">InvoiceLineItem object which needs to be converted.</param>
        /// <returns>Converted CspUsageLineItem.</returns>
        private CspUsageLineItem GetSingleInvoiceData(InvoiceLineItem lineItem)
        {
            try
            {
                CspUsageLineItem   cspUsageItem = new CspUsageLineItem();
                DailyUsageLineItem lineItemWithBaseProperties = (DailyUsageLineItem)lineItem;

                cspUsageItem.BillingProvider  = lineItemWithBaseProperties.BillingProvider.ToString();
                cspUsageItem.ChargeEndDate    = lineItemWithBaseProperties.ChargeEndDate;
                cspUsageItem.ChargeStartDate  = lineItemWithBaseProperties.ChargeStartDate;
                cspUsageItem.ConsumedQuantity =
                    float.Parse(
                        lineItemWithBaseProperties.ConsumedQuantity.ToString(CultureInfo.InvariantCulture),
                        CultureInfo.InvariantCulture);
                cspUsageItem.CustomerBillableAccount = lineItemWithBaseProperties.CustomerBillableAccount;
                cspUsageItem.CustomerCompanyName     = lineItemWithBaseProperties.CustomerCompanyName;
                cspUsageItem.invoiceNumber           = lineItemWithBaseProperties.InvoiceNumber;
                cspUsageItem.MpnId   = lineItemWithBaseProperties.MpnId.ToString(CultureInfo.InvariantCulture);
                cspUsageItem.orderId = lineItemWithBaseProperties.OrderId;
                cspUsageItem.PartnerBillableAccountId = lineItemWithBaseProperties.PartnerBillableAccountId;
                cspUsageItem.PartnerId               = lineItemWithBaseProperties.PartnerId;
                cspUsageItem.PartnerName             = lineItemWithBaseProperties.PartnerName;
                cspUsageItem.Region                  = lineItemWithBaseProperties.Region;
                cspUsageItem.ResourceGuid            = lineItemWithBaseProperties.ResourceGuid;
                cspUsageItem.ResourceName            = lineItemWithBaseProperties.ResourceName;
                cspUsageItem.ServiceName             = lineItemWithBaseProperties.ServiceName;
                cspUsageItem.ServiceType             = lineItemWithBaseProperties.ServiceType;
                cspUsageItem.SubscriptionDescription = lineItemWithBaseProperties.SubscriptionDescription;
                cspUsageItem.SubscriptionId          = lineItemWithBaseProperties.SubscriptionId;
                cspUsageItem.SubscriptionName        = lineItemWithBaseProperties.SubscriptionName;
                cspUsageItem.TierMpnId               = lineItemWithBaseProperties.Tier2MpnId.ToString(CultureInfo.InvariantCulture);
                cspUsageItem.UsageDate               = lineItemWithBaseProperties.UsageDate;

                return(cspUsageItem);
            }
            catch
            {
                throw;
            }
        }