protected void ProcessButton_Click(object sender, EventArgs e)
        {
            // set up dates
            DateTime startDate = new DateTime(StartDate.SelectedDate.Year, StartDate.SelectedDate.Month, StartDate.SelectedDate.Day, 0, 0, 0);
            DateTime endDate   = new DateTime(EndDate.SelectedDate.Year, EndDate.SelectedDate.Month, EndDate.SelectedDate.Day, 23, 59, 59);

            // build raw data
            IList <NewExistingRawData> rawData = ReportDataSource.GetNewExistingRawData(startDate, endDate);

            // process raw data into chart points by day
            IList <NewExistingSalesData> dataPoints = new List <NewExistingSalesData>();

            // determine number of days between start and finish date
            TimeSpan daysBetween = endDate - startDate;

            // compute total days, always add 1 to include last day
            int totalDays = 1 + (int)daysBetween.TotalDays;

            // loop each day to crate data points
            for (int currentDay = 0; currentDay < totalDays; currentDay++)
            {
                DateTime findDate = startDate.AddDays(currentDay);
                int      year     = findDate.Year;
                int      month    = findDate.Month;
                int      day      = findDate.Day;

                IList <NewExistingRawData> findRows = rawData.Where(x => x.OrderDate.Year == year && x.OrderDate.Month == month && x.OrderDate.Day == day).ToList();

                // now we have list of rowdata for just this date
                int newCount      = findRows.Count(x => x.PreviousOrders == 0);
                int existingCount = findRows.Count(x => x.PreviousOrders > 0);

                // make a new data point
                NewExistingSalesData rptData = new NewExistingSalesData();
                rptData.NewCustomers      = newCount;
                rptData.ExistingCustomers = existingCount;
                rptData.OrderDate         = new DateTime(year, month, day);

                dataPoints.Add(rptData);
            }

            // create our chart
            BuildCharts(dataPoints);
        }