public async Task <IWriterResult> ChangeUserPool(string userId, ChangePoolModel model) { var currentUser = new Guid(userId); using (var context = PoolDataContextFactory.CreateContext()) { var pool = await PoolReader.GetPool(model.PoolId).ConfigureAwait(false); if (pool.Status != PoolStatus.OK) { return(new WriterResult(false, $"Pool #{model.PoolId} not found.")); } var userWorkers = await context.Worker.Where(x => x.UserId == currentUser && x.AlgoType == pool.AlgoType && x.IsEnabled).ToListNoLockAsync().ConfigureAwait(false); foreach (var worker in userWorkers) { if (model.AllWorkers || model.SelectedWorkers.Contains(worker.Id)) { worker.TargetPool = pool.Symbol; } } await context.SaveChangesAsync().ConfigureAwait(false); var message = model.AllWorkers ? $"Successfully moved all workers to the {pool.Name}({pool.Symbol}) pool." : $"Successfully moved selected workers to the {pool.Name}({pool.Symbol}) pool."; return(new WriterResult(true, message)); } }
public async Task <ActionResult> ChangeUserPool(ChangePoolModel model) { if (!ModelState.IsValid) { return(await ChangeUserPool(model.PoolId)); } var result = await MineshaftWriter.ChangeUserPool(User.Identity.GetUserId(), model); if (!ModelState.IsWriterResultValid(result)) { return(View("ChangePoolModal", model)); } return(CloseModal(result)); }