public async Task UpdateProgress(Guid id, UpdateProgressParam param, int userId) { var progress = await _catalogDb.UserVideoProgresses .FirstOrDefaultAsync(uvp => uvp.UserId == userId && uvp.Video.Id == id); if (param.Finished) { if (progress != null) { _catalogDb.Remove(progress); } } else { if (progress == null) { var video = await _catalogDb.Videos .FirstOrDefaultAsync(v => v.Id == id); progress = new UserVideoProgress { Video = video, UserId = userId }; await _catalogDb.AddAsync(progress); } progress.Progress = param.Progress; } await _catalogDb.SaveChangesAsync(); }
public async Task <IActionResult> UpdateProgress(Guid id, UpdateProgressParam param) { var userId = User.UserId(); var video = await _catalogService.GetVideoWithProgress(id, userId); if (video == null) { return(NotFound()); } await _catalogService.UpdateProgress(id, param, userId); return(Ok()); }