public CacheInitalizer(IMainWindowModel mainWindowHandle, IDatabaseController databaseControler, ISettings settings, ILogger logger)
 {
     _mainWindowHandle  = mainWindowHandle;
     _databaseControler = databaseControler;
     _settings          = settings;
     _logger            = logger;
 }
Exemple #2
0
 public SqliteDataFinder(ILogger logger, ISettings settings, IMainWindowModel mainWindowHandle, IDatabaseController databaseController)
 {
     _mainWindowHandle   = mainWindowHandle;
     _settings           = settings;
     _databaseController = databaseController;
     Start(logger);
 }
Exemple #3
0
 public static bool Init(string databaseType, string[] connectArgs)
 {
     if (databaseType == "MySQL")
     {
         Database = new MySQLController();
     }
     else if (databaseType == "LiteDB")
     {
         //Database = new LiteDBController();
     }
     Database.ConnectToDatabase(connectArgs);
     return(true);
 }
        public OsuMemoryEventSourceBase(IContextAwareLogger logger, ISettings settings,
                                        IDatabaseController databaseControler, IModParser modParser,
                                        List <IHighFrequencyDataConsumer> highFrequencyDataConsumers, ISaver saver)
        {
            _settings                   = settings;
            _databaseController         = databaseControler;
            _modParser                  = modParser;
            _highFrequencyDataConsumers = highFrequencyDataConsumers;
            Logger          = logger;
            LiveTokenSetter = Tokens.CreateTokenSetter(Name);
            TokenSetter     = Tokens.CreateTokenSetter($"{Name}-Regular");
            _memoryReader   = OsuMemoryReader.Instance;

            _settings.SettingUpdated += OnSettingsSettingUpdated;

            bool isFallback             = _settings.Get <bool>(_names.OsuFallback);
            bool memoryScannerIsEnabled = _settings.Get <bool>(_names.EnableMemoryScanner);

            MemoryPoolingIsEnabled = _settings.Get <bool>(_names.EnableMemoryPooling);

            _poolingMsDelay = _settings.Get <int>(_names.MemoryPoolingFrequency);
            if (!memoryScannerIsEnabled)
            {
                return;
            }
            if (isFallback)
            {
                _settings.Add(_names.EnableMemoryScanner.Name, false);
                return;
            }

            lock (_lockingObject)
                _timer = new Timer(TimerCallback, null, 250, Int32.MaxValue);


            _memoryListener              = new MemoryListener(settings, saver, logger);
            _memoryListener.NewOsuEvent += async(s, args) =>
            {
                while (NewOsuEvent == null)
                {
                    await Task.Delay(5);
                }

                NewOsuEvent.Invoke(this, args);
            };
            _memoryListener.SetHighFrequencyDataHandlers(_highFrequencyDataConsumers);

            Started = true;
        }
Exemple #5
0
        public OsuSongsFolderWatcher(ILogger logger, ISettings settings, IDatabaseController databaseController)
        {
            _settings           = settings;
            _databaseController = databaseController;
            _logger             = logger;

            if (_settings.Get <bool>(_names.LoadingRawBeatmaps))
            {
                _settings.Add(_names.LoadingRawBeatmaps.Name, false);
            }

            var dir = _settings.Get <string>(_names.SongsFolderLocation);

            if (dir == _names.SongsFolderLocation.Default <string>())
            {
                dir = _settings.Get <string>(_names.MainOsuDirectory);
                dir = Path.Combine(dir, "Songs\\");
            }


            if (Directory.Exists(dir))
            {
                MemoryCacheHelpers.IncreaseCachePoolingFrequency();
                memoryCache     = MemoryCache.Default;
                cacheItemPolicy = new CacheItemPolicy
                {
                    RemovedCallback   = OnItemRemoved,
                    SlidingExpiration = TimeSpan.FromMilliseconds(250)
                };

                _watcher          = new FileSystemWatcher(dir, "*.osu");
                _watcher.Changed += Watcher_FileChanged;
                _watcher.Created += Watcher_FileChanged;
                _watcher.IncludeSubdirectories = true;
                _watcher.EnableRaisingEvents   = true;
                _consumerThread = new Thread(ConsumerTask);
                _consumerThread.Start();
            }
            else
            {
                MessageBox.Show($"Could not find osu! songs directory at \"{dir}\"" + Environment.NewLine +
                                "This is most likely caused by moved or incorrectly detected osu! songs directory" + Environment.NewLine +
                                "Set osu! path manually in settings for StreamCompanion to be able to provide data for newly loaded songs"
                                , "StreamCompanion - New songs watcher error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        /// <summary>
        /// Contructor enables visual styles, creates the Database Controller,
        /// creates the Home form and opens it. Only opens Home form if
        /// database controller is valid.
        /// </summary>
        public Presenter()
        {
            // Setup home form
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            // Initialise Database Controller
            m_databaseController = new DatabaseController();


            if (ValidateDatabaseController())
            {
#if !DEBUG
                OpenHome();
#endif
            }
        }
Exemple #7
0
        public OsuSongsFolderWatcher(ILogger logger, ISettings settings, IDatabaseController databaseController)
        {
            _settings           = settings;
            _databaseController = databaseController;
            _logger             = logger;

            if (_settings.Get <bool>(_names.LoadingRawBeatmaps))
            {
                _settings.Add(_names.LoadingRawBeatmaps.Name, false);
            }

            var dir = settings.GetFullSongsLocation();

            if (Directory.Exists(dir))
            {
                memoryCache = new MemoryCache("DelayedCache", new NameValueCollection
                {
                    { "PollingInterval", "00:00:01" },
                    { "CacheMemoryLimitMegabytes", "1" }
                });
                cacheItemPolicy = new CacheItemPolicy
                {
                    RemovedCallback   = OnItemRemoved,
                    SlidingExpiration = TimeSpan.FromMilliseconds(250)
                };

                _watcher          = new FileSystemWatcher(dir, "*.osu");
                _watcher.Changed += Watcher_FileChanged;
                _watcher.Created += Watcher_FileChanged;
                _watcher.IncludeSubdirectories = true;
                _watcher.EnableRaisingEvents   = true;
                _ = Task.Run(() => ConsumerTask(_cts.Token));
            }
            else
            {
                MessageBox.Show($"Could not find osu! songs directory at \"{dir}\"" + Environment.NewLine +
                                "This is most likely caused by moved or incorrectly detected osu! songs directory" + Environment.NewLine +
                                "Set osu! path manually in settings for StreamCompanion to be able to provide data for newly loaded songs"
                                , "StreamCompanion - New songs watcher error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Exemple #8
0
        public async Task <(string, DbConnection)> StartAsync()
        {
            var dockerUri = IDatabaseController.GetDockerUri();

            _dockerClient = new DockerClientConfiguration(
                new Uri(dockerUri))
                            .CreateClient();

            DockerContainerBase.CleanupOrphanedContainersAsync(_dockerClient).Wait(Timeout * 500);

            _sqlServerContainer = new SqlServerContainer(Port, Password);

            await _sqlServerContainer.StartAsync(_dockerClient, Timeout);

            var connectionString = _sqlServerContainer.GetConnectionString(DatabaseName);

            //TODO: use logger
            Console.WriteLine($"*** SQL Server database started and the connection string is: \"{connectionString}\"");

            var connection = new SqlConnection(connectionString);

            return(connectionString, connection);
        }
        public ScheduleService(IDatabaseController databaseController)
        {
            this.databaseController = databaseController;
            cronExpressionTypes     = new List <string>()
            {
                "Минутная периодичность",
                "Часовая периодичность",
                "Каждый день",
                "В определенные дни"
            };
            cronExpressionTypesReadable = new ReadableEnumeration <CronExpressionType>(cronExpressionTypes);

            daysReadable = new List <string>()
            {
                "Понедельник",
                "Вторник",
                "Среда",
                "Четверг",
                "Пятница",
                "Суббота",
                "Воскресенье"
            };
            daysOfWeekReadable = new ReadableEnumeration <DaysOfWeek>(daysReadable);
        }
Exemple #10
0
 //private OrdersDbContext db;
 public OrdersController(OrdersDbContext context)
 {
     //db = context;
     dbcontrol = new MSSQLController(context);
 }
 public ManageUsersController(IDatabaseController dbController)
 {
     _dbController = dbController;
 }
Exemple #12
0
 public MainViewModel()
 {
     _databaseController = DependencyService.Get <IDatabaseController>();
     _fileService        = new FileService();
     _files = new List <FileModel>();
 }
Exemple #13
0
 public LoginService(IDatabaseController databaseController)
 {
     this.databaseController = databaseController;
     loginTypesReadableList  = new ReadableEnumeration <LoginTypesEnumeration>(LoginTypesNames);
 }
Exemple #14
0
 public AccountController(IDatabaseController dbController, IOptions <AppSettings> appSettings)
 {
     _dbController = dbController;
     _appSettings  = appSettings.Value;
 }
 public OsuMemoryEventSource(IContextAwareLogger logger, ISettings settings, IDatabaseController databaseController, IModParser modParser, List <IHighFrequencyDataConsumer> highFrequencyDataConsumers) : base(logger, settings, databaseController, modParser, highFrequencyDataConsumers)
 {
 }
Exemple #16
0
 public MainMenu(IDatabaseController databseController)
 {
     this.databaseController = databseController;
 }
        public WeatherReportController(IDatabaseController dbController, IHubContext <ServerSignal> hub)
        {
            _dbController = dbController;

            _hub = hub;
        }
Exemple #18
0
 public DataLayer(IDatabaseController databaseController)
 {
     _databaseController = databaseController;
 }
Exemple #19
0
 public EmailService(IDatabaseController databaseController)
 {
     this.databaseController = databaseController;
 }
 public void Setup()
 {
     databaseController = Substitute.For <IDatabaseController>();
     _options           = Substitute.For <IOptions <AppSettings> >();
     _uut = new AccountController(databaseController, _options);
 }
Exemple #21
0
 public ActionInsertAddress(IDatabaseController databseController)
 {
     this.databaseController = databseController;
 }
 public BackupService(IDatabaseController databaseController)
 {
     this.databaseController = databaseController;
 }
 public TaskService(IDatabaseController databaseController, IScheduleService scheduleService)
 {
     this.databaseController = databaseController;
     this.scheduleService    = scheduleService;
     schedules = scheduleService.GetAllSchedules();
 }
Exemple #24
0
        public OsuMemoryEventSourceBase(IContextAwareLogger logger, ISettings settings,
                                        IDatabaseController databaseControler, IModParser modParser,
                                        List <Lazy <IHighFrequencyDataConsumer> > highFrequencyDataConsumers, ISaver saver, Delegates.Exit exiter)
        {
            _settings                   = settings;
            _databaseController         = databaseControler;
            _modParser                  = modParser;
            _highFrequencyDataConsumers = highFrequencyDataConsumers;
            Logger          = logger;
            LiveTokenSetter = Tokens.CreateTokenSetter(Name);
            TokenSetter     = Tokens.CreateTokenSetter($"{Name}-Regular");
            var clientCount = _settings.Get <bool>(TourneyMode)
                ? _settings.Get <int>(ClientCount)
                : 1;

            if (_settings.Get <bool>(TourneyMode))
            {
                string exitReason = null;
                if (clientCount < 2)
                {
                    exitReason = $"{ClientCount.Name} setting value is invalid. Set value equal or bigger than 2";
                }

                if (_settings.Get <int>(DataClientId) > clientCount - 1)
                {
                    exitReason = $"{DataClientId.Name} can't be bigger than {ClientCount.Name}. Client ids are 0-indexed";
                }

                if (!string.IsNullOrWhiteSpace(exitReason))
                {
                    Logger.Log(exitReason, LogLevel.Warning);
                    MessageBox.Show(exitReason, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    exiter(exitReason);
                    return;
                }

                _clientMemoryReaders.AddRange(Enumerable.Range(0, clientCount)
                                              .Select(i =>
                {
                    var instance = StructuredOsuMemoryReader.Instance.GetInstanceForWindowTitleHint(
                        $" Tournament Client {i}");
                    instance.OsuMemoryAddresses.GeneralData.KeyOverlay = null;
                    return(instance);
                }));

                //TODO: provide tournament-manager specific data via tokens
                var _tournamentManagerMemoryReader = OsuMemoryReader.Instance.GetInstanceForWindowTitleHint("Tournament Manager");

                Logger.Log($"{_clientMemoryReaders.Count} client readers prepared", LogLevel.Information);
            }
            else
            {
                _clientMemoryReaders.Add(StructuredOsuMemoryReader.Instance);
                StructuredOsuMemoryReader.Instance.OsuMemoryAddresses.GeneralData.KeyOverlay = null;
                StructuredOsuMemoryReader.Instance.InvalidRead += OnInvalidMemoryRead;
            }

            _settings.SettingUpdated += OnSettingsSettingUpdated;

            bool isFallback             = _settings.Get <bool>(_names.OsuFallback);
            bool memoryScannerIsEnabled = _settings.Get <bool>(_names.EnableMemoryScanner);

            MemoryPoolingIsEnabled = _settings.Get <bool>(_names.EnableMemoryPooling);

            _poolingMsDelay = _settings.Get <int>(_names.MemoryPoolingFrequency);
            if (!memoryScannerIsEnabled)
            {
                return;
            }
            if (isFallback)
            {
                _settings.Add(_names.EnableMemoryScanner.Name, false);
                return;
            }

            memoryListener              = new MemoryListener(settings, saver, logger, clientCount);
            memoryListener.NewOsuEvent += async(s, args) =>
            {
                while (NewOsuEvent == null)
                {
                    await Task.Delay(5);
                }

                NewOsuEvent.Invoke(this, args);
            };
            memoryListener.SetHighFrequencyDataHandlers(_highFrequencyDataConsumers);

            MemoryWorkerTask = Task.Run(MemoryWorker, cts.Token).HandleExceptions();

            Started = true;
        }
Exemple #25
0
 public OsuMemoryEventSource(IContextAwareLogger logger, ISettings settings, IDatabaseController databaseController,
                             IModParser modParser, List <Lazy <IHighFrequencyDataConsumer> > highFrequencyDataConsumers,
                             ISaver saver, Delegates.Exit exiter) : base(logger, settings, databaseController, modParser, highFrequencyDataConsumers, saver, exiter)
 {
 }
 public void Setup()
 {
     databaseController = Substitute.For <IDatabaseController>();
     hub  = Substitute.For <IHubContext <ServerSignal> >();
     _uut = new WeatherReportController(databaseController, hub);
 }
Exemple #27
0
 public ActionShowAppointmentForPaitient(IDatabaseController databseController)
 {
     this.databaseController = databseController;
 }
Exemple #28
0
        static async Task Main(string[] args)
        {
            LogManager.LogFactory = new ConsoleLogFactory(debugEnabled: true);

            var employees = new List <EmployeePOCO>
            {
                new EmployeePOCO {
                    Name = "Фатина", Surname = "Обломова", MiddleName = "Филипповна", Sex = "Famale", Birthday = DateTime.Today.AddYears(30), Post = "Сотрудник"
                },
                new EmployeePOCO {
                    Name = "Раиса", Surname = "Тарасова", MiddleName = "Константиновна", Sex = "Famale", Birthday = DateTime.Today, Post = "Сотрудник"
                },
                new EmployeePOCO {
                    Name = "Севастьян", Surname = "Рзаев", MiddleName = "Матвеевич", Sex = "Male", Birthday = DateTime.Today, Post = "Сотрудник"
                },
                new EmployeePOCO {
                    Name = "Мирослава", Surname = "Сорокина", MiddleName = "Виталиевна", Sex = "Famale", Birthday = DateTime.Today, Post = "Сотрудник"
                },
                new EmployeePOCO {
                    Name = "Радим", Surname = "Малышев", MiddleName = "Олегович", Sex = "Male", Birthday = DateTime.Today, Post = "Сотрудник"
                },
                new EmployeePOCO {
                    Name = "Егор", Surname = "Шин", MiddleName = "Станиславович", Sex = "Male", Birthday = DateTime.Today, Post = "Сотрудник"
                },
                new EmployeePOCO {
                    Name = "Афанасий", Surname = "Фролов", MiddleName = "Игоревич", Sex = "Male", Birthday = DateTime.Today, Post = "Сотрудник"
                },
                new EmployeePOCO {
                    Name = "Любомир", Surname = "Астахов", MiddleName = "Валентинович", Sex = "Male", Birthday = DateTime.Today, Post = "Сотрудник"
                },
                new EmployeePOCO {
                    Name = "Матвей", Surname = "Братиславский", MiddleName = "Ермакович", Sex = "Male", Birthday = DateTime.Today, Post = "Сотрудник"
                },
                new EmployeePOCO {
                    Name = "Сильвия", Surname = "Кароль", MiddleName = "Алексеевна", Sex = "Famale", Birthday = DateTime.Today, Post = "Управляющий"
                },
            };

            var components = new List <ComponentPOCO>
            {
                new ComponentPOCO {
                    ComponentType = "Тип компонента 1", ComponentName = "Название компонента 1"
                },
                new ComponentPOCO {
                    ComponentType = "Тип компонента 2", ComponentName = "Название компонента 2"
                },
                new ComponentPOCO {
                    ComponentType = "Тип компонента 3", ComponentName = "Название компонента 3"
                },
                new ComponentPOCO {
                    ComponentType = "Тип компонента 4", ComponentName = "Название компонента 4"
                },
                new ComponentPOCO {
                    ComponentType = "Тип компонента 5", ComponentName = "Название компонента 5"
                },
                new ComponentPOCO {
                    ComponentType = "Тип компонента 6", ComponentName = "Название компонента 6"
                },
                new ComponentPOCO {
                    ComponentType = "Тип компонента 7", ComponentName = "Название компонента 7"
                },
                new ComponentPOCO {
                    ComponentType = "Тип компонента 8", ComponentName = "Название компонента 8"
                },
                new ComponentPOCO {
                    ComponentType = "Тип компонента 9", ComponentName = "Название компонента 9"
                },
                new ComponentPOCO {
                    ComponentType = "Тип компонента 10", ComponentName = "Название компонента 10"
                }
            };

            var rng = new Random();

            List <KeyValuePair <long, int> > GetComponentsForOrder(int count)
            {
                var usedIds = new List <int>();
                var result  = new List <KeyValuePair <long, int> >();

                for (int i = 0; i < count; i++)
                {
                    var id = rng.Next(1, 10);
                    while (usedIds.Contains(id))
                    {
                        id = rng.Next(1, 10);
                    }

                    usedIds.Add(id);
                    result.Add(new KeyValuePair <long, int>(id, rng.Next(1, 10)));
                }

                return(result);
            }

            var componenstOrders = new List <ComponentsOrderPOCO>
            {
                new ComponentsOrderPOCO {
                    Components    = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))),
                    Price         = rng.Next(1, 10000),
                    OrderDate     = DateTime.Today,
                    Completed     = false,
                    DateOfArrival = DateTime.Today.AddDays(rng.Next(1, 20))
                },
                new ComponentsOrderPOCO {
                    Components    = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))),
                    Price         = rng.Next(1, 10000),
                    OrderDate     = DateTime.Today,
                    Completed     = false,
                    DateOfArrival = DateTime.Today.AddDays(rng.Next(1, 20))
                },
                new ComponentsOrderPOCO {
                    Components    = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))),
                    Price         = rng.Next(1, 10000),
                    OrderDate     = DateTime.Today,
                    Completed     = false,
                    DateOfArrival = DateTime.Today.AddDays(rng.Next(1, 20))
                },
                new ComponentsOrderPOCO {
                    Components    = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))),
                    Price         = rng.Next(1, 10000),
                    OrderDate     = DateTime.Today,
                    Completed     = false,
                    DateOfArrival = DateTime.Today.AddDays(rng.Next(1, 20))
                },
                new ComponentsOrderPOCO {
                    Components    = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))),
                    Price         = rng.Next(1, 10000),
                    OrderDate     = DateTime.Today,
                    Completed     = false,
                    DateOfArrival = DateTime.Today.AddDays(rng.Next(1, 20))
                },
                new ComponentsOrderPOCO {
                    Components    = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))),
                    Price         = rng.Next(1, 10000),
                    OrderDate     = DateTime.Today,
                    Completed     = false,
                    DateOfArrival = DateTime.Today.AddDays(rng.Next(1, 20))
                },
                new ComponentsOrderPOCO {
                    Components    = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))),
                    Price         = rng.Next(1, 10000),
                    OrderDate     = DateTime.Today,
                    Completed     = false,
                    DateOfArrival = DateTime.Today.AddDays(rng.Next(1, 20))
                },
                new ComponentsOrderPOCO {
                    Components    = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))),
                    Price         = rng.Next(1, 10000),
                    OrderDate     = DateTime.Today,
                    Completed     = false,
                    DateOfArrival = DateTime.Today.AddDays(rng.Next(1, 20))
                },
                new ComponentsOrderPOCO {
                    Components    = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))),
                    Price         = rng.Next(1, 10000),
                    OrderDate     = DateTime.Today,
                    Completed     = false,
                    DateOfArrival = DateTime.Today.AddDays(rng.Next(1, 20))
                },
                new ComponentsOrderPOCO {
                    Components    = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))),
                    Price         = rng.Next(1, 10000),
                    OrderDate     = DateTime.Today,
                    Completed     = false,
                    DateOfArrival = DateTime.Today.AddDays(rng.Next(1, 20))
                },
            };

            IDatabaseController databaseController = await GetMySQLController();

            //IDatabaseController databaseController = await GetLiteDBController();

            foreach (var employee in employees)
            {
                await databaseController.AddEmployee(employee);
            }

            foreach (var component in components)
            {
                await databaseController.AddComponent(component);

                await databaseController.AddComponentToStorage(new StoragePOCO { ComponentId = component.Id, Count = 1000 });

                for (var i = 10; i >= 0; i--)
                {
                    await databaseController.AddStorageHistory(new StorageHistoryPOCO { ComponentId = component.Id, Date = DateTime.Now.AddDays(-i), Delta = rng.Next(1, 100) });
                }
            }
            foreach (var order in componenstOrders)
            {
                await databaseController.AddComponentOrder(order);
            }

            var customers = new List <CustomerPOCO>
            {
                new CustomerPOCO {
                    FullName = "Третьяков Ростислав Валерьевич", ContactInfo = "+7 (980) 979-74-49"
                },
                new CustomerPOCO {
                    FullName = "Филиппов Олег Геннадиевич", ContactInfo = "+7 (940) 893-35-30"
                },
                new CustomerPOCO {
                    FullName = "Фомов Светозар Ермакович", ContactInfo = "+7 (989) 321-14-41"
                },
                new CustomerPOCO {
                    FullName = "Сафарова Тамара Львовна", ContactInfo = "+7 (945) 435-68-56"
                },
                new CustomerPOCO {
                    FullName = "Кудрявцева Элеонора Степановна", ContactInfo = "+7 (996) 339-52-22"
                },
                new CustomerPOCO {
                    FullName = "Маслов Дмитрий Романович", ContactInfo = "+7 (962) 837-78-85"
                },
                new CustomerPOCO {
                    FullName = "Куликовская Зинаида Иосифовна", ContactInfo = "+7 (949) 701-35-87"
                },
                new CustomerPOCO {
                    FullName = "Миллер Матвей Дмитриевич", ContactInfo = "+7 (943) 723-11-26"
                },
                new CustomerPOCO {
                    FullName = "Кольцов Самсон Святославович", ContactInfo = "+7 (950) 131-12-26"
                },
                new CustomerPOCO {
                    FullName = "Бровина Галина Закировна", ContactInfo = "+7 (987) 667-54-44"
                }
            };

            var jobs = new List <JobPOCO>
            {
                new JobPOCO {
                    ComponentsUsed = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))), Complete = false, Description = "Работа на стадии..."
                },
                new JobPOCO {
                    ComponentsUsed = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))), Complete = false, Description = "Работа на стадии..."
                },
                new JobPOCO {
                    ComponentsUsed = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))), Complete = false, Description = "Работа на стадии..."
                },
                new JobPOCO {
                    ComponentsUsed = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))), Complete = false, Description = "Работа на стадии..."
                },
                new JobPOCO {
                    ComponentsUsed = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))), Complete = false, Description = "Работа на стадии..."
                },
                new JobPOCO {
                    ComponentsUsed = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))), Complete = false, Description = "Работа на стадии..."
                },
                new JobPOCO {
                    ComponentsUsed = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))), Complete = false, Description = "Работа на стадии..."
                },
                new JobPOCO {
                    ComponentsUsed = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))), Complete = false, Description = "Работа на стадии..."
                },
                new JobPOCO {
                    ComponentsUsed = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))), Complete = false, Description = "Работа на стадии..."
                },
                new JobPOCO {
                    ComponentsUsed = new Dictionary <long, int>(GetComponentsForOrder(rng.Next(1, 4))), Complete = false, Description = "Работа на стадии..."
                },
            };

            var customerOrders = new List <CustomerOrderPOCO>
            {
                new CustomerOrderPOCO {
                    OrderType = "Ремонт", OrderDetals = "Отремонтировать...", OrderDate = DateTime.Today, Completed = false, LinkedJobId = 1
                },
                new CustomerOrderPOCO {
                    OrderType = "Ремонт", OrderDetals = "Отремонтировать...", OrderDate = DateTime.Today, Completed = false, LinkedJobId = 2
                },
                new CustomerOrderPOCO {
                    OrderType = "Ремонт", OrderDetals = "Отремонтировать...", OrderDate = DateTime.Today, Completed = false, LinkedJobId = 3
                },
                new CustomerOrderPOCO {
                    OrderType = "Ремонт", OrderDetals = "Отремонтировать...", OrderDate = DateTime.Today, Completed = false, LinkedJobId = 4
                },
                new CustomerOrderPOCO {
                    OrderType = "Ремонт", OrderDetals = "Отремонтировать...", OrderDate = DateTime.Today, Completed = false, LinkedJobId = 5
                },
                new CustomerOrderPOCO {
                    OrderType = "Ремонт", OrderDetals = "Отремонтировать...", OrderDate = DateTime.Today, Completed = false, LinkedJobId = 6
                },
                new CustomerOrderPOCO {
                    OrderType = "Ремонт", OrderDetals = "Отремонтировать...", OrderDate = DateTime.Today, Completed = false, LinkedJobId = 7
                },
                new CustomerOrderPOCO {
                    OrderType = "Ремонт", OrderDetals = "Отремонтировать...", OrderDate = DateTime.Today, Completed = false, LinkedJobId = 8
                },
                new CustomerOrderPOCO {
                    OrderType = "Ремонт", OrderDetals = "Отремонтировать...", OrderDate = DateTime.Today, Completed = false, LinkedJobId = 9
                },
                new CustomerOrderPOCO {
                    OrderType = "Ремонт", OrderDetals = "Отремонтировать...", OrderDate = DateTime.Today, Completed = false, LinkedJobId = 10
                }
            };

            foreach (var job in jobs)
            {
                await databaseController.AddJob(job);
            }

            for (int i = 0; i < customers.Count; i++)
            {
                CustomerPOCO customer = customers[i];
                await databaseController.AddCustomer(customer);

                var order = customerOrders[i];
                order.Id         = 0; //prevent update
                order.CustomerId = customer.Id;
                await databaseController.AddCustomerOrder(order);
            }

            $"CustomerOrderFull for id 3: {new CustomerOrderFullPOCO(await databaseController.GetCustomerOrder(3)).Dump()}".Print();
        }
 public AddressController(IDatabaseController <Address> addresses)
 {
     _addresses = addresses;
 }
 public PathService(IDatabaseController databaseController)
 {
     this.databaseController = databaseController;
 }