/// <summary> /// Called by the ASP.NET MVC framework before the action method executes. /// </summary> /// <param name="filterContext">The filter context.</param> public override void OnActionExecuting(ActionExecutingContext filterContext) { ClientInfo clientInfo = Parser.GetDefault().Parse(HttpContext.Current.Request.UserAgent); JSApplicationCookie cookie = GetApplicationCookie(); TrafficLogRequest trafficLogRequest = new TrafficLogRequest() { ApplicationId = (int)SecurityManager.Current.CurrentApplication, Browser = HttpContext.Current.Request.Browser.Browser, BrowserVersion = clientInfo.UserAgent.ToString(), Cookie = cookie.Serialize(SerializationTypes.Json), JSUserId = SecurityManager.Current.UserId, OperatingSystem = clientInfo.OS.ToString(), Device = clientInfo.Device.ToString(), RequestedUrl = HttpContext.Current.Request.RawUrl, RequestType = HttpContext.Current.Request.RequestType, TrackingGuid = SecurityManager.Current.TrackingGuid, TrafficLogGuid = cookie.TrafficLogGuid, UserAgent = HttpContext.Current.Request.UserAgent, UrlReferrer = HttpContext.Current.Request.UrlReferrer == null ? null : HttpContext.Current.Request.UrlReferrer.OriginalString }; string seperator = ""; foreach (string key in HttpContext.Current.Request.Form) { trafficLogRequest.PostedData += String.Format("{0}{1}={2}", seperator, key, HttpContext.Current.Request.Form[key]); seperator = "&"; } IConnectionInfo connectionInfo = SecurityManager.Current.ConnectionInfo; string ipAddress = HttpContext.Current.Request.UserHostAddress; BackgroundProcessHelper.Current.Trigger(async(cancel) => { await SetTrafficLogRequestLocation(trafficLogRequest, ipAddress); await TrafficLogRequestBusinessManager.Current.InsertAsync(connectionInfo, trafficLogRequest); }); base.OnActionExecuting(filterContext); }
private static async Task SetTrafficLogRequestLocation(TrafficLogRequest trafficLogRequest, string ipAddress) { const string homeNetworkIp = "192.168.1.1"; if (!String.IsNullOrEmpty(ipAddress) && ipAddress != "::1" && ipAddress != homeNetworkIp) { WebRequest request = WebRequest.Create(String.Format("{0}{1}", ConfigurationHelper.Current.GetSetting("IPLocationService"), ipAddress)); WebResponse response = await request.GetResponseAsync(); Location location = Location.Deserialize(new StreamReader(response.GetResponseStream()).ReadToEnd(), SerializationTypes.Json); trafficLogRequest.Location = String.Join(" ", location.CountryName, location.RegionName, location.City, location.ZipCode); } else if (!String.IsNullOrEmpty(ipAddress)) { trafficLogRequest.Location = "House Wifi Dayton Ohio"; } }
/// <summary> /// Index /// </summary> /// <returns></returns> public ActionResult Index(TrafficLogRequest filter) { TrafficLogRequest model = new TrafficLogRequest(); if (!filter.PublicPropertiesEquals(model)) { ModelState.Clear(); if (!String.IsNullOrEmpty(filter.TrackingGuid)) { model.TrackingGuid = filter.TrackingGuid; } if (!String.IsNullOrEmpty(filter.Location)) { model.Location = filter.Location; } if (filter.InsertedOn_From != null) { model.InsertedOn_From = filter.InsertedOn_From; } if (filter.InsertedOn_To != null) { model.InsertedOn_To = filter.InsertedOn_To; } if (filter.ApplicationId != default(int)) { model.ApplicationId = filter.ApplicationId; } } else { model.InsertedOn_From = DateTime.Today; model.InsertedOn_To = DateTime.Today.AddDays(1); } ViewBag.AvailableApplications = EnumHelper.Current.GetSelectList <Applications>(); return(View(model)); }
/// <summary> /// Traffics the log grid data. /// </summary> /// <param name="filter">The filter.</param> /// <returns></returns> public async Task <JsonResult> TrafficLogGridData(TrafficLogRequest filter) { filter.ClearEmptyModifiedColumns(); PagedResult <TrafficLogRequest> pagedResult = await TrafficLogRequestBusinessManager.Current.PagingSelectAsync(SecurityManager.Current.ConnectionInfo, filter); foreach (TrafficLogRequest trafficLog in pagedResult.Results) { List <JSUser> jsUsers = await JSUserBusinessManager.Current.SelectAsync(SecurityManager.Current.ConnectionInfo, new JSUser() { JSUserId = trafficLog.JSUserId }); if (jsUsers.Any()) { trafficLog.JSUserName = jsUsers.First().Name; } trafficLog.ApplicationName = EnumHelper.Current.GetNameWithSpaces((Applications)trafficLog.ApplicationId); } return(Json(pagedResult)); }
///// <summary> ///// Update ///// </summary> ///// <param name="connectionInfo">The connection information.</param> ///// <param name="TrafficLogRequest">The entity.</param> ///// <returns></returns> //public IProcessResult Update(IConnectionInfo connectionInfo, TrafficLogRequest entity) //{ // return TrafficLogRequestManager.Current.Update(connectionInfo, entity); //} /// <summary> /// Update Async /// </summary> /// <param name="connectionInfo">The connection information.</param> /// <param name="entity">The entity.</param> /// <returns></returns> public async Task <IProcessResult> UpdateAsync(IConnectionInfo connectionInfo, TrafficLogRequest entity) { return(await TrafficLogRequestManager.Current.UpdateAsync(connectionInfo, entity)); }
///// <summary> ///// Select ///// </summary> ///// <param name="connectionInfo">The connection information.</param> ///// <param name="filter">The filter.</param> ///// <returns></returns> //public List<TrafficLogRequest> Select(IConnectionInfo connectionInfo, TrafficLogRequest filter) //{ // return TrafficLogRequestManager.Current.Select(connectionInfo, filter); //} /// <summary> /// Select Async /// </summary> /// <param name="connectionInfo">The connection information.</param> /// <param name="filter">The filter.</param> /// <returns></returns> public async Task <List <TrafficLogRequest> > SelectAsync(IConnectionInfo connectionInfo, TrafficLogRequest filter) { return(await TrafficLogRequestManager.Current.SelectAsync(connectionInfo, filter)); }
/// <summary> /// Pagings the select asynchronous. /// </summary> /// <param name="connectionInfo">The connection information.</param> /// <param name="filter">The filter.</param> /// <returns></returns> public async Task <PagedResult <TrafficLogRequest> > PagingSelectAsync(IConnectionInfo connectionInfo, TrafficLogRequest filter) { return(await TrafficLogRequestManager.Current.PagingSelectAsync(connectionInfo, filter)); }
///// <summary> ///// Update ///// </summary> ///// <param name="connectionInfo">The connection information.</param> ///// <param name="TrafficLogRequest">The entity.</param> ///// <returns></returns> //public IProcessResult Update(IConnectionInfo connectionInfo, TrafficLogRequest entity) //{ // return UpdateInternal(connectionInfo, entity).Result; //} /// <summary> /// Update Async. /// </summary> /// <param name="connectionInfo">The connection information.</param> /// <param name="entity">The entity.</param> /// <returns></returns> public async Task <IProcessResult> UpdateAsync(IConnectionInfo connectionInfo, TrafficLogRequest entity) { return(await UpdateInternal(connectionInfo, entity)); }
///// <summary> ///// Select ///// </summary> ///// <param name="connectionInfo">The connection information.</param> ///// <param name="filter">The filter.</param> ///// <returns></returns> //public List<TrafficLogRequest> Select(IConnectionInfo connectionInfo, TrafficLogRequest filter) //{ // return SelectInternal(connectionInfo, filter).Result; //} /// <summary> /// Select Async /// </summary> /// <param name="connectionInfo">The connection information.</param> /// <param name="filter">The filter.</param> /// <returns></returns> public async Task <List <TrafficLogRequest> > SelectAsync(IConnectionInfo connectionInfo, TrafficLogRequest filter) { return(await SelectInternal(connectionInfo, filter)); }