Example #1
0
        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));
        }
Example #2
0
 /// <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);
 }