Пример #1
0
        /// <summary>
        /// Dodaj nową książkę do bazy danych.
        /// </summary>
        /// <param name="title">Tytuł ksiązki</param>
        /// <param name="purchaseDate">Data zakupu ksiązki</param>
        /// <param name="genere">Gatunek</param>
        /// <param name="shelf">Półka, na której znajduje się książka</param>
        /// <param name="authors">Lista autorów książki</param>
        public void AddBook(string title, DateTime purchaseDate, Genere genere, Shelf shelf, List <Author> authors)
        {
            title = title.Trim();

            if (title == null || title == "" || purchaseDate == null || genere == null || shelf == null || authors == null || authors.Count == 0)
            {
                throw new ArgumentNullException();
            }

            if (purchaseDate > DateTime.Now)
            {
                throw new ArgumentOutOfRangeException();
            }

            Book bookToAdd = new Book()
            {
                Title        = title,
                PurchaseDate = purchaseDate,
                GenereId     = genere.GenereId,
                ShelfId      = shelf.ShelfId
            };

            using (BookshelfContext context = new BookshelfContext())
            {
                context.Add(bookToAdd);
                context.SaveChanges();
            }

            foreach (Author author in authors)
            {
                AddBookAuthor(bookToAdd, author);
            }
        }
Пример #2
0
 /// <summary>
 /// Zwraca listę półek, które znajdują się aktualnie w bazie danych.
 /// </summary>
 /// <returns>Lista obiektów klasy <c>Shelf</c></returns>
 public List <Shelf> GetShelfs()
 {
     using (BookshelfContext context = new BookshelfContext())
     {
         return(context.Shelfs.ToList());
     }
 }
Пример #3
0
 /// <summary>
 /// Zwraca listę autorów, którzy znajdują się aktualnie w bazie danych.
 /// </summary>
 /// <returns>Lista obiektów klasy <c>Author</c></returns>
 public List <Author> GetAuthors()
 {
     using (BookshelfContext context = new BookshelfContext())
     {
         return(context.Authors.ToList());
     }
 }
Пример #4
0
 /// <summary>
 /// Zwraca listę gatunków, które znajdują się aktualnie w bazie danych.
 /// </summary>
 /// <returns>Lista obiektów klasy <c>Genere</c></returns>
 public List <Genere> GetGeneres()
 {
     using (BookshelfContext context = new BookshelfContext())
     {
         return(context.Generes.ToList());
     }
 }
Пример #5
0
 /// <summary>
 /// Usuwa istniejącą w bazie półkę.
 /// </summary>
 /// <param name="shelfToRemove">Półka, która ma zostać usunięta z bazy</param>
 public void RemoveShelf(Shelf shelfToRemove)
 {
     using (BookshelfContext context = new BookshelfContext())
     {
         context.Remove(shelfToRemove);
         context.SaveChanges();
     }
 }
Пример #6
0
 /// <summary>
 /// Usuwa istniejący w bazie gatunek.
 /// </summary>
 /// <param name="genereToRemove">Gatunek, który ma zostać usunięty z bazy</param>
 public void RemoveGenere(Genere genereToRemove)
 {
     using (BookshelfContext context = new BookshelfContext())
     {
         context.Remove(genereToRemove);
         context.SaveChanges();
     }
 }
Пример #7
0
 /// <summary>
 /// Usuwa istniejącego w bazie autora.
 /// </summary>
 /// <param name="authorToRemove">Autor, który ma zostać usunięty z bazy</param>
 public void RemoveAuthor(Author authorToRemove)
 {
     using (BookshelfContext context = new BookshelfContext())
     {
         context.Remove(authorToRemove);
         context.SaveChanges();
     }
 }
Пример #8
0
 /// <summary>
 /// Zwraca listę autorów danej książki.
 /// </summary>
 /// <param name="book">Książka, której autorzy mają zostać zwróceni</param>
 /// <returns>Lista obiektów klasy <c>Author</c></returns>
 public List <Author> GetBookAuthors(Book book)
 {
     using (BookshelfContext context = new BookshelfContext())
     {
         return(context.BookAuthors
                .Where(x => x.BookId == book.BookId)
                .Include("Author")
                .Select(x => x.Author).ToList());
     }
 }
Пример #9
0
 /// <summary>
 /// Zwraca listę książek, które znajdują się aktualnie w bazie danych.
 /// </summary>
 /// <returns>Lista obiektów klasy <c>Book</c></returns>
 public List <Book> GetBooks()
 {
     using (BookshelfContext context = new BookshelfContext())
     {
         return(context.Books
                .Include("Genere")
                .Include("Shelf")
                .ToList());
     }
 }
Пример #10
0
        /// <summary>
        /// Resetuje licznik przeczytań książki
        /// </summary>
        /// <param name="book">Książka, której licznik ma zostać zresetowany</param>
        public void ResetBookReadCount(Book book)
        {
            if (book == null)
            {
                throw new ArgumentNullException();
            }

            using (BookshelfContext context = new BookshelfContext())
            {
                book.ReadCount = 0;
                context.Update(book);
                context.SaveChanges();
            }
        }
Пример #11
0
        /// <summary>
        /// Zwiększa licznik przeczytań książki o 1.
        /// </summary>
        /// <param name="bookRead">Przeczytana książka</param>
        public void IncrementBookReadCount(Book bookRead)
        {
            if (bookRead == null)
            {
                throw new ArgumentNullException();
            }

            using (BookshelfContext context = new BookshelfContext())
            {
                bookRead.ReadCount++;
                context.Update(bookRead);
                context.SaveChanges();
            }
        }
Пример #12
0
        /// <summary>
        /// Modyfikuje istniejącą w bazie półkę.
        /// </summary>
        /// <param name="shelfToModify">Pólka, która ma zostać zmodyfikowana</param>
        /// <param name="name">Nowa nazwa półki</param>
        public void ModifyShelf(Shelf shelfToModify, string name)
        {
            name = name.Trim();

            if (shelfToModify == null || name == null || name == "")
            {
                throw new ArgumentNullException();
            }

            shelfToModify.ShelfName = name;

            using (BookshelfContext context = new BookshelfContext())
            {
                context.Update(shelfToModify);
                context.SaveChanges();
            }
        }
Пример #13
0
        private static (DbConnection, Func <BookshelfContext>) CreateDbContext()
        {
            DbConnection connection = new SqliteConnection("DataSource=:memory:");

            connection.Open();

            var options = new DbContextOptionsBuilder <BookshelfContext>()
                          .UseSqlite(connection)
                          .Options;

            var context = new BookshelfContext(options);

            context.ChangeTracker.QueryTrackingBehavior = QueryTrackingBehavior.NoTracking;

            context.Database.EnsureCreated();
            return(connection, () => new BookshelfContext(options));
        }
Пример #14
0
        /// <summary>
        /// Usuwa autora z danej książki.
        /// </summary>
        /// <param name="book">Książka, z której ma zostać usunięty dany autor</param>
        /// <param name="author">Autor, który ma zostać usunięty z danej książki</param>
        public void RemoveAuthorFromBook(Book book, Author author)
        {
            if (book == null || author == null)
            {
                throw new ArgumentNullException();
            }

            using (BookshelfContext context = new BookshelfContext())
            {
                context.Remove(new BookAuthor()
                {
                    BookId   = book.BookId,
                    AuthorId = author.AuthorId
                });
                context.SaveChanges();
            }
        }
Пример #15
0
        /// <summary>
        /// Modyfikuje istniejący w bazie gatunek.
        /// </summary>
        /// <param name="genereToModify">Autor, który ma zostać zmodyfikowany</param>
        /// <param name="name">Nowa nazwa gatunku</param>
        public void ModifyGenere(Genere genereToModify, string name)
        {
            name = name.Trim();

            if (genereToModify == null || name == null || name == "")
            {
                throw new ArgumentNullException();
            }

            genereToModify.GenereName = name;

            using (BookshelfContext context = new BookshelfContext())
            {
                context.Update(genereToModify);
                context.SaveChanges();
            }
        }
Пример #16
0
        /// <summary>
        /// Usuwa istniejącą w bazie książkę.
        /// </summary>
        /// <param name="bookToRemove">Książka, która ma zostać usunieta</param>
        public void RemoveBook(Book bookToRemove)
        {
            if (bookToRemove == null)
            {
                throw new ArgumentNullException();
            }

            foreach (Author bookAuthor in GetBookAuthors(bookToRemove))
            {
                RemoveAuthorFromBook(bookToRemove, bookAuthor);
            }

            using (BookshelfContext context = new BookshelfContext())
            {
                context.Remove(bookToRemove);
                context.SaveChanges();
            }
        }
Пример #17
0
        /// <summary>
        /// Dodaje nowy gatunek do bazy danych.
        /// </summary>
        /// <param name="name">Nazwa nowego gatunku</param>
        public void AddGenere(string name)
        {
            name = name.Trim();

            if (name == null || name == "")
            {
                throw new ArgumentNullException();
            }

            using (BookshelfContext context = new BookshelfContext())
            {
                context.Add(new Genere()
                {
                    GenereName = name
                });
                context.SaveChanges();
            }
        }
Пример #18
0
        /// <summary>
        /// Modyfikuje dane instniejącego w bazie autora.
        /// </summary>
        /// <param name="authorToModify">Autor, który ma zostać zmodyfikowany</param>
        /// <param name="firstName">Nowe imię autora</param>
        /// <param name="lastName">Nowe nazwisko autora</param>
        public void ModifyAuthor(Author authorToModify, string firstName, string lastName)
        {
            firstName = firstName.Trim();
            lastName  = lastName.Trim();

            if (authorToModify == null || firstName == "" || firstName == null || lastName == "" || lastName == null)
            {
                throw new ArgumentNullException();
            }

            authorToModify.FirstName = firstName;
            authorToModify.LastName  = lastName;

            using (BookshelfContext context = new BookshelfContext())
            {
                context.Update(authorToModify);
                context.SaveChanges();
            }
        }
Пример #19
0
        /// <summary>
        /// Modyfikuje istniejącą w bazie książkę.
        /// </summary>
        /// <param name="bookToModify">Książka, która ma zostać zmodyfikowana</param>
        /// <param name="title">Nowy tytuł</param>
        /// <param name="purchaseDate">Nowa data zakupu</param>
        /// <param name="genere">Nowy gatunek</param>
        /// <param name="shelf">Nowa półka</param>
        public void ModifyBook(Book bookToModify, string title, DateTime purchaseDate, Genere genere, Shelf shelf, List <Author> authors)
        {
            title = title.Trim();

            if (title == null || title == "" || purchaseDate == null || genere == null || shelf == null || authors == null || authors.Count == 0)
            {
                throw new ArgumentNullException();
            }

            if (purchaseDate > DateTime.Now)
            {
                throw new ArgumentOutOfRangeException();
            }

            bookToModify.Title        = title;
            bookToModify.PurchaseDate = purchaseDate;
            bookToModify.Genere       = genere;
            bookToModify.Shelf        = shelf;

            using (BookshelfContext context = new BookshelfContext())
            {
                context.Update(bookToModify);
                context.SaveChanges();
            }

            List <Author> currentBookAuthors = GetBookAuthors(bookToModify);

            foreach (Author authorToRemove in currentBookAuthors)
            {
                if (!authors.Contains(authorToRemove))
                {
                    RemoveAuthorFromBook(bookToModify, authorToRemove);
                }
            }

            foreach (Author authorToAdd in authors)
            {
                if (!currentBookAuthors.Contains(authorToAdd))
                {
                    AddBookAuthor(bookToModify, authorToAdd);
                }
            }
        }
Пример #20
0
        /// <summary>
        /// Dodaje nowego autora do bazy danych.
        /// </summary>
        /// <param name="firstName">Imię autora</param>
        /// <param name="lastName">Nazwisko autora</param>
        public void AddAuthor(string firstName, string lastName)
        {
            firstName = firstName.Trim();
            lastName  = lastName.Trim();

            if (firstName == "" || firstName == null || lastName == "" || lastName == null)
            {
                throw new ArgumentNullException();
            }

            using (BookshelfContext context = new BookshelfContext())
            {
                context.Authors.Add(new Author()
                {
                    FirstName = firstName,
                    LastName  = lastName
                });
                context.SaveChanges();
            }
        }
Пример #21
0
 public BookRepository(BookshelfContext context)
 {
     this.db = context;
 }
Пример #22
0
 public AuthorRepository(BookshelfContext context)
 {
     this.db = context;
 }
Пример #23
0
        public static async Task InsertAsync(BookshelfContext db)
        {
            await db.Books.AddRangeAsync
            (
                new Book()
            {
                Isbn      = "978-5-8459-2015-7",
                Title     = "C# 4.0 : полное руководство",
                Publisher = "Вильямс",

                PagesTotal      = 1056,
                PublicationYear = 2018,

                Authors = new[]
                {
                    new Author()
                    {
                        Name    = "Г.",
                        Surname = "Шилдт"
                    }
                }
            },
                new Book()
            {
                Isbn  = "978-5-94074-537-2",
                Title = "Параллельное пр-е на С++ в действии",

                PagesTotal      = 672,
                PublicationYear = 2016,

                Authors = new[]
                {
                    new Author()
                    {
                        Name    = "Энтони",
                        Surname = "Уильямс"
                    },
                    new Author()
                    {
                        Name    = "А. А.",
                        Surname = "Слинкин"
                    }
                }
            },
                new Book()
            {
                Isbn  = "978-5-8459-1984-7",
                Title = "Исксств пргрммрвня. Т.1. Осн. алг.",

                PagesTotal      = 722,
                PublicationYear = 1998,

                Authors = new[]
                {
                    new Author()
                    {
                        Name    = "Дональд",
                        Surname = "Кнут"
                    }
                }
            },
                new Book()
            {
                Isbn  = "5-94157-229-8",
                Title = "Техника отладки пргрмм без ис. т.",

                PagesTotal = 823,

                Authors = new[]
                {
                    new Author()
                    {
                        Name    = "Крис",
                        Surname = "Касперски"
                    }
                }
            }
            );

            await db.SaveChangesAsync();
        }
Пример #24
0
 public BookshelfService(BookshelfContext db, IMapper mapper)
 => (_context, _mapper) = (db, mapper);
Пример #25
0
 public AppUserStore(BookshelfContext context)
 {
     this.db = context;
 }
Пример #26
0
 public UnitOfWork(string connectionString)
 {
     db = new BookshelfContext(connectionString);
 }