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..."), }); }
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, }); }
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)); }
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)); } }
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"); } }
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 }; } }, }); }
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()); } }
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()); } }
public ActionResult TrackClick(string url) { VisitorEntryDataProvider.AddVisitEntryUrlAsync(url, true); // no await, as in fire and forget return(new EmptyResult()); }