public async Task SaveUserActivity(UserParticipationNotification notification) { var entity = await _context .UserActivities .AsTracking() .Where(x => x.Username == notification.User.Name) .FirstOrDefaultAsync(); if (entity == default) { entity = new UserActivityEntity { LastJoinDate = notification.When, Username = notification.User.Name, TimesSeen = 1 }; await _context.UserActivities !.AddAsync(entity); } else { entity.TimesSeen++; _context.UserActivities !.Update(entity); } await _context.SaveChangesAsync(); }
/// <summary> /// Saves an entity. /// </summary> /// <param name="entity">The resource entity to save.</param> /// <param name="cancellationToken">The optional token to monitor for cancellation requests.</param> /// <returns>The changing result information.</returns> public override async Task <ChangingResultInfo> SaveAsync(UserActivityEntity entity, CancellationToken cancellationToken = default) { if (entity == null) { return(new ChangingResultInfo(ChangeErrorKinds.Argument, EntityNullTips)); } if (string.IsNullOrWhiteSpace(UserId)) { return(new ChangingResultInfo(ChangeErrorKinds.Unauthorized, LoginErrorTips)); } if (string.IsNullOrWhiteSpace(entity.OwnerId) && entity.IsNew) { entity.OwnerId = UserId; } try { var result = await DataProvider.SaveAsync(entity, cancellationToken); if (ResourceEntityExtensions.IsSuccessful(result)) { return(new ChangingResultInfo <UserActivityEntity>(result, entity, result.ToString() + " user activity entity.")); } return(result); } catch (Exception ex) { var err = ResourceEntityExtensions.TryCatch(ex); if (err != null) { return(err); } throw; } }
public static void FromController(this UserActivityEntity model, Controller controller) { model.FromHttpContext(HttpContext.Current); var data = controller.RouteData.GetA_C_A(); model.ActionName = data.action; model.ControllerName = data.controller; model.ActionName = data.action; }
public async Task TrackUserSession(UserActivityEntity activityEntity) { var endTime = DateTime.Now; var session = new UserSessionEntity { Username = activityEntity.Username, StartTime = activityEntity.LastJoinDate, EndTime = endTime, WatchTime = endTime - activityEntity.LastJoinDate }; await _context.UserSession !.AddAsync(session); }
/// <summary> /// Saves an entity. /// </summary> /// <param name="entity">The resource entity to save.</param> /// <param name="cancellationToken">The optional token to monitor for cancellation requests.</param> /// <returns>The changing result information.</returns> public Task <ChangeMethods> SaveAsync(UserActivityEntity entity, CancellationToken cancellationToken = default) { var context = GetContext(false); return(DbResourceEntityExtensions.SaveAsync(context.UserActivities, context.SaveChangesAsync, entity, cancellationToken)); }
public Task <IActionResult> SaveAsync([FromBody] UserActivityEntity entity) { return(this.SaveSnsEntityAsync(entity, (sns, e, cancellationToken) => sns.SaveAsync(entity, cancellationToken), Logger, new EventId(17001335, "SaveEntity"))); }
public static void FromHttpContext(this UserActivityEntity model, HttpContext context) { }