public async Task <IActionResult> UpdateProgress(int id, [FromBody] ExperimentProgress progress) { var userId = GetUserId(); var exper = await _db.Experiments.FindAsync(id); if (exper == null || exper.OwnerId != userId) { return(new NotFoundResult()); } exper.Total = progress.Total; exper.Progress = progress.Progress; exper.LastProgress = DateTime.Now.ToUniversalTime(); await _db.SaveChangesAsync(); await SendProgress(exper.Id, progress); return(new JsonResult(progress)); }
/// <summary> /// Send progress to all signalR clients watching experiment /// </summary> /// <param name="experimentId"></param> /// <param name="progress"></param> /// <returns></returns> protected async Task SendProgress(int experimentId, ExperimentProgress progress) { await _hub.Clients.Group($"exper-{experimentId}").SendAsync("UpdateProgress", experimentId, progress); }