Exemplo n.º 1
0
        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);
        }