public ActionResult View(int id)
        {
            if (!_permissionService.Authorize(StandardPermissionProvider.ManageSystemLog))
                return AccessDeniedView();

            var log = Logger.GetLogById(id);
            if (log == null)
                //No log found with the specified id
                return RedirectToAction("List");

            var model = new LogModel()
            {
                Id = log.Id,
                LogLevelHint = s_logLevelHintMap[log.LogLevel],
                LogLevel = log.LogLevel.GetLocalizedEnum(_localizationService, _workContext),
                ShortMessage = log.ShortMessage,
                FullMessage = log.FullMessage,
                IpAddress = log.IpAddress,
                CustomerId = log.CustomerId,
                CustomerEmail = log.Customer != null ? log.Customer.Email : null,
                PageUrl = log.PageUrl,
                ReferrerUrl = log.ReferrerUrl,
                CreatedOn = _dateTimeHelper.ConvertToUserTime(log.CreatedOnUtc, DateTimeKind.Utc),
                Frequency = log.Frequency,
                ContentHash = log.ContentHash
            };

            if (log.UpdatedOnUtc.HasValue)
                model.UpdatedOn = _dateTimeHelper.ConvertToUserTime(log.UpdatedOnUtc.Value, DateTimeKind.Utc);

            return View(model);
        }
        public ActionResult LogList(GridCommand command, LogListModel model)
        {
            var gridModel = new GridModel<LogModel>();

            if (_permissionService.Authorize(StandardPermissionProvider.ManageSystemLog))
            {
                DateTime? createdOnFromValue = (model.CreatedOnFrom == null) ? null
                    : (DateTime?)_dateTimeHelper.ConvertToUtcTime(model.CreatedOnFrom.Value, _dateTimeHelper.CurrentTimeZone);

                DateTime? createdToFromValue = (model.CreatedOnTo == null) ? null
                    : (DateTime?)_dateTimeHelper.ConvertToUtcTime(model.CreatedOnTo.Value, _dateTimeHelper.CurrentTimeZone).AddDays(1);

                LogLevel? logLevel = model.LogLevelId > 0 ? (LogLevel?)(model.LogLevelId) : null;

                var logItems = Logger.GetAllLogs(createdOnFromValue, createdToFromValue, model.Message,
                    logLevel, command.Page - 1, command.PageSize, model.MinFrequency);

                gridModel.Data = logItems.Select(x =>
                {
                    var logModel = new LogModel
                    {
                        Id = x.Id,
                        LogLevelHint = s_logLevelHintMap[x.LogLevel],
                        LogLevel = x.LogLevel.GetLocalizedEnum(_localizationService, _workContext),
                        ShortMessage = x.ShortMessage,
                        FullMessage = x.FullMessage,
                        IpAddress = x.IpAddress,
                        CustomerId = x.CustomerId,
                        CustomerEmail = x.Customer != null ? x.Customer.Email : null,
                        PageUrl = x.PageUrl,
                        ReferrerUrl = x.ReferrerUrl,
                        CreatedOn = _dateTimeHelper.ConvertToUserTime(x.CreatedOnUtc, DateTimeKind.Utc),
                        Frequency = x.Frequency,
                        ContentHash = x.ContentHash
                    };

                    if (x.UpdatedOnUtc.HasValue)
                        logModel.UpdatedOn = _dateTimeHelper.ConvertToUserTime(x.UpdatedOnUtc.Value, DateTimeKind.Utc);

                    return logModel;
                });

                gridModel.Total = logItems.TotalCount;
            }
            else
            {
                gridModel.Data = Enumerable.Empty<LogModel>();

                NotifyAccessDenied();
            }

            return new JsonResult
            {
                Data = gridModel
            };
        }