public void Context_Returns_Correct_Result_For_Users_And_Books()
        {
            //Arrange
            using var context = new ELibraryContext(_options);

            //Act
            int usersCount = context.Users.Count();

            //int booksCount = context.Books.Count();

            usersCount.Should().Be(2);
            //booksCount.Should().Be(4);
        }
        public static void SetupContext(
            DbContextOptions <ELibraryContext> options,
            Fixture fixture)
        {
            using var context = new ELibraryContext(options);

            int userId1 = fixture.Create <int>();
            int userId2 = fixture.Create <int>();

            User user1 = fixture.Build <User>()
                         .With(x => x.Id, userId1)
                         .Without(x => x.FavoriteBooks)
                         .Without(x => x.BooksOnLoan)
                         .Create();
            User user2 = fixture.Build <User>()
                         .With(x => x.Id, userId2)
                         .Without(x => x.BooksOnLoan)
                         .Without(x => x.FavoriteBooks)
                         .Create();

            string isbn1 = fixture.Create <string>();
            string isbn2 = fixture.Create <string>();
            string isbn3 = fixture.Create <string>();
            string isbn4 = fixture.Create <string>();

            Book book1 = fixture.Build <Book>()
                         .With(x => x.ISBN, isbn1)
                         .Without(x => x.BooksOnLoan)
                         .Without(x => x.UseFavoriteBooks)
                         .Create();
            Book book2 = fixture.Build <Book>()
                         .With(x => x.ISBN, isbn2)
                         .Without(x => x.BooksOnLoan)
                         .Without(x => x.UseFavoriteBooks)
                         .Create();
            Book book3 = fixture.Build <Book>()
                         .With(x => x.ISBN, isbn3)
                         .Without(x => x.BooksOnLoan)
                         .Without(x => x.UseFavoriteBooks)
                         .Create();
            Book book4 = fixture.Build <Book>()
                         .With(x => x.ISBN, isbn4)
                         .Without(x => x.BooksOnLoan)
                         .Without(x => x.UseFavoriteBooks)
                         .Create();

            context.Users.AddRange(user1, user2);

            context.SaveChanges();
        }
        public void GetFirstOrDefaultBy_Returns_Default_Result()
        {
            //Arrange
            using var context = new ELibraryContext(_options);
            var DataRepository = new DataRepository <Book>(context);
            var book           = _fixture.Build <Book>()
                                 .Without(x => x.BooksOnLoan)
                                 .Without(x => x.UseFavoriteBooks)
                                 .Create();

            //Act
            Book result = DataRepository.GetFirstOrDefaultBy(x => x.ISBN == book.ISBN);

            //Assert
            result.Should().BeNull();
        }
Exemple #4
0
 public BooksController(ELibraryContext context)
 {
     _context = context;
 }
 public void Dispose()
 {
     using var context = new ELibraryContext(_options);
     context.Database.EnsureDeleted();
 }
Exemple #6
0
 public ReservationRepository(ELibraryContext context)
 {
     _context = context;
 }
Exemple #7
0
        public static List <RecommendBook> GetRecomendations(ELibraryContext context, string userId)
        {
            Dictionary <string, Dictionary <int, float> > dRatings = new Dictionary <string, Dictionary <int, float> >();
            List <Rating> ratings    = context.Ratings.ToList();
            var           userRating = dRatings[userId] = new Dictionary <int, float>();

            ratings.ForEach(r =>
            {
                if (!dRatings.ContainsKey(r.UserId))
                {
                    dRatings[r.UserId] = new Dictionary <int, float>();
                }
                dRatings[r.UserId][r.BookId] = (float)r.Value;
            });

            Dictionary <string, float> diff = new Dictionary <string, float>();

            for (int i = 0; i < dRatings.Count; ++i)
            {
                float sum   = 0;
                int   count = 0;
                for (int j = 0; j < userRating.Count; ++j)
                {
                    var   item = userRating.ElementAt(j);
                    float rat  = userRating[item.Key];

                    if (dRatings.ElementAt(i).Value.ContainsKey(item.Key))
                    {
                        float rat2 = dRatings.ElementAt(i).Value[item.Key];
                        sum += Math.Abs(rat - rat2);
                        count++;
                    }
                }
                if (count >= 3)
                {
                    diff[dRatings.ElementAt(i).Key] = sum / userRating.Count;
                }
            }

            CollaborativeFilter collaborativeFilter = new CollaborativeFilter();

            int userCount = 0;

            for (int i = 0; i < dRatings.Count; ++i)
            {
                if (diff.ContainsKey(dRatings.ElementAt(i).Key) && diff[dRatings.ElementAt(i).Key] <= 2)
                {
                    collaborativeFilter.AddRatings(dRatings.ElementAt(i).Value);
                    userCount++;
                }
            }

            if (userCount < 3)
            {
                return(new List <RecommendBook>());
            }

            IDictionary <int, float> Recomendations = collaborativeFilter.Recomend(userRating);

            return(context.Books.ToList().Where(b => Recomendations.ContainsKey(b.Id)).Select(b => new RecommendBook {
                Book = b, Rating = Recomendations[b.Id]
            }).Where(r => r.Rating >= 6).ToList());
        }
 public CommentRepository(ELibraryContext context)
 {
     _context = context;
 }
Exemple #9
0
 public StatusRepository(ELibraryContext context)
 {
     _context = context;
 }
Exemple #10
0
 public DataRepository(ELibraryContext context)
 {
     _context = context;
     _dbSet   = _context.Set <TEntity>();
 }
 public UsersController(ELibraryContext context)
 {
     _context = context;
 }
Exemple #12
0
 public UserRepository(ELibraryContext context)
 {
     _context = context;
 }
Exemple #13
0
 public BookRepository(ELibraryContext context)
 {
     _context = context;
 }
 public AuthorRepository(ELibraryContext context)
 {
     _context = context;
 }