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; } }
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()); }