//properties

        //methods

        /// <summary>
        /// Creates a DataTable containing a set of random DateTime values.
        /// </summary>
        /// <param name="numRows">Num of rows with DateTime values to generate.</param>
        /// <param name="dataRequest">RandomDateTimeDataRequest object contains the definition for how to generate the random DateTime values.</param>
        /// <returns>ADO.NET DataTable containing the set of random values.</returns>
        public DataTable CreateRandomDataTable(int numRows, RandomDateTimeDataRequest dataRequest)
        {
            DataTable             dt                    = null;
            enRandomOffsetType    randOffsetType        = enRandomOffsetType.enUnknown;
            enRandomIncrementType randDateIncrementType = enRandomIncrementType.enUnknown;
            enDateConversionType  dateConversionType    = enDateConversionType.DoNotConvert;

            if (dataRequest.ConvertGeneratedValueToInteger)
            {
                if (dataRequest.ConvertDateTo32BitInteger)
                {
                    dateConversionType = enDateConversionType.ConvertDateTo32bitInt;
                }
                else if (dataRequest.ConvertTimeTo32BitInteger)
                {
                    dateConversionType = enDateConversionType.ConvertTimeTo32bitInt;
                }
                else if (dataRequest.ConvertDateTimeTo64BitInteger)
                {
                    dateConversionType = enDateConversionType.ConvertDateTimeTo64bitInt;
                }
                else
                {
                    dateConversionType = enDateConversionType.DoNotConvert;
                }
            }

            if (dataRequest.RangeOfDates)
            {
                dt = CreateRangeDataTable(numRows, dataRequest.EarliestDate, dataRequest.LatestDate, dataRequest.SpecifyTimeForEachDay, dataRequest.EarliestTime, dataRequest.LatestTime, dateConversionType);
            }
            else if (dataRequest.OffsetFromCurrentDate)
            {
                randOffsetType = GetRandomOffsetType(dataRequest);
                dt             = CreateOffsetFromCurrentDateDataTable(randOffsetType, numRows, dataRequest.MinimumOffset, dataRequest.MaximumOffset, dataRequest.SpecifyTimeForEachDay, dataRequest.EarliestTime, dataRequest.LatestTime, dateConversionType);
            }
            else if (dataRequest.OffsetFromDataTableDate)
            {
                randOffsetType = GetRandomOffsetType(dataRequest);
                dt             = CreateOffsetFromDataTableDate(randOffsetType, numRows, dataRequest.MinimumOffset, dataRequest.MaximumOffset, dataRequest.SpecifyTimeForEachDay, dataRequest.EarliestTime, dataRequest.LatestTime, dateConversionType);
            }
            else if (dataRequest.OutputSequentialDates)
            {
                randDateIncrementType = GetRandomDateIncrementType(dataRequest);
                dt = CreateDateSequenceDataTable(randDateIncrementType, numRows, dataRequest.IncrementSize, dataRequest.StartSequentialDate, dataRequest.EndSequentialDate, dataRequest.SpecifyTimeForEachDay, dataRequest.EarliestTime, dataRequest.LatestTime, dataRequest.MinNumDatesPerIncrement, dataRequest.MaxNumDatesPerIncrement, dataRequest.InitStartSequentialDate, dateConversionType);
            }
            else
            {
                dt = new DataTable();
            }


            return(dt);
        }
        private enRandomIncrementType GetRandomDateIncrementType(RandomDateTimeDataRequest dataRequest)
        {
            enRandomIncrementType incrementType = enRandomIncrementType.enUnknown;

            if (dataRequest.YearsIncrement)
            {
                incrementType = enRandomIncrementType.enYears;
            }
            else if (dataRequest.MonthsIncrement)
            {
                incrementType = enRandomIncrementType.enMonths;
            }
            else
            {
                incrementType = enRandomIncrementType.enDays;
            }

            return(incrementType);
        }
        private enRandomOffsetType GetRandomOffsetType(RandomDateTimeDataRequest dataRequest)
        {
            enRandomOffsetType offsetType = enRandomOffsetType.enUnknown;

            if (dataRequest.YearsOffset)
            {
                offsetType = enRandomOffsetType.enYears;
            }
            else if (dataRequest.MonthsOffset)
            {
                offsetType = enRandomOffsetType.enMonths;
            }
            else
            {
                //DaysOffset
                offsetType = enRandomOffsetType.enDays;
            }

            return(offsetType);
        }