コード例 #1
0
        public async Task GetItemAll()
        {
            var unitOfWork  = Substitute.For <IUnitOfWork>();
            var rep         = Substitute.For <IItemRepository>();
            var userContext = new CNCLibUserContext();

            var ctrl = new ItemManager(unitOfWork, rep, userContext, Mapper);

            var itemEntity = new[]
            {
                new ItemEntity {
                    ItemId = 1, Name = "Test1", UserId = userContext.UserId
                }, new ItemEntity {
                    ItemId = 2, Name = "Test2", UserId = userContext.UserId
                }
            };

            rep.GetByUser(userContext.UserId).Returns(itemEntity);

            var all = (await ctrl.GetAll()).ToArray();

            all.Should().HaveCount(2);
            new
            {
                ItemId = 1,
                Name   = "Test1"
            }.Should().BeEquivalentTo(all.FirstOrDefault(), options => options.ExcludingMissingMembers());
        }
コード例 #2
0
        public async Task GetMachinesOne()
        {
            var unitOfWork  = Substitute.For <IUnitOfWork>();
            var rep         = Substitute.For <IMachineRepository>();
            var repC        = Substitute.For <IConfigurationRepository>();
            var userContext = new CNCLibUserContext();

            var ctrl = new MachineManager(unitOfWork, rep, repC, userContext, Mapper);

            var machineEntity = new[]
            {
                new Machine
                {
                    MachineId           = 1,
                    Name                = "Maxi",
                    BufferSize          = 115200,
                    UserId              = userContext.UserId,
                    MachineCommands     = new List <MachineCommand>(),
                    MachineInitCommands = new MachineInitCommand[0]
                }
            };

            rep.GetByUser(userContext.UserId).Returns(machineEntity);

            var machines = (await ctrl.GetAll()).ToArray();

            machines.Length.Should().Be(1);
            machines[0].MachineId.Should().Be(1);
            machines[0].Name.Should().Be("Maxi");
            machines[0].BufferSize.Should().Be(115200);
            machines[0].MachineCommands.Should().NotBeNull();
            machines[0].MachineInitCommands.Should().NotBeNull();
            machines[0].MachineCommands.Count().Should().Be(0);
            machines[0].MachineInitCommands.Count().Should().Be(0);
        }
コード例 #3
0
ファイル: App.xaml.cs プロジェクト: icprog/CNCLib
        private void AppStartup(object sender, StartupEventArgs e)
        {
            string userprofilepath = Environment.GetEnvironmentVariable(@"USERPROFILE");

            AppDomain.CurrentDomain.SetData("DataDirectory", userprofilepath);

            string dbfile = userprofilepath + @"\CNCLib.db";

            GlobalDiagnosticsContext.Set("connectionString", $"Data Source={dbfile}");

            LogManager.ThrowExceptions = true;
            Logger logger = LogManager.GetLogger("foo");

            _logger.Info(@"Starting ...");
            LogManager.ThrowExceptions = false;

            FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));

            Dependency.Initialize(new LiveDependencyProvider());

            Dependency.Container.RegisterFrameWorkTools();
            Dependency.Container.RegisterRepository();
            Dependency.Container.RegisterLogic();
            Dependency.Container.RegisterLogicClient();
            Dependency.Container.RegisterSerialCommunication();
            Dependency.Container.RegisterServiceAsLogic();
            Dependency.Container.RegisterCNCLibWpf();
            Dependency.Container.RegisterMapper(new MapperConfiguration(cfg =>
            {
                cfg.AddProfile <LogicAutoMapperProfile>();
                cfg.AddProfile <WpfAutoMapperProfile>();
                cfg.AddProfile <GCodeGUIAutoMapperProfile>();
            }));

            var userContext = new CNCLibUserContext();

            Dependency.Container.RegisterInstance((ICNCLibUserContext)userContext);

            // Open Database here

            try
            {
                Repository.SqLite.MigrationCNCLibContext.InitializeDatabase(dbfile, false, false);
            }
            catch (Exception ex)
            {
                _logger.Error(ex);

                MessageBox.Show($"Cannot create/connect database in {dbfile} \n\r" + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                Current.Shutdown();
            }

            var task = Task.Run(async() => await userContext.InitUserContext());

            while (!task.IsCompleted)
            {
                Task.Yield();
            }
        }
コード例 #4
0
ファイル: App.xaml.cs プロジェクト: yazici/CNCLib
        private void AppStartup(object sender, StartupEventArgs e)
        {
            GlobalDiagnosticsContext.Set("logDir", $"{Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)}/CNCLib.Web/logs");

            _logger.Info(@"Starting ...");
            FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));

            ICNCLibUserContext userContext = new CNCLibUserContext();

            Dependency.Initialize(new LiveDependencyProvider())

            .RegisterFrameWorkTools()
            .RegisterFrameWorkLogging()
            .RegisterLogicClient()
            .RegisterSerialCommunication()
            .RegisterServiceAsWebAPI()
            .RegisterCNCLibWpf()

            .RegisterMapper(
                new MapperConfiguration(
                    cfg =>
            {
                cfg.AddProfile <WpfAutoMapperProfile>();
                cfg.AddProfile <GCodeGUIAutoMapperProfile>();
            }))

            .RegisterInstance(userContext);

            // Open WebAPI Connection
            //
            bool ok = Task.Run(
                async() =>
            {
                try
                {
                    using (var controller = Dependency.Resolve <IMachineService>())
                    {
                        var m = await controller.Get(1000000);

/*
 *                                              if (m == -1)
 *                                              {
 *                                                      throw new ArgumentException("cannot connect to service");
 *                                              }
 */
                    }

                    return(true);
                }
                catch (Exception ex)
                {
                    MessageBox.Show($"Cannot connect to WebAPI: {ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                    Current.Shutdown();
                    return(false);
                }
            }).ConfigureAwait(true).GetAwaiter().GetResult();
        }
コード例 #5
0
        private void AppStartup(object sender, StartupEventArgs e)
        {
            GlobalDiagnosticsContext.Set("connectionString", MigrationCNCLibContext.ConnectString);

            LogManager.ThrowExceptions = true;
            Logger logger = LogManager.GetLogger("foo");

            _logger.Info(@"Starting ...");
            LogManager.ThrowExceptions = false;

            FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));

            Dependency.Initialize(new LiveDependencyProvider());

            Dependency.Container.RegisterFrameWorkTools();
            Dependency.Container.RegisterRepository();
            Dependency.Container.RegisterLogic();
            Dependency.Container.RegisterLogicClient();
            Dependency.Container.RegisterSerialCommunication();
            Dependency.Container.RegisterServiceAsLogic();
            Dependency.Container.RegisterCNCLibWpf();
            Dependency.Container.RegisterMapper(new MapperConfiguration(cfg =>
            {
                cfg.AddProfile <LogicAutoMapperProfile>();
                cfg.AddProfile <WpfAutoMapperProfile>();
                cfg.AddProfile <GCodeGUIAutoMapperProfile>();
            }));

            var userContext = new CNCLibUserContext();

            Dependency.Container.RegisterInstance((ICNCLibUserContext)userContext);

            //	        string sqlconnectstring = @"Data Source = (LocalDB)\MSSQLLocalDB; Initial Catalog = CNCLib; Integrated Security = True";
            string sqlconnectstring = null;

            // Open Database here

            try
            {
                Repository.SqlServer.MigrationCNCLibContext.InitializeDatabase(sqlconnectstring, false, false);
            }
            catch (Exception ex)
            {
                _logger.Error(ex);

                MessageBox.Show("Cannot connect to database" + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                Current.Shutdown();
            }

            var task = Task.Run(async() => await userContext.InitUserContext());

            while (!task.IsCompleted)
            {
                Task.Yield();
            }
        }
コード例 #6
0
ファイル: App.xaml.cs プロジェクト: yazici/CNCLib
        private void AppStartup(object sender, StartupEventArgs e)
        {
            string connectString = SqlServerDatabaseTools.ConnectString;

            GlobalDiagnosticsContext.Set("logDir", $"{Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)}/CNCLib.Sql/logs");
            GlobalDiagnosticsContext.Set("connectionString", connectString);

            try
            {
#if DEBUG
                LogManager.ThrowExceptions = true;
#endif
                NLog.Logger logger = LogManager.GetLogger("foo");

                _logger.Info(@"Starting ...");
#if DEBUG
                LogManager.ThrowExceptions = false;
#endif
            }
            catch (SqlException)
            {
                // ignore Sql Exception
            }

            FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));

            var userContext = new CNCLibUserContext();

            Dependency.Initialize(new LiveDependencyProvider())
            .RegisterFrameWorkTools()
            .RegisterFrameWorkLogging()
            .RegisterRepository(SqlServerDatabaseTools.OptionBuilder)
            .RegisterLogic()
            .RegisterLogicClient()
            .RegisterSerialCommunication()
            .RegisterServiceAsLogic()
            .RegisterCNCLibWpf()
            .RegisterMapper(
                new MapperConfiguration(
                    cfg =>
            {
                cfg.AddProfile <LogicAutoMapperProfile>();
                cfg.AddProfile <WpfAutoMapperProfile>();
                cfg.AddProfile <GCodeGUIAutoMapperProfile>();
            }))
            .RegisterInstance((ICNCLibUserContext)userContext);

            // Open Database here

            try
            {
                CNCLibContext.InitializeDatabase2(false, false);
            }
            catch (Exception ex)
            {
                _logger.Error(ex);

                MessageBox.Show("Cannot connect to database" + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                Current.Shutdown();
            }

            var task = Task.Run(async() => await userContext.InitUserContext());
            while (!task.IsCompleted)
            {
                Task.Yield();
            }
        }
コード例 #7
0
        private void AppStartup(object sender, StartupEventArgs e)
        {
            var userContextRW = new CNCLibUserContext();
            ICNCLibUserContext userContext = userContextRW;

            var localizationCollector = new LocalizationCollector();
            var moduleInit            = new InitializationManager();

            moduleInit.Add(new Framework.Tools.ModuleInitializer());
            moduleInit.Add(new Framework.Arduino.SerialCommunication.ModuleInitializer());
            moduleInit.Add(new Framework.Logic.ModuleInitializer()
            {
                MapperConfiguration =
                    new MapperConfiguration(
                        cfg =>
                {
                    cfg.AddProfile <WpfAutoMapperProfile>();
                    cfg.AddProfile <GCodeGUIAutoMapperProfile>();
                })
            });
            moduleInit.Add(new CNCLib.Logic.Client.ModuleInitializer());
            moduleInit.Add(new CNCLib.WpfClient.ModuleInitializer());
            moduleInit.Add(new CNCLib.Service.WebAPI.ModuleInitializer()
            {
                ConfigureHttpClient = httpClient =>
                {
                    HttpClientHelper.PrepareHttpClient(httpClient, @"https://cnclib.azurewebsites.net");
                    httpClient.DefaultRequestHeaders.Authorization =
                        new AuthenticationHeaderValue(
                            "Basic", Base64Helper.StringToBase64($"{userContextRW.UserName}:{userContextRW.Password}"));
                }
            });

            GlobalDiagnosticsContext.Set("logDir", $"{Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)}/CNCLib.Web/logs");

            _logger.Info(@"Starting ...");
            FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));

            AppService.ServiceCollection = new ServiceCollection();
            AppService.ServiceCollection
            .AddTransient <ILoggerFactory, LoggerFactory>()
            .AddTransient(typeof(ILogger <>), typeof(Logger <>))
            .AddSingleton(userContext);

            moduleInit.Initialize(AppService.ServiceCollection, localizationCollector);

            AppService.BuildServiceProvider();

            // Open WebAPI Connection
            //
            bool ok = Task.Run(
                async() =>
            {
                try
                {
                    await userContextRW.InitUserContext(userContextRW.UserName);

                    using (var scope = AppService.ServiceProvider.CreateScope())
                    {
                        var controller = scope.ServiceProvider.GetRequiredService <IMachineService>();
                        var m          = await controller.Get(1000000);

                        return(true);
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show($"Cannot connect to WebAPI: {ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                    Current.Shutdown();
                    return(false);
                }
            }).ConfigureAwait(true).GetAwaiter().GetResult();
        }
コード例 #8
0
        public async Task GetMachinesMany()
        {
            var unitOfWork  = Substitute.For <IUnitOfWork>();
            var rep         = Substitute.For <IMachineRepository>();
            var repC        = Substitute.For <IConfigurationRepository>();
            var userContext = new CNCLibUserContext();

            var ctrl = new MachineManager(unitOfWork, rep, repC, userContext, Mapper);

            var machineEntity = new[]
            {
                new Machine
                {
                    MachineId           = 1,
                    Name                = "Maxi",
                    BufferSize          = 115200,
                    MachineCommands     = new List <MachineCommand>(),
                    MachineInitCommands = new List <MachineInitCommand>(),
                    UserId              = userContext.UserId
                },
                new Machine
                {
                    MachineId       = 2,
                    Name            = "Maxi",
                    BufferSize      = 115200,
                    UserId          = userContext.UserId,
                    MachineCommands = new List <MachineCommand>()
                    {
                        new MachineCommand
                        {
                            MachineId        = 2,
                            MachineCommandId = 1,
                            CommandName      = "Test",
                            CommandString    = "f"
                        }
                    },
                    MachineInitCommands = new List <MachineInitCommand>()
                    {
                        new MachineInitCommand
                        {
                            MachineId            = 2,
                            MachineInitCommandId = 1,
                            SeqNo         = 0,
                            CommandString = "f"
                        }
                    }
                }
            };

            rep.GetByUser(userContext.UserId).Returns(machineEntity);

            var machines = (await ctrl.GetAll()).ToArray();

            machines.Length.Should().Be(2);
            machines[0].MachineId.Should().Be(1);
            machines[0].Name.Should().Be("Maxi");
            machines[0].BufferSize.Should().Be(115200);
            machines[1].MachineCommands.Count().Should().Be(1);
            machines[1].MachineInitCommands.Count().Should().Be(1);
            machines[0].MachineCommands.Count().Should().Be(0);
            machines[0].MachineInitCommands.Count().Should().Be(0);
            machines[1].MachineCommands.First().CommandName.Should().Be("Test");
            machines[1].MachineCommands.First().CommandString.Should().Be("f");
            machines[1].MachineInitCommands.First().SeqNo.Should().Be(0);
            machines[1].MachineInitCommands.First().CommandString.Should().Be("f");
        }
コード例 #9
0
ファイル: App.xaml.cs プロジェクト: lulzzz/CNCLib
        private void AppStartup(object sender, StartupEventArgs e)
        {
            var localizationCollector = new LocalizationCollector();
            var moduleInit            = new InitializationManager();

            moduleInit.Add(new Framework.Tools.ModuleInitializer());
            moduleInit.Add(new Framework.Arduino.SerialCommunication.ModuleInitializer());
            moduleInit.Add(new Framework.Logic.ModuleInitializer()
            {
                MapperConfiguration =
                    new MapperConfiguration(
                        cfg =>
                {
                    cfg.AddProfile <LogicAutoMapperProfile>();
                    cfg.AddProfile <WpfAutoMapperProfile>();
                    cfg.AddProfile <GCodeGUIAutoMapperProfile>();
                })
            });
            moduleInit.Add(new CNCLib.Logic.ModuleInitializer());
            moduleInit.Add(new CNCLib.Logic.Client.ModuleInitializer());
            moduleInit.Add(new CNCLib.Repository.ModuleInitializer()
            {
                OptionsAction = SqlServerDatabaseTools.OptionBuilder
            });
            moduleInit.Add(new CNCLib.Service.Logic.ModuleInitializer());
            moduleInit.Add(new CNCLib.WpfClient.ModuleInitializer());

            string connectString = SqlServerDatabaseTools.ConnectString;

            GlobalDiagnosticsContext.Set("logDir", $"{Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)}/CNCLib.Sql/logs");
            GlobalDiagnosticsContext.Set("connectionString", connectString);

            try
            {
#if DEBUG
                LogManager.ThrowExceptions = true;
#endif
                NLog.Logger logger = LogManager.GetLogger("foo");

                _logger.Info(@"Starting ...");
#if DEBUG
                LogManager.ThrowExceptions = false;
#endif
            }
            catch (SqlException)
            {
                // ignore Sql Exception
            }

            FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));

            var userContext = new CNCLibUserContext(CNCLibConst.AdminUser);

            AppService.ServiceCollection = new ServiceCollection();
            AppService.ServiceCollection
            .AddTransient <ILoggerFactory, LoggerFactory>()
            .AddTransient(typeof(ILogger <>), typeof(Logger <>))
            .AddSingleton((ICNCLibUserContext)userContext);

            moduleInit.Initialize(AppService.ServiceCollection, localizationCollector);

            AppService.BuildServiceProvider();

            // Open Database here

            try
            {
                CNCLibContext.InitializeDatabase(AppService.ServiceProvider);
            }
            catch (Exception ex)
            {
                _logger.Error(ex);

                MessageBox.Show("Cannot connect to database" + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                Current.Shutdown();
            }

            var task = Task.Run(async() => await userContext.InitUserContext());
            while (!task.IsCompleted)
            {
                Task.Yield();
            }
        }
コード例 #10
0
        private void AppStartup(object sender, StartupEventArgs e)
        {
            string userProfilePath = Environment.GetEnvironmentVariable(@"USERPROFILE");

            AppDomain.CurrentDomain.SetData("DataDirectory", userProfilePath);


            string dbFile = userProfilePath + @"\CNCLib.db";

            SqliteDatabaseTools.DatabaseFile = dbFile;
            string connectString = SqliteDatabaseTools.ConnectString;

            GlobalDiagnosticsContext.Set("logDir", $"{Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)}/CNCLib/logs");
            GlobalDiagnosticsContext.Set("connectionString", connectString);

            LogManager.ThrowExceptions = true;
            var logger = LogManager.GetLogger("foo");

            _logger.Info(@"Starting ...");
            LogManager.ThrowExceptions = false;

            FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)));

            var userContext = new CNCLibUserContext("global");

            AppService.ServiceCollection = new ServiceCollection();
            AppService.ServiceCollection
            .AddFrameWorkTools()
            .AddTransient <ILoggerFactory, LoggerFactory>()
            .AddTransient(typeof(ILogger <>), typeof(Logger <>))
            .AddRepository(SqliteDatabaseTools.OptionBuilder)
            .AddLogic()
            .AddLogicClient()
            .AddSerialCommunication()
            .AddServiceAsLogic()
            .AddCNCLibWpf()
            .AddMapper(
                new MapperConfiguration(
                    cfg =>
            {
                cfg.AddProfile <LogicAutoMapperProfile>();
                cfg.AddProfile <WpfAutoMapperProfile>();
                cfg.AddProfile <GCodeGUIAutoMapperProfile>();
            }))
            .AddSingleton((ICNCLibUserContext)userContext);

            AppService.BuildServiceProvider();
            // Open Database here

            try
            {
                CNCLibContext.InitializeDatabase2();
            }
            catch (Exception ex)
            {
                _logger.Error(ex);

                MessageBox.Show($"Cannot create/connect database in {dbFile} \n\r" + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                Current.Shutdown();
            }

            var task = Task.Run(async() => await userContext.InitUserContext());

            while (!task.IsCompleted)
            {
                Task.Yield();
            }
        }