public ActionResult ListTradeSharpUsersAjax()
        {
            List <TerminalUser> userList;
            var coordsArray = geoCoordsDefault.ToDoubleArrayUniform();
            var defaultLat  = coordsArray.Length == 2 ? coordsArray[0] : 56.86;
            var defaultLon  = coordsArray.Length == 2 ? coordsArray[1] : 35.908;

            // получить данные из БД
            var registredUsers = GetRegistrationData();

            // получить данные от сервиса WatchService
            try
            {
                string rawData;
                userList =
                    HttpParameter.DeserializeServerResponse(urlSrv + QueryPtr, null, out rawData, userName, userPwrd)
                    .Cast <TerminalUser>()
                    .ToList();
                userList.ForEach(u => u.IP = regRemovePort.Match(u.IP).Value);
            }
            catch (Exception ex)
            {
                Logger.Error("ListTradeSharpUsersAjax() error", ex);
                userList = new List <TerminalUser>();
            }

            return(Json(new
            {
                Records = userList,
                RegistredUsers = registredUsers,
                defaultLatitude = defaultLat,
                defaultLongitude = defaultLon
            }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult StartStopServiceAjax(string name, bool start)
        {
            var shouldStart = start;

            if (string.IsNullOrEmpty(name))
            {
                return(Json(new
                {
                    result = Resource.ErrorMessage
                }, JsonRequestBehavior.AllowGet));
            }

            // отправить запрос на останов сервиса
            var result  = Resource.ErrorMessageServer;
            var request = new TradeSharpServiceStartStop
            {
                ShouldStart = shouldStart,
                SrvName     = HttpUtility.UrlDecode(name.Trim())
            };

            try
            {
                string rawData;
                var    procList =
                    HttpParameter.DeserializeServerResponse(urlWatchSrv + QueryPtr, new List <HttpParameter> {
                    request
                },
                                                            out rawData, userName, userPwrd).Cast <ExecutionReport>().ToList();
                result = procList.Count > 0 ? (procList[0].IsOk ? "OK" : Resource.ErrorMessage + ": " + procList[0].Comment) :
                         rawData;
                if (string.IsNullOrEmpty(result))
                {
                    result = Resource.ErrorMessageCommon;
                }
            }
            catch (Exception ex)
            {
                Logger.Error("StartStopServiceAjax", ex);
            }
            return(Json(new
            {
                result = result
            }, JsonRequestBehavior.AllowGet));
        }
        public ActionResult ListSystemServicesAjax()
        {
            List <TradeSharpServiceProcess> procList = null;

            // получить данные от сервиса WatchService
            try
            {
                string rawData;
                procList =
                    HttpParameter.DeserializeServerResponse(urlWatchSrv + QueryPtr, null, out rawData, userName, userPwrd)
                    .Cast <TradeSharpServiceProcess>()
                    .ToList();
            }
            catch (Exception ex)
            {
                Logger.Error("ListSystemServicesAjax", ex);
                procList = new List <TradeSharpServiceProcess>();
            }

            return(Json(new
            {
                Records = procList
            }, JsonRequestBehavior.AllowGet));
        }
        public bool AddAccount(AddAccountModel newAccount)
        {
            // В данном методе напрямую с БД не работаем - работаем через прокси
            // Сформированный JSON отправляется на сервер терминала
            const string queryPtr = "/?formatquery=1&register=1";

            var urlSrv   = AppConfig.GetStringParam("Env.TradeSharpServiceUrl", "http://10.5.237.10:8061");
            var userName = AppConfig.GetStringParam("Env.TradeSharpUser", "forexinvest\\asitaev");
            var userPwrd = AppConfig.GetStringParam("Env.TradeSharpPwrd", "AndSit!qa");


            if (newAccount == null)
            {
                Logger.Error("AddAccount. Ошибка добавления аккаунта. Объект модели равен null");
                return(false);
            }

            var newAccountParamList = new List <HttpParameter>
            {
                new RegisterAccountQuery
                {
                    #region быстрая инициализация свойств
                    Balance     = newAccount.AccountBalance,
                    Group       = newAccount.AccountGroup,
                    Currency    = newAccount.AccountCurrency,
                    MaxLeverage = newAccount.AccountMaxLeverage,

                    UserLogin       = newAccount.UserLogin,
                    UserPassword    = newAccount.UserPassword,
                    UserName        = newAccount.UserName,
                    UserSurname     = newAccount.UserSurname,
                    UserPatronym    = newAccount.UserPatronym,
                    UserDescription = newAccount.UserDescription,
                    UserEmail       = newAccount.UserEmail,
                    UserPhone1      = newAccount.UserPhone1,
                    UserPhone2      = newAccount.UserPhone2,
                    UserRightsMask  = newAccount.UserRightsMask,
                    UserRoleMask    = newAccount.UserRoleMask,
                    #endregion
                }
            };

            try
            {
                string rawData;

                var result = HttpParameter.DeserializeServerResponse(urlSrv + queryPtr, newAccountParamList, out rawData, userName, userPwrd);
                var report = (ExecutionReport)result.FirstOrDefault(p => p is ExecutionReport);

                if (report != null)
                {
                    if (!report.IsOk)
                    {
                        Logger.Error("Ошибка: " + report.Comment);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error("AddAccount(). Ошибка добавления аккаунта", ex);
            }
            try
            {
                if (newAccount.WalletBalance < 0)
                {
                    Logger.Error("AddAccount(). Не удалось зачислить средства на кошелёк пользователя - невозможно зачислить отридцательную сумму.");
                    return(false);
                }
                using (var ctx = DatabaseContext.Instance.Make())
                {
                    var userId = ctx.PLATFORM_USER.Single(x => x.Login == newAccount.UserLogin);
                    var wallet = ctx.WALLET.Single(w => w.User == userId.ID);
                    wallet.Balance = (decimal)newAccount.AccountBalance;
                    ctx.SaveChanges();
                }
                return(true);
            }
            catch (Exception ex)
            {
                Logger.Error("AddAccount() - не удалось зачислить средства на кошелёк пользователя", ex);
            }
            return(false);
        }