public HttpResponseMessage LogUserActivity([FromBody] LogUserActivityModel inputParams) { inputParams.Browser = HttpContext.Current.Request.Browser.Browser; inputParams.BrowserVersion = HttpContext.Current.Request.Browser.MajorVersion; var dataResult = new JsonResult { JsonRequestBehavior = JsonRequestBehavior.AllowGet }; var responce = Request.CreateResponse(HttpStatusCode.OK, dataResult); dataResult.Data = LoggingService.LogUserActivity(inputParams, responce, Request); return(responce); }
public GenericResult <bool> LogUserActivity(LogUserActivityModel userActivityModel, HttpResponseMessage responce, HttpRequestMessage request) { var result = new GenericResult <bool>(); try { var userData = UserService.GetUserData(request); if (userData.InfoResult.ResultCode == Models.Enums.ResultCodeEnum.Success) { using (var db = new RssAggregatorModelContainer(true)) { var userKey = string.Empty; var isNewUser = true; User user = null; var requestCookie = request.Headers.GetCookies(DEFAULT_COOKIE_NAME).FirstOrDefault(); if (requestCookie != null) { userKey = requestCookie[DEFAULT_COOKIE_NAME].Value; isNewUser = false; } else { userKey = Guid.NewGuid().ToString(); var cookie = new CookieHeaderValue(DEFAULT_COOKIE_NAME, userKey) { Expires = DateTimeOffset.UtcNow.AddDays(COOKIE_EXPIRE_DAYS), Domain = request.RequestUri.Host, Path = "/" }; responce.Headers.AddCookies(new[] { cookie }); } if (userData.DataResult != null && !string.IsNullOrEmpty(userData.DataResult.UserKey)) { user = db.GetEntity <User>(el => el.IsActive && el.UserKey.ToLower() == userData.DataResult.UserKey.ToLower()); isNewUser = user == null; } db.AddEntity(new UserActivityLog { Activity = (ActivityEnum)userActivityModel.Activity, Browser = userActivityModel.Browser, BrowserVersion = userActivityModel.BrowserVersion, City = userActivityModel.City, Country = userActivityModel.Country, DateTime = DateTime.UtcNow, Organization = userActivityModel.Organization, Region = userActivityModel.Region, User = user, IsNew = isNewUser, UserKey = userKey }); result.SetDataResult(true); } } else { result.SetErrorResultCode(userData); } } catch (Exception ex) { Logger.LogException(ex, LogTypeEnum.BAL); result.SetErrorResultCode(SettingService.GetUserFriendlyExceptionMessage()); } return(result); }