public void CreatePortfolio(string cmdString) { CreatePortfolioCommand cmd = Newtonsoft.Json.JsonConvert.DeserializeObject <CreatePortfolioCommand>(cmdString); Models.ViewModel.OptimalPortoliosViewModel vm = new Models.ViewModel.OptimalPortoliosViewModel(); string userName = ""; try { var userId = WebApiApplication.hubUsers.FirstOrDefault(x => x.Value == Context.ConnectionId).Key; User user = _userService.GetUser(userId).User; userName = user.Username; vm = _service.CreatePortfolio(user, cmd); } catch (Exception e) { vm.Messages.Add(new Models.App.Message { Text = e.Message, LogLevel = Models.App.LogLevel.Error }); } if (!string.IsNullOrEmpty(userName) && vm.Messages.Count == 0) { CacheHelper.Delete(userName + "portfolio"); } Clients.Caller.update(Newtonsoft.Json.JsonConvert.SerializeObject(vm)); }
}//openSelectedPortfolio #endregion Open portfolio #region Create portfolio public int CreateDefaultPortfolio(User user, CreatePortfolioCommand cmd) { m_objPortfolio.Details = new PortfolioDetails(); m_objPortfolio.Details.Code = getRandomPortfolioCode(); m_objPortfolio.Details.Name = cmd.Name; m_objPortfolio.Details.CurrEquity = (float)cmd.Equity; m_objPortfolio.Details.PreferedRisk = m_objPortfolio.GetRisk(cmd.Risk); //m_objPortfolio.Details.CalcCurrency = user.Currency.CurrencyId; m_objPortfolio.Details.DateCreated = DateTime.Now; m_objPortfolio.Details.DateEdited = DateTime.Now; m_objPortfolio.Details.Equity = (float)cmd.Equity; //m_objPortfolio.Details.MaxSecs = user.Licence.Service.SecsPerPort; m_objPortfolio.Details.CalcType = cmd.CalcType; m_objPortfolio.Details.LastOptimization = DateTime.Now; m_objPortfolio.Details.UserID = user.UserID; m_objPortfolio.Details.CurrentStDev = cmd.Risk; m_objPortfolio.Details.isManual = cmd.Securities.Count > 0; var port = AutoMapper.Mapper.Map <Entities.dbo.Portfolio>(m_objPortfolio.Details); m_objPortfolio.Details.ID = port.idPortfolio; //LR on 13_09_18 cmd.Exchanges = cmd.Exchanges != null && cmd.Exchanges.Count > 0 && cmd.Exchanges.Count <= user.Licence.Stocks.Count ? cmd.Exchanges : user.Licence.Stocks.Select(t => t.id).ToList(); repository.Execute(session => { port.CalcCurrency = user.Licence.Stocks.Where(x => cmd.Exchanges.Contains(x.id)).OrderBy(s => s.CurrencyRank).FirstOrDefault().Currency; session.SaveOrUpdate(port); }); return(port.idPortfolio); }
public async Task <ActionResult <Portfolio> > CreateAsync([FromBody] CreatePortfolioCommand createPortfolioCommand) { var userId = User.GetUserId(); var newPortfolio = await _portfolioRepository.CreatePortfolio(userId, createPortfolioCommand.Name); return(Ok(newPortfolio)); }
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); }
private void GetAsyncResponse(User user, CreatePortfolioCommand cmd, HttpContext context) { HttpContext.Current = new HttpContext(context.Request, context.Response); service = WebApiApplication.Container.Resolve <IPortfolioService>(); var vm = service.CreatePortfolio(user, cmd); WebApiApplication.Container.Release(service); //CacheHelper.Delete(user.Username + "portfolio"); this.Hub.Clients.Client(WebApiApplication.hubUsers[user.UserID]).update(Newtonsoft.Json.JsonConvert.SerializeObject(vm)); }
public IHttpActionResult Post(CreatePortfolioCommand cmd) { if (!WebApiApplication.isComplete) { return(Ok(new BaseViewModel() { Messages = new List <Models.App.Message>() { new Models.App.Message { Text = Messages.SecuritiesAreLoading, LogLevel = Models.App.LogLevel.Info } } })); } if (user.Licence.ExpiryDate < DateTime.Today) { return(Ok(new BaseViewModel { Messages = new List <Models.App.Message>() { new Models.App.Message { Text = Messages.LicenseExpired, LogLevel = Models.App.LogLevel.Error } } })); } //var res = service.CreatePortfolio(user, cmd); //return Ok(res); HttpContext context = HttpContext.Current; var vm = service.IsMaxPortfolioExceeded(user); vm.Messages.AddRange(service.IsPortfolioExists(cmd.Name, user.UserID).Messages); if (vm.Messages.Count == 0) { Task t = new Task(delegate { GetAsyncResponse(user, cmd, context); }); t.Start(); return(Ok(new { Message = "Your portfolio is being created, you will be notified when the portfolio is ready." })); } return(Ok(new { Message = vm.Messages[0].Text })); }
public async Task <IActionResult> PostAsync([FromBody] CreatePortfolioCommand command) { var commandResult = await _mediator.Send(command); return(Response(commandResult)); }