internal object PrepareToSend(ChangingTtbpt.Changeset changeset, IDataManager manager, Aims.Core.SecurityRepository securityRepository, ManagingBaskets.BasketRepository basketRepository, String ttName, String portfolioName) { var result = new List <String>(); if (changeset != null) { var date = DateTime.Now; foreach (var change in changeset.Changes) { var resolver = new Mail_IChangeResolver(this, manager, securityRepository, basketRepository, result, changeset.Username, date, ttName, portfolioName); change.Accept(resolver); } } return(result); }
public RootModel DeserializeRoot( JsonReader reader, SecurityRepository securityRepository, ManagingTargetingTypes.TargetingTypeGroupRepository targetingTypeGroupRepository, ManagingBaskets.BasketRepository basketRepository, PortfolioRepository portfolioRepository, RepositoryManager repositoryManager, IOnDemand <IDataManager> ondemandManager ) { var latestBaseChangeset = reader.Read(JsonNames.LatestBaseChangeset, delegate { return(this.DeserializeLatestBaseChangeset(reader)); }); var latestPortfolioTargetChangeset = reader.Read(JsonNames.LatestPortfolioTargetChangeset, delegate { return(this.DeserializeLatestPortfolioTargetChangeset(reader)); }); var targetingTypeGroupId = reader.ReadAsInt32(JsonNames.TargetingTypeGroupId); var targetingTypeGroup = targetingTypeGroupRepository.GetTargetingTypeGroup(targetingTypeGroupId); var basketId = reader.ReadAsInt32(JsonNames.BasketId); var basket = basketRepository.GetBasket(basketId); var benchmarkDate = reader.ReadAsDatetime(JsonNames.BenchmarkDate); var securityModels = reader.ReadArray("securities", delegate { var securityModel = this.DeserializeSecurity( reader, securityRepository, portfolioRepository ); return(securityModel); }).ToList(); // adding a new security if any var securityIdTobeAddedOpt = reader.ReadAsNullableString(JsonNames.SecurityIdTobeAdded); if (securityIdTobeAddedOpt != null) { var broadGlobalActivePortfolios = targetingTypeGroup.GetBgaPortfolios(); var security = securityRepository.GetSecurity(securityIdTobeAddedOpt); var baseExpression = this.modelBuilder.CreateBaseExpression(); var benchmarkExpression = this.modelBuilder.CreateBenchmarkExpression(); var baseActiveExpression = this.modelBuilder.CreateBaseActiveExpression(baseExpression, benchmarkExpression); var securityModel = new SecurityModel( security, baseExpression, benchmarkExpression, broadGlobalActivePortfolios.Select(bgaPortfolio => new PortfolioTargetModel( bgaPortfolio, this.modelBuilder.CreatePortfolioTargetExpression(bgaPortfolio.Name) )).ToArray(), baseActiveExpression ); if (!String.IsNullOrWhiteSpace(targetingTypeGroup.BenchmarkIdOpt)) { var benchmarkRepository = this.repositoryManager.ClaimBenchmarkRepository(ondemandManager, benchmarkDate); this.benchmarkInitializer.InitializeSecurity(basket, targetingTypeGroup.BenchmarkIdOpt, securityModel, benchmarkRepository); } securityModels.Add(securityModel); } var portfolios = reader.ReadArray(JsonNames.Portfolios, delegate { var portfolioId = reader.ReadAsString(JsonNames.Id); var portfolio = portfolioRepository.GetBroadGlobalActivePortfolio(portfolioId); var portfolioTargetTotalExpression = this.modelBuilder.CreatePortfolioTargetTotalExpression( portfolio, securityModels ); return(new PortfolioModel( portfolio, portfolioTargetTotalExpression )); }); var baseTotalExpression = this.modelBuilder.CreateBaseTotalExpression(securityModels); var benchmarkTotalExpression = this.modelBuilder.CreateBenchmarkTotalExpression(securityModels); var baseActiveTotalExpression = this.modelBuilder.CreateBaseActiveTotalExpression(securityModels); //var targetingTypeGroup = targetingTypeGroupRepository.Get var core = new CoreModel( targetingTypeGroup, basket, portfolios, securityModels, baseTotalExpression, benchmarkTotalExpression, baseActiveTotalExpression ); var result = new RootModel( latestBaseChangeset, latestPortfolioTargetChangeset, core, benchmarkDate ); return(result); }