/// <summary>
        ///
        /// </summary>
        /// <param name="viewModel"></param>
        /// <returns></returns>
        public async Task CreateByViewModelAsync(StatisticCreateViewModel viewModel)
        {
            // Check
            if (viewModel == null)
            {
                throw new ArgumentNullException(nameof(viewModel));
            }

            // Process
            var statistic = _mapper.Map <Statistic>(viewModel);

            _statistics.Add(statistic);
            await _unitOfWork.SaveAllChangesAsync(auditUserId : _httpContextManager.CurrentUserId());
        }
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var statisticViewmodel = new StatisticCreateViewModel
            {
                ControllerName = filterContext.RequestContext.RouteData.Values["controller"].ToString(),
                ActionName     = filterContext.RequestContext.RouteData.Values["action"].ToString(),
                ViewedOn       = DateTime.Now,
                Referrer       = filterContext.RequestContext.HttpContext.Request.UrlReferrer?.ToString(),
                Audit          = AuditType.Create,
                IpAddress      = filterContext.HttpContext.Request.GetIp(),
                UserAgent      = filterContext.HttpContext.Request.GetBrowser(),
                UserOs         = filterContext.HttpContext.Request.GetOs()
            };

            _statisticService.CreateByViewModelAsync(statisticViewmodel);

            base.OnActionExecuting(filterContext);
        }