Exemple #1
0
        public static async Task PostPlaying(DbCtx context, User user, TrackLocationWithProfile playing)
        {
RETRY:
            var track = await context.Tracks.FindAsync(playing.trackid);

            var list = playing.listid > 0 ? await context.Lists.FindAsync(playing.listid) : null;

            if (track?.IsVisibleToUser(user) == true)
            {
                context.Plays.Add(new PlayRecord
                {
                    Track        = track,
                    User         = user,
                    listid       = list?.IsVisibleToUser(user) == true ? playing.listid : 0,
                    audioprofile = playing.profile ?? "",
                    time         = DateTime.Now
                });
            }

            user.last_playing = playing.ToString();
            // context.Entry(user).State = EntityState.Modified;
            user.version++;


            if (await context.FailedSavingChanges())
            {
                goto RETRY;
            }
        }
Exemple #2
0
        public async Task <IActionResult> PostMePlaying(TrackLocationWithProfile playing)
        {
            var user = await GetLoginUser();

            if (user == null)
            {
                return(GetErrorResult("no_login"));
            }

            await PostPlaying(_context, user, playing);

            return(Ok());
        }