public string SubscribeOnPortfolioOnNewAccount(TopPortfolioItem newTopPortfolio)
        {
            var accountRepository = DependencyResolver.Current.GetService <IAccountRepository>();

            string errorMessage;

            if (!accountRepository.AddAccount(newTopPortfolio.AddAccountModel))
            {
                errorMessage = Resource.ErrorMessageNotCreateAccountForTopPortfolio + " " + newTopPortfolio.AddAccountModel.UserName;
                Logger.Error("SubscribeOnPortfolioOnNewAccount() - " + errorMessage);
                return(errorMessage);
            }

            newTopPortfolio.ManagedAccount = accountRepository.GetAccountId(newTopPortfolio.AddAccountModel.UserLogin);

            var topPortfolio = AddTopPortfolio(newTopPortfolio);

            if (topPortfolio == null)
            {
                errorMessage = Resource.ErrorMessageTopPortfolioUnableAdd;
                Logger.Error(errorMessage);
                return(errorMessage);
            }

            Logger.Info("Новый портфель роботов создан");
            try
            {
                var proxy  = new TradeSharpServerTrade(EmptyTradeSharpCallbackReceiver.Instance).proxy;
                var status = proxy.SubscribeOnPortfolio(ProtectedOperationContext.MakeServerSideContext(),
                                                        newTopPortfolio.AddAccountModel.UserLogin, topPortfolio, null, Utils.GetDefaultPortfolioTradeSettings());
                if (status != RequestStatus.OK)
                {
                    errorMessage = Resource.ErrorMessageUnableSignAccount;
                    Logger.Error(errorMessage);
                    return(errorMessage);
                }
                return(string.Empty);
            }
            catch (Exception ex)
            {
                errorMessage = Resource.ErrorMessageUnableSignAccount + ": " + ex.Message;
                Logger.Error("AddTopPortfolio", ex);
            }
            return(errorMessage);
        }
 public bool SaveTopPortfolioChanges(TopPortfolioItem topPortfolioItem)
 {
     try
     {
         using (var ctx = DatabaseContext.Instance.Make())
         {
             var undecoratePortfolio = ctx.TOP_PORTFOLIO.Single(a => a.Id == topPortfolioItem.Id);
             LinqToEntity.UndecoratePortfolio(undecoratePortfolio, topPortfolioItem);
             ctx.SaveChanges();
             return(true);
         }
     }
     catch (Exception ex)
     {
         Logger.Error(
             String.Format("Не удалось сохранить изменения в портфеле роботов {0}", topPortfolioItem.Id), ex);
     }
     return(false);
 }
        public ActionResult AddTopPortfolio(string message, bool?createNewAccount)
        {
            FillDropDownListForAccountView();
            if (!string.IsNullOrEmpty(message))
            {
                ResultMessage = message;
            }

            var listHostAccount = accountRepository.GetAllAccounts();

            if (listHostAccount != null)
            {
                ViewBag.listHostAccount = listHostAccount;
                var topPortfolioItem = new TopPortfolioItem();
                if (createNewAccount.HasValue)
                {
                    topPortfolioItem.CreateNewAccount = createNewAccount.Value;
                }
                return(View("TopPortfoliosAdd", topPortfolioItem));
            }
            return(RedirectToAction("TopPortfolios", new { message = Resource.ErrorMessageUnableRetrieveServerListPortfolios }));
        }