Esempio n. 1
0
 public ModuleAction GetAction_UpdateGeoLocation()
 {
     if (!IsAuthorized("UpdateGeoLocation"))
     {
         return(null);
     }
     using (VisitorEntryDataProvider visitorDP = new VisitorEntryDataProvider()) {
         if (!visitorDP.Usable)
         {
             return(null);
         }
     }
     return(new ModuleAction(this)
     {
         Url = Utility.UrlFor(typeof(VisitorsModuleController), nameof(VisitorsModuleController.UpdateGeoLocation)),
         NeedsModuleContext = true,
         QueryArgs = new { },
         Image = "#Add",
         Style = ModuleAction.ActionStyleEnum.Post,
         LinkText = this.__ResStr("updgAuthLink", "GeoLocation Data"),
         MenuText = this.__ResStr("updgAuthMenu", "GeoLocation Data"),
         Tooltip = this.__ResStr("updgAuthTT", "Update GeoLocation Data"),
         Legend = this.__ResStr("updgAuthLegend", "Updates GeoLocation Data"),
         Category = ModuleAction.ActionCategoryEnum.Significant,
         Mode = ModuleAction.ActionModeEnum.Any,
         Location = ModuleAction.ActionLocationEnum.ModuleLinks,
         ConfirmationText = this.__ResStr("updgUpdateGeoLocation", "Are you sure you want to update GeoLocation data?"),
         PleaseWaitText = this.__ResStr("confUpdateGeoLocation", "Updating GeoLocation data..."),
     });
 }
Esempio n. 2
0
 public ModuleAction GetAction_Display(string url, int key)
 {
     using (VisitorEntryDataProvider visitorDP = new VisitorEntryDataProvider()) {
         if (!visitorDP.Usable)
         {
             return(null);
         }
     }
     return(new ModuleAction(this)
     {
         Url = string.IsNullOrWhiteSpace(url) ? ModulePermanentUrl : url,
         QueryArgs = new { Key = key },
         Image = "#Display",
         LinkText = this.__ResStr("displayLink", "Display"),
         MenuText = this.__ResStr("displayText", "Display"),
         Tooltip = this.__ResStr("displayTooltip", "Display the visitor entry details"),
         Legend = this.__ResStr("displayLegend", "Displays visitor entry details"),
         Style = ModuleAction.ActionStyleEnum.Popup,
         Category = ModuleAction.ActionCategoryEnum.Read,
         Mode = ModuleAction.ActionModeEnum.Any,
         Location = ModuleAction.ActionLocationEnum.NoAuto,
         SaveReturnUrl = true,
         DontFollow = true,
     });
 }
Esempio n. 3
0
        public ActionResult Visitors()
        {
            using (VisitorEntryDataProvider visitorDP = new VisitorEntryDataProvider()) {
                if (!visitorDP.Usable)
                {
                    throw new Error(this.__ResStr("noInfo", "Visitor information is not available - See https://yetawf.com/Documentation/YetaWF/Visitors"));
                }
            }
            BrowseModel model = new BrowseModel {
                GridDef = GetGridModel()
            };

            return(View(model));
        }
Esempio n. 4
0
        public async Task RemoveAsync(List <string> errorList)
        {
            VisitorsConfigData config = await VisitorsConfigDataProvider.GetConfigAsync();

            DateTime oldest = DateTime.UtcNow.AddDays(-config.Days);

            using (VisitorEntryDataProvider visitorEntryDP = new VisitorEntryDataProvider()) {
                List <DataProviderFilterInfo> filters = DataProviderFilterInfo.Join(null, new DataProviderFilterInfo {
                    Field = nameof(VisitorEntry.AccessDateTime), Operator = "<", Value = oldest
                });
                int removed = await visitorEntryDP.RemoveItemsAsync(filters);

                errorList.Add(string.Format("{0} records removed from visitor data", removed));
            }
        }
Esempio n. 5
0
        public async Task <ActionResult> VisitorDisplay(int key)
        {
            using (VisitorEntryDataProvider visitorDP = new VisitorEntryDataProvider()) {
                VisitorEntry data = await visitorDP.GetItemAsync(key);

                if (data == null)
                {
                    throw new Error(this.__ResStr("notFound", "Visitor Entry {0} not found."), key);
                }
                DisplayModel model = new DisplayModel();
                model.SetData(data);
                Module.Title = this.__ResStr("modTitle", "Visitor Entry {0}", key);
                return(View(model));
            }
        }
        public async Task AddGeoLocationAsync(List <string> errorList)
        {
            using (VisitorEntryDataProvider visitorEntryDP = new VisitorEntryDataProvider()) {
                DateTime startTime = DateTime.UtcNow;
                int      overall   = 0;
                List <DataProviderFilterInfo> filters = null;
                filters = DataProviderFilterInfo.Join(filters, new DataProviderFilterInfo {
                    Field = nameof(VisitorEntry.ContinentCode), Operator = "==", Value = VisitorEntry.Unknown
                });
                filters = DataProviderFilterInfo.Join(filters, new DataProviderFilterInfo {
                    Field = nameof(VisitorEntry.AccessDateTime), Operator = "<", Value = startTime
                });

                GeoLocation geoLocation = new GeoLocation();
                int         maxRequest  = geoLocation.GetRemainingRequests();
                for (; maxRequest > 0; --maxRequest)
                {
                    DataProviderGetRecords <VisitorEntry> list = await visitorEntryDP.GetItemsAsync(0, 1, null, filters);

                    if (list.Data.Count == 0)
                    {
                        break;
                    }
                    VisitorEntry         geoData  = list.Data.First();
                    GeoLocation.UserInfo userInfo = await geoLocation.GetUserInfoAsync(geoData.IPAddress);

                    if (!string.IsNullOrWhiteSpace(userInfo.ContinentCode))
                    {
                        geoData.City          = userInfo.City;
                        geoData.ContinentCode = userInfo.ContinentCode;
                        geoData.CountryCode   = userInfo.CountryCode;
                        geoData.RegionCode    = userInfo.RegionCode;
                    }
                    else
                    {
                        geoData.City          = "";
                        geoData.ContinentCode = "";
                        geoData.CountryCode   = "";
                        geoData.RegionCode    = "";
                    }
                    await visitorEntryDP.UpdateSameIPAddressesAsync(geoData);

                    ++overall;
                }
                Logging.AddLog($"Updated {overall} visitor entries");
            }
        }
Esempio n. 7
0
        private GridDefinition GetGridModel()
        {
            return(new GridDefinition {
                ModuleGuid = Module.ModuleGuid,
                SettingsModuleGuid = Module.PermanentGuid,
                RecordType = typeof(BrowseItem),
                AjaxUrl = GetActionUrl(nameof(Visitors_GridData)),
                DirectDataAsync = async(int skip, int take, List <DataProviderSortInfo> sort, List <DataProviderFilterInfo> filters) => {
                    using (VisitorEntryDataProvider dataProvider = new VisitorEntryDataProvider()) {
                        DataProviderGetRecords <VisitorEntry> browseItems = await dataProvider.GetItemsAsync(skip, take, sort, filters);

                        return new DataSourceResult {
                            Data = (from s in browseItems.Data select new BrowseItem(Module, s)).ToList <object>(),
                            Total = browseItems.Total
                        };
                    }
                },
            });
        }
Esempio n. 8
0
        public async Task <ActionResult> VisitorSummary()
        {
            using (VisitorEntryDataProvider visitorDP = new VisitorEntryDataProvider()) {
                if (visitorDP.Usable)
                {
                    await Manager.AddOnManager.AddAddOnNamedAsync(AreaRegistration.CurrentPackage.AreaName, Module.ModuleName); // add module specific items

                    VisitorEntryDataProvider.Info info = await visitorDP.GetStatsAsync();

                    DisplayModel model = new DisplayModel {
                    };
                    model.TodaysAnonymous     = info.TodaysAnonymous;
                    model.TodaysUsers         = info.TodaysUsers;
                    model.YesterdaysAnonymous = info.YesterdaysAnonymous;
                    model.YesterdaysUsers     = info.YesterdaysUsers;
                    return(View(model));
                }
                return(new EmptyResult());
            }
        }
Esempio n. 9
0
        public async Task <ActionResult> TinyVisitors()
        {
            using (VisitorEntryDataProvider visitorDP = new VisitorEntryDataProvider()) {
                if (visitorDP.Usable)
                {
                    string addonUrl = VersionManager.GetAddOnPackageUrl(AreaRegistration.CurrentPackage.AreaName);
                    VisitorEntryDataProvider.Info info = await visitorDP.GetStatsAsync();

                    DisplayModel model = new DisplayModel {
                    };
                    model.TodaysAnonymous     = info.TodaysAnonymous;
                    model.TodaysUsers         = info.TodaysUsers;
                    model.YesterdaysAnonymous = info.YesterdaysAnonymous;
                    model.YesterdaysUsers     = info.YesterdaysUsers;
                    model.Tooltip             = this.__ResStr("tooltip", "Today: {0} Users, {1} Anonymous - Yesterday: {2}/{3}", model.TodaysUsers, model.TodaysAnonymous, model.YesterdaysUsers, model.YesterdaysAnonymous);
                    model.ImageUrl            = addonUrl + "Icons/People.png";
                    model.VisitorsUrl         = Module.VisitorsUrl;
                    return(View(model));
                }
                return(new EmptyResult());
            }
        }
Esempio n. 10
0
 public ActionResult TrackClick(string url)
 {
     VisitorEntryDataProvider.AddVisitEntryUrlAsync(url, true); // no await, as in fire and forget
     return(new EmptyResult());
 }