示例#1
0
        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));
        }