/// <summary>
        /// Gets the user repository.
        /// </summary>
        /// <returns>Task{IUserRepository}.</returns>
        private async Task <IUserRepository> GetUserRepository()
        {
            var repo = new SqliteUserRepository(JsonSerializer, LogManager, ApplicationPaths);

            await repo.Initialize().ConfigureAwait(false);

            return(repo);
        }
        public static void PrintUsers(SqliteUserRepository repository)
        {
            var people = repository.GetUsers();

            foreach (var person in people)
            {
                Console.WriteLine(person.FirstName + " " + person.LastName);
            }
        }
Example #3
0
        private async Task <IUserRepository> GetUserRepository()
        {
            var dbFile = Path.Combine(ApplicationPaths.DataPath, "users.db");

            var connection = await ConnectToDb(dbFile).ConfigureAwait(false);

            var repo = new SqliteUserRepository(connection, JsonSerializer, LogManager);

            repo.Initialize();

            return(repo);
        }
Example #4
0
        public void CanGetEntityByIdNotFound()
        {
            // Arrange
            var conn = GetConnectionString();
            var repo = new SqliteUserRepository(conn);

            // Act
            var result = repo.GetById(0);

            // Assert
            Assert.IsFalse(result.IsValid);
        }
Example #5
0
        public void AddOrUpdateEntityIsRequired()
        {
            // Arrange
            var conn = GetConnectionString();
            var repo = new SqliteUserRepository(conn);

            // Act
            var result = repo.AddOrUpdate(null);

            // Assert
            Assert.IsFalse(result.IsValid);
            Assert.IsTrue(result.Exception is ArgumentNullException);
        }
Example #6
0
        public void CanListEntitiesByNameOrSurname()
        {
            // Arrange
            var conn = GetConnectionString();

            var repo         = new SqliteUserRepository(conn);
            var entity1      = new User(0, "email1", new byte[] { 0x1, 0x1 }, "NameB", "Surname1", false, false);
            var entity2      = new User(0, "email2", new byte[] { 0x2, 0x2 }, "Name2", "SurnameA", true, true);
            var entity3      = new User(0, "email2", new byte[] { 0x2, 0x2 }, "Name3", "SurnameB", true, true);
            var savedEntity1 = repo.AddOrUpdate(entity1);

            repo.AddOrUpdate(entity2);
            var savedEntity3 = repo.AddOrUpdate(entity3);
            var filters      = ImmutableList.Create(new[]
Example #7
0
        public void AddOrUpdateIsSafe()
        {
            // Arrange
            var conn   = GetConnectionString();
            var entity = new User(0, "email", new byte[] { 0x1, 0x2 }, "Name", "Surname");
            var repo   = new SqliteUserRepository(conn);

            // Act
            _conn.Dispose();
            var newEntity = repo.AddOrUpdate(entity);

            // Assert
            Assert.IsFalse(newEntity.IsValid);
        }
Example #8
0
        public void CanGetEntityById()
        {
            // Arrange
            var conn        = GetConnectionString();
            var repo        = new SqliteUserRepository(conn);
            var entity      = new User(0, "email", new byte[] { 0x1, 0x2 }, "Name");
            var savedEntity = repo.AddOrUpdate(entity);

            // Act
            var result = repo.GetById(savedEntity.Value.Id);

            // Assert
            Assert.IsTrue(result.IsValid);
            Assert.IsTrue(result.Value.Equals(savedEntity.Value));
        }
Example #9
0
        public void CanCreateEntity()
        {
            // Arrange
            var conn = GetConnectionString();

            var repo   = new SqliteUserRepository(conn);
            var entity = new User(0, "email", new byte[] { 0x1, 0x2 }, "Name");

            // Act
            var newEntity = repo.AddOrUpdate(entity);

            // Assert
            Assert.IsTrue(newEntity.IsValid);
            Assert.IsTrue(newEntity.Value.Id == 1);
        }
Example #10
0
        public void CanListEntities()
        {
            // Arrange
            var conn = GetConnectionString();

            var repo        = new SqliteUserRepository(conn);
            var entity      = new User(0, "email", new byte[] { 0x1, 0x2 }, "Name");
            var savedEntity = repo.AddOrUpdate(entity);

            // Act
            var listEntities = repo.ListEntities();

            // Assert
            Assert.IsTrue(listEntities.IsValid);
            Assert.IsTrue(listEntities.Value.Any());
            Assert.IsTrue(savedEntity.Value.Equals(listEntities.Value.First()));
        }
Example #11
0
        public void CanListEntitiesByIdAndNameNotFound()
        {
            // Arrange
            var conn = GetConnectionString();

            var repo    = new SqliteUserRepository(conn);
            var entity1 = new User(0, "email1", new byte[] { 0x1, 0x1 }, "Name1", "Surname1", false, false);
            var entity2 = new User(0, "email2", new byte[] { 0x2, 0x2 }, "Name2", "Surname2", true, true);

            repo.AddOrUpdate(entity1);
            repo.AddOrUpdate(entity2);
            var filters = ImmutableList.Create(new[] { new Filter <User>("Id", (uint)1), new Filter <User>("Name", "Name2") });

            // Act
            var listEntities = repo.ListEntities(filters);

            // Assert
            Assert.IsTrue(listEntities.IsValid);
            Assert.IsFalse(listEntities.Value.Any());
        }
Example #12
0
        public void CanListEntitiesActive()
        {
            // Arrange
            var conn = GetConnectionString();

            var repo         = new SqliteUserRepository(conn);
            var entity1      = new User(0, "email1", new byte[] { 0x1, 0x2 }, "Name1", isActive: true);
            var savedEntity1 = repo.AddOrUpdate(entity1);
            var entity2      = new User(0, "email2", new byte[] { 0x2, 0x1 }, "Name2", isActive: false);

            _ = repo.AddOrUpdate(entity2);

            // Act
            var listEntities = repo.ListEntities(status: Status.Active);

            // Assert
            Assert.IsTrue(listEntities.IsValid);
            Assert.IsTrue(listEntities.Value.Count == 1);
            Assert.IsTrue(savedEntity1.Value.Equals(listEntities.Value.First()));
        }
Example #13
0
        public void CanListEntitiesByEmail()
        {
            // Arrange
            var conn = GetConnectionString();

            var repo    = new SqliteUserRepository(conn);
            var entity1 = new User(0, "email1", new byte[] { 0x1, 0x1 }, "Name1", "Surname1", false, false);
            var entity2 = new User(0, "email2", new byte[] { 0x2, 0x2 }, "Name2", "Surname2", true, true);

            repo.AddOrUpdate(entity1);
            var savedEntity2 = repo.AddOrUpdate(entity2);
            var filters      = ImmutableList.Create(new Filter <User>("Email", "email2"));

            // Act
            var listEntities = repo.ListEntities(filters);

            // Assert
            Assert.IsTrue(listEntities.IsValid);
            Assert.IsTrue(listEntities.Value.Any());
            Assert.IsTrue(savedEntity2.Value.Equals(listEntities.Value.First()));
        }
        static void Main(string[] args)
        {
            var repo = new SqliteInitialization();

            repo.PrintVersion();

            var postRepo   = new SqlitePostRepository();
            var threadRepo = new SqliteThreadRepository();
            var userRepo   = new SqliteUserRepository();

            while (true)
            {
                Console.WriteLine("Write 1 to show all threads. \n" +
                                  "Write 2 to show all users. \n");

                string x = "";
                x = Console.ReadLine();

                if (x == "1")
                {
                    Console.Clear();
                    threadRepo.GetThreads();

                    while (true)
                    {
                        PrintThreads(threadRepo);

                        var people = threadRepo.GetThreads();
                        Console.WriteLine("Write the id of the thread you want to view." +
                                          "\nWrite c to create a new thread." +
                                          "\nWrite x to go back.");

                        string input = Console.ReadLine();

                        if (input == "x")
                        {
                            Console.Clear();
                            break;
                        }

                        if (input == "c")
                        {
                            Console.Clear();

                            Thread newThread = new Thread();
                            Console.WriteLine("Write a topic:");
                            newThread.Topic = Console.ReadLine();

                            Console.WriteLine("Write a text:");
                            newThread.Text      = Console.ReadLine();
                            newThread.PostCount = 100;

                            threadRepo.AddThread(newThread);

                            Console.WriteLine("Thread added!");

                            continue;
                        }

                        int threadId = int.Parse(input);

                        Console.Clear();
                        var threadCreator = userRepo.GetPersonWithIdWhoCreatedThread(threadId);
                        Console.WriteLine("User: "******"Write 1 to add a post");
                            Console.WriteLine("Write 2 to edit a post");
                            Console.WriteLine("Write 3 to delete a post");
                            Console.WriteLine("Write x to go back.");

                            string threadInput = Console.ReadLine();

                            if (threadInput == "x")
                            {
                                Console.Clear();
                                break;
                            }

                            if (threadInput == "1")
                            {
                                Console.WriteLine(threadId);

                                Post newPost = new Post();
                                Console.WriteLine("Write a text:");
                                newPost.Text = Console.ReadLine();

                                Console.WriteLine("Write the owners ID:");
                                newPost.UserId   = Console.ReadLine();
                                newPost.ThreadId = threadId.ToString();
                                postRepo.AddPost(newPost);

                                var obj = threadRepo.GetThreadWithId(threadId);
                                obj.PostCount = obj.PostCount + 1;
                                threadRepo.UpdateThreadPostCount(obj);


                                Console.Clear();
                                break;
                            }

                            if (threadInput == "2")
                            {
                                Console.WriteLine("What is the ID of the post you want to edit?");
                                string editPostId = Console.ReadLine();

                                int editPostInt = int.Parse(editPostId);

                                Post postObject = new Post();

                                postObject = postRepo.GetPostWithId(editPostInt);

                                Console.WriteLine("Write the new text.");
                                string newText = Console.ReadLine();

                                postObject.Text = newText;

                                postRepo.UpdatePost(postObject);
                            }

                            if (threadInput == "3")
                            {
                                Console.WriteLine("What is the ID of the post you want to delete?");
                                string deletePostId = Console.ReadLine();

                                int editPostInt = int.Parse(deletePostId);

                                Post postObject = new Post();

                                postObject = postRepo.GetPostWithId(editPostInt);

                                postRepo.DeletePost(postObject);

                                var obj = threadRepo.GetThreadWithId(threadId);
                                obj.PostCount = obj.PostCount - 1;
                                threadRepo.UpdateThreadPostCount(obj);

                                Console.Clear();
                                break;
                            }
                        }
                    }
                    continue;
                }

                if (x == "2")
                {
                    Console.Clear();

                    userRepo.GetUsers();
                    PrintUsers(userRepo);
                    continue;
                }
                x = "";
            }
        }
Example #15
0
        /// <summary>
        /// Registers resources that classes will depend on
        /// </summary>
        /// <returns>Task.</returns>
        protected override async Task RegisterResources()
        {
            ServerKernel = new Kernel();

            await base.RegisterResources().ConfigureAwait(false);

            RegisterSingleInstance <IHttpResultFactory>(new HttpResultFactory(LogManager));

            RegisterSingleInstance <IServerApplicationHost>(this);
            RegisterSingleInstance <IServerApplicationPaths>(ApplicationPaths);

            RegisterSingleInstance(ServerKernel);
            RegisterSingleInstance(ServerConfigurationManager);

            RegisterSingleInstance <IWebSocketServer>(() => new AlchemyServer(Logger));

            RegisterSingleInstance <IIsoManager>(() => new PismoIsoManager(Logger));
            RegisterSingleInstance <IBlurayExaminer>(() => new BdInfoExaminer());

            ZipClient = new DotNetZipClient();
            RegisterSingleInstance(ZipClient);

            UserDataRepository = new SqliteUserDataRepository(ApplicationPaths, JsonSerializer, LogManager);
            RegisterSingleInstance(UserDataRepository);

            UserRepository = new SqliteUserRepository(ApplicationPaths, JsonSerializer, LogManager);
            RegisterSingleInstance(UserRepository);

            DisplayPreferencesRepository = new SqliteDisplayPreferencesRepository(ApplicationPaths, JsonSerializer, LogManager);
            RegisterSingleInstance(DisplayPreferencesRepository);

            ItemRepository = new SqliteItemRepository(ApplicationPaths, JsonSerializer, LogManager);
            RegisterSingleInstance(ItemRepository);

            UserManager = new UserManager(Logger, ServerConfigurationManager);
            RegisterSingleInstance(UserManager);

            LibraryManager = new LibraryManager(Logger, TaskManager, UserManager, ServerConfigurationManager, UserDataRepository, () => DirectoryWatchers);
            RegisterSingleInstance(LibraryManager);

            DirectoryWatchers = new DirectoryWatchers(LogManager, TaskManager, LibraryManager, ServerConfigurationManager);
            RegisterSingleInstance(DirectoryWatchers);

            ProviderManager = new ProviderManager(HttpClient, ServerConfigurationManager, DirectoryWatchers, LogManager, LibraryManager);
            RegisterSingleInstance(ProviderManager);

            RegisterSingleInstance <ILibrarySearchEngine>(() => new LuceneSearchEngine(ApplicationPaths, LogManager, LibraryManager));

            MediaEncoder = new MediaEncoder(LogManager.GetLogger("MediaEncoder"), ZipClient, ApplicationPaths, JsonSerializer);
            RegisterSingleInstance(MediaEncoder);

            var clientConnectionManager = new SessionManager(UserDataRepository, ServerConfigurationManager, Logger, UserRepository);

            RegisterSingleInstance <ISessionManager>(clientConnectionManager);

            HttpServer = await _httpServerCreationTask.ConfigureAwait(false);

            RegisterSingleInstance(HttpServer, false);

            ServerManager = new ServerManager(this, JsonSerializer, Logger, ServerConfigurationManager);
            RegisterSingleInstance(ServerManager);

            LocalizationManager = new LocalizationManager(ServerConfigurationManager);
            RegisterSingleInstance(LocalizationManager);

            var displayPreferencesTask = Task.Run(async() => await ConfigureDisplayPreferencesRepositories().ConfigureAwait(false));
            var itemsTask    = Task.Run(async() => await ConfigureItemRepositories().ConfigureAwait(false));
            var userdataTask = Task.Run(async() => await ConfigureUserDataRepositories().ConfigureAwait(false));
            var userTask     = Task.Run(async() => await ConfigureUserRepositories().ConfigureAwait(false));

            await ConfigureNotificationsRepository().ConfigureAwait(false);

            await Task.WhenAll(itemsTask, userTask, displayPreferencesTask, userdataTask).ConfigureAwait(false);

            SetKernelProperties();
        }