Example #1
0
        public OptimalPortoliosViewModel CreatePortfolio(User user, CreatePortfolioCommand cmd)
        {
            if (cmd.CalcType == enumEfCalculationType.Custom && cmd.Exchanges.Count < 1)
            {
                for (int i = 0; i < user.Licence.Stocks.Count; i++)
                {
                    cmd.Exchanges.Add(Convert.ToInt32(user.Licence.Stocks[i].id));
                }
            }

            OptimalPortoliosViewModel vm = new OptimalPortoliosViewModel();
            var portID = 0;
            var count  = cPortHandler.GetPortfolioCount(user.UserID);

            if (count < user.Licence.Service.Iportfolios)
            {
                portID = cPortHandler.CreateDefaultPortfolio(user, cmd);
            }
            else
            {
                vm.Messages.Add(new Message {
                    LogLevel = LogLevel.Error, Text = "You've exceeded the number of portfolios you can create. Please delete any unwanted portfolios"
                });
            }
            if (portID > 0)
            {
                vm = opService.GetPortfolioOptimazation(user, new Models.Queries.OptimazationQuery
                {
                    CalcType   = cmd.CalcType,
                    PortID     = portID,
                    Securities = cmd.Securities,
                    Exchanges  = cmd.Exchanges,
                    Risk       = cmd.Risk //LR on 18/07/18
                });
                if (vm.Messages.Count == 0)
                {
                    cPortHandler.SelectedPortfolio.Details.LastOptimization = DateTime.Today;
                    cPortHandler.SelectedPortfolio.Details.SecsNum          = vm.Portfolios[vm.PortNumA].Securities.Count;
                    cPortHandler.SelectedPortfolio.Details.CurrentStDev     = vm.Portfolios[vm.PortNumA].Risk;
                    UpdatePortfolioCommand updCmd = new UpdatePortfolioCommand
                    {
                        CalcType   = cPortHandler.SelectedPortfolio.Details.CalcType,
                        Equity     = cmd.Equity,
                        Risk       = vm.Portfolios[vm.PortNumA].Risk,
                        PortID     = portID,
                        Securities = vm.Portfolios[vm.PortNumA].Securities
                    };
                    cPortHandler.UpdatePortfolio(updCmd);
                }
                else
                {
                    cPortHandler.DeletePortfolio(portID);
                }
            }

            return(vm);
        }