示例#1
0
        public void AddOrderTest(int OrderNumber, string CustomerName, string State, decimal TaxRate, string ProductType, decimal Area, decimal CostPerSquareFoot, decimal LaborCostPerSquareFoot, decimal MaterialCost, decimal LaborCost, decimal Tax, decimal Total, string path)
        {
            DataManager manager   = DataManagerFactory.Create();
            DateTime    OrderDate = new DateTime(2020, 6, 1);

            FileLookupRequest request = manager.FileLookup(OrderDate);

            Assert.AreEqual(path, request.path);
            Assert.IsFalse(request.success);
            Assert.AreEqual(null, request.orders);

            Order o = new Order();

            o.OrderNumber            = OrderNumber;
            o.CustomerName           = CustomerName;
            o.State                  = State;
            o.TaxRate                = TaxRate;
            o.ProductType            = ProductType;
            o.Area                   = Area;
            o.CostPerSquareFoot      = CostPerSquareFoot;
            o.LaborCostPerSquareFoot = LaborCostPerSquareFoot;
            o.MaterialCost           = MaterialCost;
            o.LaborCost              = LaborCost;
            o.Tax   = Tax;
            o.Total = Total;

            manager.FileSave(o, request.path);

            request = manager.FileLookup(OrderDate);

            Assert.IsTrue(request.success);
            Assert.AreEqual(1, request.orders.Count);
            Assert.AreEqual(CustomerName, request.orders[0].CustomerName);
            Assert.AreEqual(Total, request.orders[0].Total);
        }
示例#2
0
        static void Main(string[] args)
        {
            // TODO: перенести в тесты.
            string query = "at";
            //query = Console.ReadLine();

            // TODO: Реализовать заполнение через фабрику.
            var dataManagers = new List <IDataManager>();

            //DataManagerFactory dataManagerFactory = new DataManagerFactory(); // Заменил на статический класс

            // TODO: Реализовать перебор DataManagerType
            //foreach(var i in DataManagerType)
            {
                dataManagers.Add(DataManagerFactory.CreateDataManager(DataManagerType.Book));
                dataManagers.Add(DataManagerFactory.CreateDataManager(DataManagerType.Book));
                dataManagers.Add(DataManagerFactory.CreateDataManager(DataManagerType.Book));
                dataManagers.Add(DataManagerFactory.CreateDataManager(DataManagerType.Book));
            }

            foreach (DataManager dataManager in dataManagers)
            {
                dataManager.Search(query);
            }

            Console.ReadLine();
        }
示例#3
0
        private void FetchTurn(int positionId, Action <string> callback)
        {
            DataManager <PositionTurn> turnDM = DataManagerFactory.GetManager <PositionTurn> ();
            TurnRequest request = new TurnRequest(User.Id, User.Code, positionId);

            request.Get((results, ex) => {
                if (results == null)
                {
                    callback("Not found");
                }
                else
                {
                    IEnumerator <PositionTurn> i = results.GetEnumerator();
                    if (i.MoveNext())
                    {
                        PositionTurn pt = i.Current;
                        turnDM.SaveItem(pt);
                        callback(pt.Content);
                    }
                    else
                    {
                        callback("Not Found");
                    }
                }
            });
        }
        public void Execute()
        {
            DataManager repository = DataManagerFactory.Create();

            Console.Clear();
            DateTime targetDate = ConsoleIO.GetDateTime("Enter the date of the order you'd like to remove:");

            if (!repository.Orders.ContainsKey(targetDate))
            {
                Console.WriteLine($"No orders were found on {targetDate.ToShortDateString()}");
                Console.Write("Press any key to return to main menu...");
                Console.ReadKey();
                return;
            }

            int orderNumber            = ConsoleIO.GetInteger("Enter the order number of the order to remove:");
            OrderLookupResponse result = repository.LookupOrder(targetDate, orderNumber);

            if (result.Success)
            {
                Console.WriteLine();
                ConsoleIO.DisplayOrderDetails(result.Order);
                if (ConsoleIO.GetBool("Would you like to delete this order?", "Y", "N", false))
                {
                    repository.RemoveOrder(targetDate, orderNumber);
                }
            }
            else
            {
                Console.WriteLine(result.Message);
                Console.Write("Press any key to return to main menu...");
                Console.ReadKey();
            }
        }
示例#5
0
        public void Test()
        {
            //var connectionString = "Data Source=lonweb1t.ashmore.local;Initial Catalog=AIMS_Data_QA;Persist Security Info=True;User ID=WPSuperUser;Password=Password1;MultipleActiveResultSets=True";
            var connectionString   = "Data Source=localhost\\SQLEXPRESS;Initial Catalog=Aims;Integrated Security=True";
            var connectionFactory  = new SqlConnectionFactory(connectionString);
            var dataManagerFactory = new DataManagerFactory();


            var monitor = new Monitor();

            var countryRepositoryStorage = new InMemoryStorage <CountryRepository>();
            var countryManager           = new CountryManager(countryRepositoryStorage);
            var securityStorage          = new InMemoryStorage <SecurityRepository>();
            var securityManager          = new SecurityManager(securityStorage, monitor);

            var issuerRepositoryStorage = new InMemoryStorage <IssuerRepository>();
            var issuerManager           = new IssuerManager(monitor, issuerRepositoryStorage);

            var repositoryManager = new RepositoryManager(monitor, countryManager, securityManager, null, issuerManager);

            var modelBuilder = new ModelBuilder();
            var manager      = new Core.ModelManager(connectionFactory, dataManagerFactory, repositoryManager, modelBuilder);

            var commonSerializer = new Aims.Data.Server.Serializer();
            var serializer       = new Serializer(commonSerializer);

            var deserializer = new Deserializer(connectionFactory, dataManagerFactory, repositoryManager);
            var facade       = new Facade(manager, commonSerializer, serializer, deserializer, connectionFactory, dataManagerFactory, repositoryManager);

            //ConfigurationManager.ConnectionStrings.Add(new ConnectionStringSettings("Aims", @"Data Source=localhost\SQLEXPRESS;Initial Catalog=Aims;Integrated Security=True"));
            //ConfigurationManager.ConnectionStrings.Add(new ConnectionStringSettings("AimsEntities", @"metadata=res://*/AimsModel.csdl|res://*/AimsModel.ssdl|res://*/AimsModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=lonweb1t.ashmore.local;Initial Catalog=AIMS_Data_QA;Persist Security Info=True;User ID=WPSuperUser;Password=Password1;MultipleActiveResultSets=True'"));
            //var found = facade.GetIssuerSecurities("SB", 1000, "RUSBERBPN __");
            var model = facade.GetRootModel("RUSBERBPN");
            //facade.GetIssuerSharesBySecurityShortName("RUSBERBPN");
        }
示例#6
0
        static void Main(string[] args)
        {
            new ApplicationContext(new FileLog());

            ILogger logger = LogManager.GetLogger(typeof(Program));

            logger.Info("DBIndexer - start");

            try
            {
                Console.WriteLine();
                Console.Write("File ready? [y/n] : ");

                string line;

                do
                {
                    line = Console.ReadLine();
                } while (line != "y" && line != "n");

                ConnectionStringHolder.Initialize(@"Server=MATESC-PC\SQLSERVER2012;Initial Catalog=StoreKeeper;User ID=StoreKeeperUser;Password=Welcome1;Integrated Security=false;MultipleActiveResultSets=True");

                IDataManager dataManager = DataManagerFactory.CreateDataManager();
                dataManager.IndexDatabase(line == "y");
            }
            catch (Exception ex)
            {
                logger.Error(ex);
            }

            logger.Info("DBIndexer - end");
            Console.WriteLine("Press ENTER to continue ...");
            Console.ReadLine();
        }
示例#7
0
 public void RunReport(ReportModel reportModel, DataTable dataTable, ReportParameters parameters)
 {
     if (reportModel == null)
     {
         throw new ArgumentNullException("reportModel");
     }
     if (dataTable == null)
     {
         throw new ArgumentNullException("dataTable");
     }
     RunReport(reportModel, DataManagerFactory.CreateDataManager(reportModel, dataTable));
 }
示例#8
0
        public void RunReport(ReportModel reportModel, DataTable dataTable, ReportParameters parameters)
        {
            if (reportModel == null)
            {
                throw new ArgumentNullException("reportModel");
            }
            if (dataTable == null)
            {
                throw new ArgumentNullException("dataTable");
            }
//			ReportEngine.CheckForParameters(reportModel, parameters);
            IDataManager dataManager = DataManagerFactory.CreateDataManager(reportModel, dataTable);

            RunReport(reportModel, dataManager);
        }
示例#9
0
        public void RunReport(ReportModel reportModel, System.Collections.IList dataSource, ReportParameters parameters)
        {
            if (reportModel == null)
            {
                throw new ArgumentNullException("reportModel");
            }
            if (dataSource == null)
            {
                throw new ArgumentNullException("dataSource");
            }
            ReportEngine.CheckForParameters(reportModel, parameters);
            IDataManager dataManager = DataManagerFactory.CreateDataManager(reportModel, dataSource);

            RunReport(reportModel, dataManager);
        }
示例#10
0
        public void RemoveOrderTest()
        {
            DataManager       manager   = DataManagerFactory.Create();
            DateTime          OrderDate = new DateTime(2020, 6, 1);
            FileLookupRequest request   = manager.FileLookup(OrderDate);

            Assert.AreEqual(1, request.orders.Count);

            Order o = request.orders[0];

            manager.FileRemove(request.orders, o, request.path);

            request = manager.FileLookup(OrderDate);
            Assert.AreEqual(null, request.orders);
        }
        public void Execute()
        {
            DataManager       manager   = DataManagerFactory.Create();
            DateTime          OrderDate = ConsoleIO.RequestAndValidateDate("edit");
            FileLookupRequest request   = manager.FileLookup(OrderDate);

            if (!request.success)
            {
                Console.WriteLine("Error: No orders found for that date.");
                Console.WriteLine();
                return;
            }

            string path = request.path;

            int OrderNumber = ConsoleIO.RequestAndValidateOrderNumber();

            List <Order> orders = request.orders;
            Order        o;

            foreach (Order OrderToCheck in orders)
            {
                if (OrderToCheck.OrderNumber == OrderNumber)
                {
                    o = OrderToCheck;
                    ConsoleIO.PrintOrder(o, OrderDate);
                    EditOrderInfo(o);
                    ConsoleIO.PrintOrder(o, OrderDate);
                    if (ConsoleIO.ConfirmEditOrRemoveOrder("save"))
                    {
                        manager.FileSave(o, OrderDate.ToString("MMddyyyy"), path);
                        Console.WriteLine("Order saved.");
                        return;
                    }
                    else
                    {
                        Console.WriteLine("Order not saved.");
                        return;
                    }
                }
                else
                {
                    continue;
                }
            }
            Console.WriteLine("There is no order with that order number.");
        }
示例#12
0
        public void Execute()
        {
            DataManager repository = DataManagerFactory.Create();

            Console.Clear();

            // date
            DateTime date = ConsoleIO.GetDateTime("Order date (must be a future date):", false);

            Console.WriteLine();

            // name
            Console.WriteLine("Customer name:");
            Console.Write("> ");
            string name = Console.ReadLine();

            Console.WriteLine();

            // state
            State state = GetStateFrom(repository.States);

            if (state == null)
            {
                return;
            }
            Console.WriteLine();

            // product
            Product product = GetProductsFrom(repository.Products);

            Console.WriteLine();

            // area
            decimal area = ConsoleIO.GetDecimal("Floor area (square feet):");

            Console.WriteLine();

            // summary
            Console.Clear();
            Order order = new Order(name, state, product, area);

            ConsoleIO.DisplayOrderDetails(order);
            if (ConsoleIO.GetBool("Would you like to save this order?", "Y", "N", false))
            {
                repository.AddOrder(date, order);
            }
        }
        private static IContainer InitContainer()
        {
            var builder = new ContainerBuilder();

            builder.RegisterInstance(StubFactory.GetCurrentProvider()).SingleInstance();
            builder.RegisterInstance(StubFactory.GetDbConfig()).SingleInstance();
            builder.Register(c =>
            {
                var dbConfig = c.Resolve <IDbConfig>();
                return(new NHibernateSessionSource(() => DataManagerFactory.CreateSessionFactory(dbConfig)));
            }).As <IConnectionSource <ISession> >().SingleInstance();

            builder.RegisterType <QueueRepository>().As <IQueueRepository>().As <IClearable>().SingleInstance();
            builder.RegisterType <DbQueueService>().As <IQueueService>().SingleInstance();

            return(builder.Build());
        }
示例#14
0
 public void RunReport(ReportModel reportModel, ReportParameters parameters)
 {
     if (reportModel == null)
     {
         throw new ArgumentNullException("reportModel");
     }
     Pages.Clear();
     if (reportModel.DataModel == GlobalEnums.PushPullModel.FormSheet)
     {
         RunFormSheet(reportModel);
     }
     else
     {
         ReportEngine.CheckForParameters(reportModel, parameters);
         var dataManager = DataManagerFactory.CreateDataManager(reportModel, parameters);
         RunReport(reportModel, dataManager);
     }
 }
示例#15
0
        public void EditOrderTest()
        {
            DataManager       manager   = DataManagerFactory.Create();
            DateTime          OrderDate = new DateTime(2020, 6, 1);
            FileLookupRequest request   = manager.FileLookup(OrderDate);

            Assert.AreEqual(1, request.orders.Count);
            Assert.AreEqual("Andrew", request.orders[0].CustomerName);

            Order o = request.orders[0];

            o.CustomerName = "Galvin";

            manager.FileSave(o, request.path);

            request = manager.FileLookup(OrderDate);
            Assert.AreEqual(1, request.orders.Count);
            Assert.AreEqual("Galvin", request.orders[0].CustomerName);
        }
示例#16
0
        public void RunReport(ReportModel reportModel, ReportParameters parameters)
        {
            if (reportModel == null)
            {
                throw new ArgumentNullException("reportModel");
            }
            System.Console.WriteLine("RunReport");
            this.SetupViewer(reportModel);

            if (reportModel.DataModel == GlobalEnums.PushPullModel.FormSheet)
            {
                RunFormSheet(reportModel);
            }
            else
            {
                ReportEngine.CheckForParameters(reportModel, parameters);
                this.dataManager = DataManagerFactory.CreateDataManager(reportModel, parameters);
                RunDataReport(reportModel, dataManager);
            }
        }
示例#17
0
        public void RunReport(ReportModel reportModel, DataTable dataTable, ReportParameters parameters)
        {
            if (reportModel == null)
            {
                throw new ArgumentNullException("reportModel");
            }
            if (dataTable == null)
            {
                throw new ArgumentNullException("dataTable");
            }
            ReportEngine.CheckForParameters(reportModel, parameters);
            IDataManager   dataManager   = DataManagerFactory.CreateDataManager(reportModel, dataTable);
            IReportCreator reportCreator = DataPageBuilder.CreateInstance(reportModel, dataManager);

//			reportCreator.SectionRendering += new EventHandler<SectionRenderEventArgs>(PushPrinting);
//			reportCreator.GroupHeaderRendering += new EventHandler<GroupHeaderEventArgs>(GroupHeaderRendering);
//			reportCreator.GroupFooterRendering += GroupFooterRendering;
//
//			reportCreator.RowRendering += new EventHandler<RowRenderEventArgs>(RowRendering);
            reportCreator.BuildExportList();
        }
示例#18
0
        public static void Start()
        {
            while (true)
            {
                Console.Clear();
                var s = DataManagerFactory.Create().Orders;
                Console.WriteLine("Flooring Program");
                Console.WriteLine();
                Console.WriteLine("1. Display Orders");
                Console.WriteLine("2. Add an Order");
                Console.WriteLine("3. Edit an Order");
                Console.WriteLine("4. Remove an Order");
                Console.WriteLine("5. Quit");
                Console.Write("> ");

                string input = Console.ReadLine();

                switch (input)
                {
                case "1":
                    new DisplayOrdersView().Execute();
                    break;

                case "2":
                    new AddOrderView().Execute();
                    break;

                case "3":
                    new EditOrderView().Execute();
                    break;

                case "4":
                    new RemoveOrderView().Execute();
                    break;

                case "5":
                    return;
                }
            }
        }
示例#19
0
        public void Execute()
        {
            DataManager manager = DataManagerFactory.Create();

            DateTime OrderDate = ConsoleIO.RequestAndValidateDate("display");

            while (true)
            {
                FileLookupRequest request = manager.FileLookup(OrderDate);
                if (!request.success)
                {
                    Console.WriteLine(request.message);
                    return;
                }
                for (int i = 0; i < request.orders.Count(); i++)
                {
                    ConsoleIO.PrintOrder(request.orders[i], OrderDate);
                }
                Console.WriteLine();
                return;
            }
        }
示例#20
0
        public void Execute()
        {
            DataManager repository = DataManagerFactory.Create();

            Console.WriteLine();
            Console.WriteLine(DIVIDER);
            foreach (var key in repository.Orders.Keys)
            {
                string dateString = key.ToShortDateString();
                Console.WriteLine($"{{0, {(DIVIDER.Length / 2) + (dateString.Length / 2)}}}", dateString);

                var collection = repository.Orders[key];
                foreach (var order in collection)
                {
                    Console.WriteLine(DIVIDER);
                    ConsoleIO.DisplayOrderDetails(order);
                }
                Console.WriteLine(DIVIDER);
            }

            Console.Write("Press any key to continue...");
            Console.ReadKey();
        }
示例#21
0
        /// <summary>
        /// Gets the turn report.
        /// </summary>
        /// <param name="positionId">Position identifier.</param>
        /// <param name="callback">Callback.</param>
        public async void GetTurnReport(int positionId, Action <string> callback)
        {
            DataManager <PositionTurn> turnDM = DataManagerFactory.GetManager <PositionTurn> ();
            PositionTurn pt = await turnDM.GetItem(positionId);

            if (pt == null)
            {
                FetchTurn(positionId, callback);
            }
            else
            {
                await Task.Factory.StartNew(() => {
                    try {
                        string content = Application.DocumentFolder.ReadFile(pt.TurnPath);
                        callback(content);
                        FetchTurn(positionId, callback);
                    }
                    catch {
                        FetchTurn(positionId, callback);
                    }
                });
            }
        }
        public void Execute()
        {
            DataManager repository = DataManagerFactory.Create();

            Console.Clear();
            DateTime targetDate = ConsoleIO.GetDateTime("Enter the date of the order you'd like to edit:");

            if (!repository.Orders.ContainsKey(targetDate))
            {
                Console.WriteLine($"No orders were found on {targetDate.ToShortDateString()}");
                Console.Write("Press any key to return to main menu...");
                Console.ReadKey();
                return;
            }

            int orderNumber            = ConsoleIO.GetInteger("Enter the order number of the order to edit:");
            OrderLookupResponse result = repository.LookupOrder(targetDate, orderNumber);

            if (!result.Success)
            {
                Console.WriteLine(result.Message);
                Console.Write("Press any key to return to main menu...");
                Console.ReadKey();
                return;
            }
            Console.WriteLine();

            // customer name
            Console.WriteLine($"Customer name ({result.Order.CustomerName}):");
            Console.Write("> ");
            string name = Console.ReadLine();

            Console.WriteLine();

            // state
            Console.WriteLine($"State ({result.Order.State}):");
            Console.Write("> ");
            string stateText;
            State  state = null;

            do
            {
                stateText = Console.ReadLine();
                if (stateText != "")
                {
                    state = (from s in repository.States
                             where s.StateAbbreviation == stateText || s.StateName == stateText
                             select s).FirstOrDefault();
                    if (state == null)
                    {
                        Console.WriteLine($"We do not do business in {stateText}.");
                    }
                }
                else
                {
                    state = (from s in repository.States
                             where s.StateAbbreviation == result.Order.State
                             select s).FirstOrDefault();
                }
            }while (state == null);
            Console.WriteLine();

            // product
            Product product = null;

            do
            {
                for (int i = 0; i < repository.Products.Length; i++)
                {
                    Console.WriteLine($"{i + 1})");
                    ConsoleIO.DisplayProductDetails(repository.Products[i]);
                    Console.WriteLine();
                }
                Console.WriteLine($"Enter a product by number ({result.Order.ProductType}):");
                Console.Write("> ");
                if (int.TryParse(Console.ReadLine(), out int selection))
                {
                    if (selection <= repository.Products.Length && selection >= 0)
                    {
                        product = repository.Products[selection - 1];
                    }
                    else
                    {
                        Console.WriteLine($"Invalid selection: {selection}");
                        Console.WriteLine($"Expected a number in the range 1-{repository.Products.Length}");
                    }
                }
                else
                {
                    product = (from p in repository.Products
                               where p.ProductType == result.Order.ProductType
                               select p).FirstOrDefault();
                }
            }while (product == null);
            Console.WriteLine();

            // area
            decimal?area = null;

            do
            {
                Console.WriteLine($"Floor area ({result.Order.Area}):");
                Console.Write("> ");
                string areaText = Console.ReadLine();
                if (areaText == "")
                {
                    area = result.Order.Area;
                }
                else if (decimal.TryParse(areaText, out decimal value))
                {
                    area = value;
                }
            }while (!area.HasValue);
            Console.WriteLine();

            // summary
            Console.Clear();
            Order order = new Order(name == "" ? result.Order.CustomerName : name, state, product, area.Value);

            ConsoleIO.DisplayOrderDetails(order);
            if (ConsoleIO.GetBool("Would you like to save this order?", "Y", "N", false))
            {
                repository.UpdateOrder(order, targetDate, orderNumber);
            }
        }
示例#23
0
 private DataManager <User> GetDataManager()
 {
     return(DataManagerFactory.GetManager <User> ());
 }
示例#24
0
 /// <summary>
 /// Gets the data manager.
 /// </summary>
 /// <returns>The data manager.</returns>
 protected DataManager <T> GetDataManager()
 {
     return(DataManagerFactory.GetManager <T> ());
 }
示例#25
0
        public void Execute()
        {
            DataManager manager = DataManagerFactory.Create();

            while (true)
            {
                DateTime OrderDate = ConsoleIO.RequestAndValidateDate("add");

                if (OrderDate < DateTime.Now)
                {
                    Console.WriteLine("Date must be in the future.");
                    continue;
                }

                Order o = new Order();

                Console.WriteLine("Customer Name?");
                o.CustomerName = Console.ReadLine();

                while (true)
                {
                    Console.WriteLine("State?");
                    string UserState = Console.ReadLine();
                    bool   StateOK   = Controllers.FindStateInTaxFile(o, UserState);
                    if (!StateOK)
                    {
                        continue;
                    }
                    break;
                }

                while (true)
                {
                    ProductTypeRequest productRequest = Controllers.ShowProductTypes();
                    if (!productRequest.success)
                    {
                        continue;
                    }
                    while (true)
                    {
                        if (!GetProductType(o, productRequest.rows))
                        {
                            continue;
                        }
                        break;
                    }
                    break;
                }

                while (true)
                {
                    Console.WriteLine("Area?");
                    string UserArea = Console.ReadLine();
                    bool   AreaOK   = Controllers.CheckUserArea(o, UserArea);
                    if (!AreaOK)
                    {
                        continue;
                    }
                    break;
                }

                Controllers.CalculateRestOfOrder(o);

                ConsoleIO.PrintOrder(o, OrderDate);

                Console.WriteLine("Do you want to add this order? Y/N");
                string AddOrNot = Console.ReadLine().ToUpper();
                if (AddOrNot[0] != 'Y')
                {
                    break;
                }

                FileLookupRequest request = manager.FileLookup(OrderDate);

                if (!request.success)
                {
                    o.OrderNumber = 1;
                    manager.FileSave(o, OrderDate.ToString("MMddyyyy"), request.path);
                    Console.WriteLine($"Order file created for {OrderDate:MM/dd/yyyy}.");
                    break;
                }
                else
                {
                    List <Order> Orders = request.orders;
                    o.OrderNumber = Orders[(Orders.Count() - 1)].OrderNumber + 1;
                    manager.FileSave(o, OrderDate.ToString(), request.path);
                    Console.WriteLine($"Order added to file for {OrderDate:MM/dd/yyyy}.");
                    break;
                }
            }
        }
示例#26
0
 public DvdController()
 {
     _dvdRepository = DataManagerFactory.Create();
 }
        private static GreenField.Targeting.Server.FacadeSettings CreateFacadeSettingsUnsafe(String connectionString, String usersConnectionString, Boolean shouldDropRepositories)
        {
            var infoCopier = new InfoCopier();
            var cache      = MemoryCache.Default;
            var countryRepositoryStorage = new CacheStorage <CountryRepository>(cache);
            var countrySerializer        = new CountryToJsonSerializer();
            var countryManager           = new CountryManager(countryRepositoryStorage);
            var basketRenderer           = new BasketRenderer();
            var securityRepositoryCache  = new CacheStorage <SecurityRepository>(cache);
            var calculationRequester     = new CalculationRequester();
            var monitor            = new Monitor();
            var securitySerializer = new SecurityToJsonSerializer(countrySerializer);
            var securityManager    = new SecurityManager(securityRepositoryCache, monitor);

            IDataManagerFactory      dataManagerFactory      = new DataManagerFactory();
            IUsersDataManagerFactory usersDataManagerFactory = new UsersDataManagerFactory();
            var connectionFactory        = new SqlConnectionFactory(connectionString);
            var usersConnectionFactory   = new SqlConnectionFactory(usersConnectionString);
            var portfolioRepositoryCache = new CacheStorage <PortfolioRepository>(cache);
            var portfolioSerialzer       = new TopDown.Core.ManagingPortfolios.PortfolioToJsonSerializer(securitySerializer);
            var portfolioManager         = new TopDown.Core.ManagingPortfolios.PortfolioManager(
                portfolioRepositoryCache,
                portfolioSerialzer
                );

            var targetingTypeManager = new TargetingTypeManager(
                new TopDown.Core.ManagingTargetingTypes.InfoDeserializer(),
                new CacheStorage <TargetingTypeRepository>(cache),
                new CacheStorage <TargetingTypeGroupRepository>(cache)
                );
            var taxonomyManager = new TaxonomyManager(
                new CacheStorage <TaxonomyRepository>(cache),
                new TopDown.Core.ManagingTaxonomies.InfoDeserializer(
                    new TopDown.Core.ManagingTaxonomies.XmlDeserializer()
                    )
                );

            var basketRepositoryStorage = new CacheStorage <BasketRepository>(cache);
            var basketManager           = new BasketManager(
                basketRepositoryStorage,
                new TopDown.Core.ManagingBaskets.XmlDeserializer(),
                new BasketSecurityRelationshipInvestigator()
                );


            var benchmarkRepositoryStorage = new CacheStorage <BenchmarkRepository>(cache);
            var benchmarkManager           = new BenchmarkManager(benchmarkRepositoryStorage);

            var portfolioSecurityTargetRepositoryCache   = new CacheStorage <TopDown.Core.ManagingPst.PortfolioSecurityTargetRepository>(cache);
            var portfolioSecurityTargetRepositoryManager = new TopDown.Core.ManagingPst.RepositoryManager(
                infoCopier,
                portfolioSecurityTargetRepositoryCache
                );

            var bpstCache   = new CacheStorage <TopDown.Core.ManagingBpst.BasketSecurityPortfolioTargetRepository>(cache);
            var bpstManager = new TopDown.Core.ManagingBpst.BasketSecurityPortfolioTargetRepositoryManager(bpstCache);

            var ttgbsbvrCache   = new CacheStorage <TopDown.Core.ManagingBpst.TargetingTypeGroupBasketSecurityBaseValueRepository>(cache);
            var ttgbsbvrManager = new TopDown.Core.ManagingBpst.TargetingTypeGroupBasketSecurityBaseValueRepositoryManager(ttgbsbvrCache);

            var issuerRepositoryStorage = new CacheStorage <IssuerRepository>(cache);
            var issuerManager           = new IssuerManager(monitor, issuerRepositoryStorage);

            var repositoryManager = new TopDown.Core.RepositoryManager(
                monitor,
                basketManager,
                targetingTypeManager,
                countryManager,
                taxonomyManager,
                securityManager,
                portfolioManager,
                benchmarkManager,
                portfolioSecurityTargetRepositoryManager,
                bpstManager,
                ttgbsbvrManager,
                issuerManager
                );

            if (shouldDropRepositories)
            {
                repositoryManager.DropEverything();
            }

            var validationSerializer   = new TopDown.Core.ValidationIssueToJsonSerializer();
            var expressionSerializer   = new ExpressionToJsonSerializer(validationSerializer);
            var expressionDeserializer = new ExpressionFromJsonDeserializer();
            var defaultBreakdownValues = TopDown.Core.ManagingBpt.DefaultValues.CreateDefaultValues();
            var picker              = new ExpressionPicker();
            var commonParts         = new CommonParts();
            var overlayModelBuilder = new TopDown.Core.Overlaying.ModelBuilder(null, commonParts);
            var overlayManager      = new OverlayManager(overlayModelBuilder);
            var bptModelBuilder     = new TopDown.Core.ManagingBpt.ModelBuilder(
                picker,
                commonParts,
                defaultBreakdownValues,
                overlayModelBuilder
                );

            var globeTraverser             = new GlobeTraverser();
            var taxonomyTraverser          = new TaxonomyTraverser();
            var taxonomyToModelTransformer = new TaxonomyToModelTransformer(picker, bptModelBuilder, globeTraverser);
            var countriesDetector          = new MissingCountriesDetector(
                new UnknownCountryIsoCodesDetector(),
                new TopDown.Core.ManagingTaxonomies.CountryIsoCodesExtractor(taxonomyTraverser),
                new TopDown.Core.Overlaying.CombinedCountryIsoCodesExtractor(new TopDown.Core.Overlaying.CountryIsoCodesExtractor()),
                new TopDown.Core.ManagingBenchmarks.CountryIsoCodesExtractor()
                );
            var modelToTaxonomyTransformer = new ModelToTaxonomyTransformer();
            var bptModelApplier            = new TopDown.Core.ManagingBpt.ModelApplier(
                new TopDown.Core.ManagingBpt.ChangingBt.ChangesetApplier(dataManagerFactory, modelToTaxonomyTransformer),
                new TopDown.Core.ManagingBpt.ChangingBt.ModelToChangesetTransformer(globeTraverser),
                new TopDown.Core.ManagingBpt.ChangingPsto.ChangesetApplier(),
                new TopDown.Core.ManagingBpt.ChangingPsto.ModelToChangesetTransformer(),
                new TopDown.Core.ManagingBpt.ChangingTtbbv.ChangesetApplier(),
                new TopDown.Core.ManagingBpt.ChangingTtbbv.ModelToChangesetTransformer(globeTraverser),
                new TopDown.Core.ManagingBpt.ChangingTtbpt.ChangesetApplier(),
                new TopDown.Core.ManagingBpt.ChangingTtbpt.ModelToChangesetTransformer(globeTraverser),
                new TopDown.Core.ManagingBpt.ModelValidator(globeTraverser),
                dataManagerFactory,
                calculationRequester
                );

            var targetsFlattener  = new TargetsFlattener(infoCopier);
            var bptChangeDetector = new TopDown.Core.ManagingBpt.ModelChangeDetector(
                new TopDown.Core.ManagingBpt.ModelExpressionTraverser(globeTraverser)
                );
            var bptManager = new TopDown.Core.ManagingBpt.ModelManager(
                globeTraverser,
                bptModelBuilder,
                taxonomyToModelTransformer,
                new BaseValueInitializer(globeTraverser),
                new BenchmarkValueInitializer(globeTraverser),
                new OverlayInitializer(globeTraverser, targetsFlattener),
                new PortfolioAdjustmentInitializer(globeTraverser),
                new TopDown.Core.ManagingBpt.ModelToJsonSerializer(expressionSerializer, portfolioSerialzer),
                new TopDown.Core.ManagingBpt.ModelFromJsonDeserializer(
                    picker,
                    bptModelBuilder,
                    globeTraverser,
                    expressionDeserializer
                    ),
                repositoryManager,
                overlayManager,
                countriesDetector,
                bptModelApplier,
                bptChangeDetector
                );

            var pstModelToChangeMapper = new TopDown.Core.ManagingPst.ModelToChangesetTransformer();
            var pstChangeApplier       = new TopDown.Core.ManagingPst.ChangesetApplier();
            var pstModelBuilder        = new TopDown.Core.ManagingPst.ModelBuilder(null, commonParts);
            var pstModelChangeDetector = new TopDown.Core.ManagingPst.ModelChangeDetector(
                new TopDown.Core.ManagingPst.ModelExpressionTraverser()
                );
            var pstModelValidator = new TopDown.Core.ManagingPst.ModelValidator();
            var pstManager        = new PstManager(
                pstChangeApplier,
                pstModelValidator,
                pstModelToChangeMapper,
                new TopDown.Core.ManagingPst.ModelFromJsonDeserializer(
                    pstModelBuilder,
                    expressionDeserializer
                    ),
                pstModelBuilder,
                portfolioSecurityTargetRepositoryManager,
                pstModelChangeDetector,
                dataManagerFactory,
                calculationRequester,
                new TopDown.Core.ManagingPst.ModelToJsonSerializer(expressionSerializer, securitySerializer)
                );


            var portfiolioPickerManager = new ProtfolioPickerManager(
                new TopDown.Core.Gadgets.PortfolioPicker.ModelToJsonSerializer()
                );

            var basketPickerManager = new TopDown.Core.Gadgets.BasketPicker.ModelManager(
                new TopDown.Core.Gadgets.BasketPicker.ModelBuilder(
                    new BasketExtractor(taxonomyTraverser),
                    new BasketRenderer()
                    ),
                new TopDown.Core.Gadgets.BasketPicker.ModelToJsonSerializer()
                );

            var bpstModelBuilder = new TopDown.Core.ManagingBpst.ModelBuilder(
                TopDown.Core.ManagingBpst.DefaultValues.CreateDefaultValues(),
                commonParts
                );
            var bpstBenchmarkInitializer = new TopDown.Core.ManagingBpst.BenchmarkInitializer();
            var bpstModelValidator       = new TopDown.Core.ManagingBpst.ModelValidator();
            var bpstModelChangeDetector  = new TopDown.Core.ManagingBpst.ModelChangeDetector(new TopDown.Core.ManagingBpst.ModelExpressionTraverser());
            var bpstModelManager         = new TopDown.Core.ManagingBpst.ModelManager(
                new TopDown.Core.ManagingBpst.ModelToJsonSerializer(expressionSerializer, securitySerializer),
                bpstModelBuilder,
                new TopDown.Core.ManagingBpst.ModelFromJsonDeserializer(
                    expressionDeserializer,
                    bpstModelBuilder,
                    bpstBenchmarkInitializer
                    ),
                new TopDown.Core.ManagingBpst.ModelApplier(
                    dataManagerFactory,
                    new TopDown.Core.ManagingBpst.ChangingTtgbsbv.ChangesetApplier(),
                    new TopDown.Core.ManagingBpst.ChangingTtgbsbv.ModelToChangesetTransformer(),
                    new TopDown.Core.ManagingBpst.ChangingBpst.PortfolioTargetChangesetApplier(),
                    new TopDown.Core.ManagingBpst.ChangingBpst.ModelToChangesetTransformter(),
                    calculationRequester,
                    bpstModelValidator,
                    repositoryManager
                    ),
                bpstModelValidator,
                bpstBenchmarkInitializer,
                bpstModelChangeDetector,
                repositoryManager
                );

            var validationManager = new ValidationManager(validationSerializer);

            var hopper = new TopDown.Core.ManagingCalculations.Hopper(
                repositoryManager,
                bptManager,
                bpstModelManager,
                basketRenderer
                );

            var commentManager = new TopDown.Core.ManagingComments.CommentManager();
            var facade         = new Facade(
                connectionFactory,
                usersConnectionFactory,
                dataManagerFactory,
                usersDataManagerFactory,
                repositoryManager,
                bptManager,
                picker,
                commonParts,
                pstManager,
                basketManager,
                portfiolioPickerManager,
                basketPickerManager,
                bpstModelManager,
                portfolioManager,
                hopper,
                commentManager
                );


            var serializer    = new Server.Serializer();
            var bgaSerializer = new GreenField.Targeting.Server.BroadGlobalActive.Serializer(
                serializer,
                bptChangeDetector
                );

            var deserializer    = new Server.Deserializer(connectionFactory, dataManagerFactory, repositoryManager);
            var bgaDeserializer = new GreenField.Targeting.Server.BroadGlobalActive.Deserializer(
                deserializer,
                bptModelBuilder,
                globeTraverser
                );

            var btSerializer   = new GreenField.Targeting.Server.BasketTargets.Serializer(serializer, bpstModelChangeDetector);
            var btDeserializer = new GreenField.Targeting.Server.BasketTargets.Deserializer(deserializer, bpstModelBuilder, bpstBenchmarkInitializer);


            var buSerializer   = new GreenField.Targeting.Server.BottomUp.Serializer(serializer, pstModelChangeDetector);
            var buDeserializer = new GreenField.Targeting.Server.BottomUp.Deserializer(deserializer, pstModelBuilder);

            var result = new GreenField.Targeting.Server.FacadeSettings(
                facade,
                serializer,
                bgaSerializer,
                bgaDeserializer,
                btSerializer,
                btDeserializer,
                buSerializer,
                buDeserializer,
                ConfigurationSettings.ShouldDropRepositoriesOnEachReload
                );

            return(result);
        }
示例#28
0
 private static void ConfigureServices(ServiceCollection services)
 {
     services.AddLogging(configure => configure.AddSerilog())
     .AddTransient <Program>();
     services.TryAdd(ServiceDescriptor.Singleton <IDataManager>(provider => DataManagerFactory.CreateFileSystemDataManager()));
 }