Exemple #1
0
        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();
        }
Exemple #2
0
        /// <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;
            }
        }
Exemple #3
0
        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));
        }
Exemple #6
0
 public Task <IActionResult> SaveAsync([FromBody] UserActivityEntity entity)
 {
     return(this.SaveSnsEntityAsync(entity, (sns, e, cancellationToken) => sns.SaveAsync(entity, cancellationToken), Logger, new EventId(17001335, "SaveEntity")));
 }
Exemple #7
0
 public static void FromHttpContext(this UserActivityEntity model, HttpContext context)
 {
 }