예제 #1
0
 public EntryManager(
     ReportDataProviderBase reportDataProvider,
     IEntrySearchCache cache,
     IWeBlogSettings settings       = null,
     ICommentManager commentManager = null)
     : this(reportDataProvider, cache, settings, commentManager, null)
 {
 }
예제 #2
0
 public EntryManager(
     ReportDataProviderBase reportDataProvider,
     IEntrySearchCache cache,
     IWeBlogSettings settings                   = null,
     ICommentManager commentManager             = null,
     BaseTemplateManager templateManager        = null,
     IBlogSettingsResolver blogSettingsResolver = null)
 {
     ReportDataProvider   = reportDataProvider;
     Settings             = settings ?? WeBlogSettings.Instance;
     EntryCache           = cache ?? CacheManager.GetCache <IEntrySearchCache>(EntrySearchCache.CacheName);
     CommentManager       = commentManager ?? ServiceLocator.ServiceProvider.GetRequiredService <ICommentManager>();
     TemplateManager      = templateManager ?? ServiceLocator.ServiceProvider.GetRequiredService <BaseTemplateManager>();
     BlogSettingsResolver = blogSettingsResolver ?? ServiceLocator.ServiceProvider.GetRequiredService <IBlogSettingsResolver>();
 }
예제 #3
0
        public IHttpActionResult Get(string datasource, string siteName)
        {
            ReportDataProviderBase reportingDataProvider = ApiContainer.Configuration.GetReportingDataProvider();
            var cachingPolicy = new CachingPolicy
            {
                ExpirationPeriod = TimeSpan.FromHours(1)
                                   //must find cache expiration node
            };

            Item dataSourceItem = Database.GetDatabase("core").GetItem(new ID(datasource));
            var  reportSQLQuery = dataSourceItem.Fields["{0AA8B742-BBDF-4405-AB8D-6FAC7E79433B}"].Value;

            NameValueCollection parameters = HttpUtility.ParseQueryString(this.Request.RequestUri.Query);
            var    from     = DateTime.ParseExact(parameters["dateFrom"], "dd-MM-yyyy", new DateTimeFormatInfo());
            var    to       = DateTime.ParseExact(parameters["dateTo"], "dd-MM-yyyy", new DateTimeFormatInfo());
            string dateFrom = from.ToString("yyyy-MM-dd");
            string dateTo   = to.ToString("yyyy-MM-dd");

            if (from.Equals(to) && parameters["dateTo"].Length <= 10)
            {
                dateFrom = from.ToString("yyyy-MM-dd 00:00:00");
                dateTo   = to.ToString("yyyy-MM-dd 23:59:59");
            }

            reportSQLQuery = reportSQLQuery.Replace("@StartDate", "'" + dateFrom + "'");
            reportSQLQuery = reportSQLQuery.Replace("@EndDate", "'" + dateTo + "'");

            string hashedSiteName = "0";

            if (siteName != "all")
            {
                var encoder = new Hash32Encoder();
                hashedSiteName = encoder.Encode(siteName);
                reportSQLQuery = reportSQLQuery.Replace("@SiteNameIdOperator", "=");
            }
            else
            {
                reportSQLQuery = reportSQLQuery.Replace("@SiteNameIdOperator", "!=");
            }

            reportSQLQuery = reportSQLQuery.Replace("@SiteNameId", hashedSiteName);

            var query = new ReportDataQuery(reportSQLQuery);

            DataTableReader reader = reportingDataProvider.GetData("reporting", query, cachingPolicy).GetDataTable().CreateDataReader();

            var data = new ReportData();

            int counter = 0;

            while (reader.Read())
            {
                var row = new Dictionary <string, string>();
                for (int i = 0; i < reader.FieldCount; i++)
                {
                    row.Add(reader.GetName(i), reader[i].ToString());
                }

                data.AddRow(row);
                counter++;
            }

            var responce = new ReportResponse
            {
                data             = data,
                TotalRecordCount = counter
            };

            return(new JsonResult <ReportResponse>(responce, new JsonSerializerSettings {
                ContractResolver = new CamelCasePropertyNamesContractResolver()
            }, Encoding.UTF8, this));
        }
예제 #4
0
 public EntryManager(ReportDataProviderBase reportDataProvider = null)
 {
   this.reportDataProvider = reportDataProvider;
 }
예제 #5
0
        /// <summary>
        /// Creates a new instance of the class.
        /// </summary>
        /// <param name="reportProvider">The <see cref="ReportDataProviderBase"/> to read reporting data from.</param>
        public ItemVisitsQuery(ReportDataProviderBase reportProvider = null)
#if !SC75
            : base(Constants.ReportingQueries.ItemVisits, reportProvider)
        {
        }
예제 #6
0
    /// <summary>
    /// Creates a new instance of the class.
    /// </summary>
    /// <param name="reportProvider">The <see cref="ReportDataProviderBase"/> to read reporting data from.</param>
    public EntriesByViewQuery(ReportDataProviderBase reportProvider = null)
#if !SC75
      : base(Constants.ReportingQueries.EntriesByView, reportProvider)
    {
    }
예제 #7
0
 public EntryManager(ReportDataProviderBase reportDataProvider, IWeBlogSettings settings)
 {
     ReportDataProvider = reportDataProvider;
     Settings           = settings ?? new WeBlogSettings();
 }
예제 #8
0
        /// <summary>
        /// Creates a new instance of the class.
        /// </summary>
        /// <param name="reportProvider">The <see cref="ReportDataProviderBase"/> to read reporting data from.</param>
        public EntriesByViewQuery(ReportDataProviderBase reportProvider = null)
#if !SC75
            : base(Constants.ReportingQueries.EntriesByView, reportProvider)
        {
        }
예제 #9
0
 public EntryManager(ReportDataProviderBase reportDataProvider = null)
 {
     this.reportDataProvider = reportDataProvider;
 }
예제 #10
0
 public EntryManager(ReportDataProviderBase reportDataProvider, IWeBlogSettings settings)
 {
     ReportDataProvider = reportDataProvider;
     Settings = settings ?? new WeBlogSettings();
 }
예제 #11
0
        /// <summary>
        /// Creates a new instance of the class.
        /// </summary>
        /// <param name="reportProvider">The <see cref="ReportDataProviderBase"/> to read reporting data from.</param>
        public ItemVisitsQuery(ReportDataProviderBase reportProvider = null)
#if !SC75
            : base(Constants.ReportingQueries.ItemVisits, reportProvider)
        {
        }