public async Task <IWriterResult> UpdateWorkerPool(string userId, PoolWorkerUpdatePoolModel model)
        {
            var currentUserId = new Guid(userId);

            using (var context = PoolDataContextFactory.CreateContext())
            {
                var worker =
                    await
                    context.Worker.Where(w => w.Id == model.Id && w.UserId == currentUserId)
                    .FirstOrDefaultNoLockAsync()
                    .ConfigureAwait(false);

                if (worker == null)
                {
                    return(new WriterResult(false, "Worker '{0}' not found.", model.Name));
                }

                worker.TargetPool   = model.TargetPool;
                worker.IsAutoSwitch = false;
                await context.SaveChangesAsync().ConfigureAwait(false);

                await CacheService.InvalidateAsync(CacheKey.PoolWorkers(userId)).ConfigureAwait(false);

                return(new WriterResult(true, $"Successfully changed pool for worker '{worker.Name}'"));
            }
        }
Пример #2
0
        public async Task <ActionResult> UpdateWorkerPool(PoolWorkerUpdatePoolModel model)
        {
            if (!ModelState.IsValid)
            {
                var pools = await PoolReader.GetPools();

                model.Pools = pools.Where(x => x.AlgoType == model.AlgoType && (x.Status == PoolStatus.OK || x.Status == PoolStatus.Expiring)).OrderBy(x => x.Symbol).ToList();
                return(View("UpdateWorkerPoolModal", model));
            }

            var result = await PoolWorkerWriter.UpdateWorkerPool(User.Identity.GetUserId(), model);

            if (!ModelState.IsWriterResultValid(result))
            {
                return(View("UpdateWorkerPoolModal", model));
            }

            return(CloseModal(result));
        }