private async Task _savePageAsync()
        {
            var book = await BookHelper.OpenAsync(WebBrowser.Source);

            if (book != null)
            {
                Toast.ShowInfo($"下载成功!共下载了 {book.Count} 章");
                return;
            }
            book = new Book()
            {
                Name    = WebBrowser.DocumentTitle,
                IsLocal = false,
                Count   = 1,
                Url     = WebBrowser.Source.AbsoluteUri
            };
            var chapter = new BookChapter()
            {
                Name = book.Name,
                Url  = WebBrowser.Source.ToString(),
            };

            chapter.Content = BookHelper.HtmlToText(await GetBody());
            SqlHelper.Conn.Open();
            book.Save();
            chapter.BookId = book.Id;
            chapter.Save();
            SqlHelper.Conn.Close();
            Toast.ShowInfo("页面保存成功!");
        }
Example #2
0
        /// <summary>
        /// Issues the book to a specific student.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnIssue_Click(object sender, EventArgs e)
        {
            int    available = int.Parse(dgvIssueBook.CurrentRow.Cells["Available"].Value.ToString());
            string title     = dgvIssueBook.CurrentRow.Cells["Title"].Value.ToString();
            string student   = cmbStudentName.SelectedItem.ToString();

            BookHelper.CurrentId = int.Parse(dgvIssueBook.CurrentRow.Cells["BookId"].Value.ToString());


            if (available > 0)
            {
                available--;

                IssuedBook book = new IssuedBook(null, int.Parse(cmbId.SelectedItem.ToString()), int.Parse(dgvIssueBook.CurrentRow.Cells["BookId"].Value.ToString()), student, title, dgvIssueBook.CurrentRow.Cells["Author"].Value.ToString(), DateTime.Today.ToString("MM/dd/yyyy"), dtpDueDate.Value.ToString("MM/dd/yyyy"), int.Parse(dgvIssueBook.CurrentRow.Cells["Copies"].Value.ToString()), available, "NO", 0);

                if (BookHelper.IssueBook(book) > 0)
                {
                    DialogResult result = MessageBox.Show("A copy of " + title + " was issued to student: " + student, "Book Issued", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    if (result == DialogResult.OK)
                    {
                        BookHelper.LoadActive(dgvIssueBook);
                        cmbId.SelectedIndex          = -1;
                        cmbStudentName.SelectedIndex = -1;
                        dtpDueDate.Value             = DateTime.Today.AddDays(10);
                    }
                }
            }
        }
Example #3
0
        private void Button2_Click(object sender, EventArgs e)
        {
            Book newBook = new Book
            {
                Name = textBox1.Text
            };

            List <Author> authors = new List <Author>();

            foreach (var item in listBox1.SelectedItems)
            {
                authors.Add(AuthorHelper.MapAuthorModel((AuthorModel)item));
            }

            newBook.Authors = authors;

            List <Genre> genres = new List <Genre>();

            foreach (var item in listBox2.SelectedItems)
            {
                genres.Add(GenreHelper.MapGenreModel((GenreModel)(item)));
            }

            newBook.Genres    = genres;
            newBook.PageCount = Convert.ToInt32(textBox2.Text);

            bool isAdded = BookHelper.Addbook(newBook);

            if (isAdded)
            {
                this.LoadBooks();
            }
        }
        public IHttpActionResult Search(SearchModel model)
        {
            List <Book>      books;
            List <BookModel> models;
            var    hostAddr = string.Format("{0}://{1}:{2}", Request.RequestUri.Scheme, Request.RequestUri.Host, Request.RequestUri.Port);
            string imgAddr  = hostAddr + "/Content/UploadedFiles/";

            if (Request.Headers.TryGetValues("Token", out IEnumerable <string> tokens))
            {
                string token    = tokens.FirstOrDefault();
                string username = TokenManager.ValidateToken(token);
                if (username != null)
                {
                    var acc = db.Accounts.Include(x => x.Role).FirstOrDefault(x => x.UserName == username);
                    if (acc != null && acc.Role.Name == "Admin")
                    {
                        books = db.Books.Include(x => x.Author).Include(x => x.BookType).ToList();
                        books.ForEach(x => x.Image = x.Image != null ? imgAddr + x.Image : x.Image);
                        books  = BookHelper.Search(books, model);
                        models = BookModel.Import(books);
                        return(Ok(models));
                    }
                }
            }

            books = db.Books.Where(x => x.IsDeleted == false).Include(x => x.Author).Include(x => x.BookType).ToList();
            books.ForEach(x => x.Image = x.Image != null ? imgAddr + x.Image : x.Image);
            books  = BookHelper.Search(books, model);
            models = BookModel.Import(books);
            return(Ok(models));
        }
Example #5
0
        public static bool UpdateBookCover(ref Book b, string filepath, bool submit)
        {
            if (!System.IO.File.Exists(@"D:\Program Files\PDF2Image v2.0\pdf2img.exe"))
            {
                return(false);
            }
            string imgfile = "D:\\1.bmp";

            if (filepath.ToUpper().EndsWith(".PDF"))
            {
                if (System.IO.File.Exists(imgfile))
                {
                    System.IO.File.Delete(imgfile);
                }
                Process p = pdf2img(filepath, imgfile);
                p.WaitForExit(10000);
                try
                {
                    b.BookCover = BookHelper.BookCoverConvert(imgfile);
                    if (submit)
                    {
                        JianLiLinq.Default.DB.SubmitChanges();
                    }
                    return(true);
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);
                    return(false);
                }
            }
            return(false);
        }
Example #6
0
 /// <summary>
 /// Reloads the data if the search bar is empty.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void txtSearch_TextChanged(object sender, EventArgs e)
 {
     if (txtSearch.Text == "")
     {
         BookHelper.LoadActive(dgvIssueBook);
     }
 }
        public void CanCreateLoan()
        {
            ILoanHelper loanHelper = new LoanHelper();
            ILoanDAO loanDao = new LoanDao(loanHelper);

            IMemberHelper memberHelper = new MemberHelper();
            IMemberDAO memberDao = new MemberDao(memberHelper);

            IBookHelper bookHelper = new BookHelper();
            IBookDAO bookDao = new BookDao(bookHelper);

            var borrowDate = DateTime.Today;
            var dueDate = DateTime.Today.AddDays(7);

            var member = memberDao.AddMember("Jim", "Tulip", "csu phone", "*****@*****.**");

            var book = bookDao.AddBook("Jim Tulip", "Adventures in Programming", "call number");

            var loan = loanDao.CreateLoan(member, book, borrowDate, dueDate);

            Assert.NotNull(loan);

            Assert.Empty(loanDao.LoanList);

            Assert.Equal(book, loan.Book);
            Assert.Equal(member, loan.Borrower);

            Assert.Equal(0, loan.ID);
        }
Example #8
0
        //http://stackoverflow.com/questions/5826649/returning-a-file-to-view-download-in-asp-net-mvc


        // I have file not found issue
        // here is a work around
        // https://github.com/aspnet/Mvc/issues/5053
        public IActionResult GetKindleFile(string url)
        {
            // check domain
            var firstPageUri = new Uri(url);

            if (firstPageUri.Scheme == "file")
            {
                var note       = new MyNote();
                var bookHelper = new BookHelper(note);
                var kindleFile = bookHelper.CreateKindleFiles(url, true);
            }
            else
            {
                // special for thuvienhoasen 1 tac gia
                if (firstPageUri.Host == "thuvienhoasen.org" && firstPageUri.Segments.Contains("author/"))
                {
                    var collection = new ThuVienHoaSenCollection();
                    collection.GetWholeCollection(url);
                }
                else
                {
                    GeneralSite setting = SettingFactory.Get(url);

                    if (setting != null)
                    {
                        var bookHelper = new BookHelper(setting);
                        var kindleFile = bookHelper.CreateKindleFiles(url);
                    }
                }
            }

            return(View("Index"));
        }
        public void CanUpdateOverdueStatus()
        {
            ILoanHelper loanHelper = new LoanHelper();
            ILoanDAO    loanDao    = new LoanDao(loanHelper);

            IMemberHelper memberHelper = new MemberHelper();
            IMemberDAO    memberDao    = new MemberDao(memberHelper);

            IBookHelper bookHelper = new BookHelper();
            IBookDAO    bookDao    = new BookDao(bookHelper);

            var borrowDate = DateTime.Today;
            var dueDate    = DateTime.Today.AddDays(7);

            var member = memberDao.AddMember("Jim", "Tulip", "csu phone", "*****@*****.**");

            var book = bookDao.AddBook("Jim Tulip", "Adventures in Programming", "call number");

            var loan = loanDao.CreateLoan(member, book, borrowDate, dueDate);

            loanDao.CommitLoan(loan);

            Assert.Equal(LoanState.CURRENT, loan.State);

            loanDao.UpdateOverDueStatus(DateTime.Today.AddMonths(1));

            Assert.Equal(LoanState.OVERDUE, loan.State);
        }
Example #10
0
        private void SetBooks(Book[] books)
        {
            this.listView1.Items.Clear();

            foreach (Book b in books)
            {
                ListViewItem i = new ListViewItem();
                i.Text = b.BookName;
                BookAndUser bu = new BookAndUser();
                bu.UserBook   = JianLiLinq.Default.GetUserBook(b);
                bu.Book       = b;
                i.Tag         = bu;
                i.ToolTipText = b.BookDesc;
                if (b.BookCover != null)
                {
                    Image bm = BookHelper.BookCoverConvert(b.BookCover);
                    imageList1.Images.Add(bm);
                    i.ImageIndex = imageList1.Images.Count - 1;
                }
                else
                {
                    i.ImageIndex = 0;
                }
                this.listView1.Items.Add(i);
            }
        }
        public void EditViewModelValidationErrorRepopulatesAuthorsDropdown()
        {
            //Arrange
            var    repository   = Mock.Create <IRepository>();
            int    bookId       = 1;
            int    authorId     = 3;
            string errorMessage = "The minimal length for the title is 3";
            var    book         = new BookEditViewModel()
            {
                AuthorId = AuthorHelper.RobertMartin(authorId).AuthorId,
                BookId   = BookHelper.CleanCode(bookId, authorId).BookId,
                Title    = "12", //Too short, min is 3 (defined in the view model)
                Genre    = BookHelper.CleanCode(bookId, authorId).Genre,
            };

            Mock.Arrange(() => repository.Save((Book)Arg.AnyObject)).OccursNever();
            var authorsList = new List <Author>()
            {
                AuthorHelper.RobertMartin(1), AuthorHelper.JRRTolkien(authorId)
            };

            Mock.Arrange(() => repository.GetAllAuthors()).Returns(authorsList).OccursOnce();

            //Act
            var controller = new HomeController(repository);

            controller.ModelState.AddModelError("Title", errorMessage);       //add the view model validation error
            controller.ControllerContext = Mock.Create <ControllerContext>(); //needed by TryValidateModel(entity)
            var result = controller.Edit(book) as ViewResult;

            //Assert
            StandardAssertsForEditErrors(controller, result, book, errorMessage);
            Mock.Assert(repository);
        }
        public void EditDBExceptionRepopulatesAuthorsDropdown()
        {
            //Arrange
            var repository       = Mock.Create <IRepository>();
            int bookId           = 1;
            int authorId         = 1;
            var exceptionMessage = "test exception with message";
            var book             = new BookEditViewModel()
            {
                AuthorId = AuthorHelper.RobertMartin(authorId).AuthorId,
                BookId   = BookHelper.CleanCode(bookId, authorId).BookId,
                Title    = BookHelper.CleanCode(bookId, authorId).Title,
                Genre    = BookHelper.CleanCode(bookId, authorId).Genre,
            };

            Mock.Arrange(() => repository.Save((Book)Arg.AnyObject)).Throws(new Exception(exceptionMessage)).OccursOnce();
            var authorsList = new List <Author>()
            {
                AuthorHelper.RobertMartin(1), AuthorHelper.JRRTolkien(authorId)
            };

            Mock.Arrange(() => repository.GetAllAuthors()).Returns(authorsList).OccursOnce();

            //Act
            var controller = new HomeController(repository);

            controller.ControllerContext = Mock.Create <ControllerContext>(); //needed by TryValidateModel(entity)
            var result = controller.Edit(book) as ViewResult;


            //Assert
            StandardAssertsForEditErrors(controller, result, book, exceptionMessage);
            Mock.Assert(repository);
        }
        public void EditIndexShowsBookEditFormWithBookContentWithPopulatedDropDownList()
        {
            //Arrange
            var repository = Mock.Create <IRepository>();
            var bookToEdit = BookHelper.CleanCode(bookId: 2, authorId: 1);

            Mock.Arrange(() => repository.GetBook(bookToEdit.BookId)).Returns(bookToEdit).OccursOnce();
            //called to populate the dropdownlist
            Mock.Arrange(() => repository.GetAllAuthors()).Returns(
                new List <Author>()
            {
                AuthorHelper.RobertMartin(1),
                AuthorHelper.RoyOsherove(2),
            }).OccursOnce();

            //Act
            var controller   = new HomeController(repository);
            var result       = controller.Edit(bookToEdit.BookId) as ViewResult;
            var model        = result.Model as BookEditViewModel;
            var selectedItem = model.Authors.Find(b => Int32.Parse(b.Value) == bookToEdit.AuthorId);

            //Assert
            Assert.IsNotNull(model);
            Assert.AreEqual(model.BookId, bookToEdit.BookId);
            Assert.AreEqual(model.AuthorId, bookToEdit.AuthorId);
            Assert.AreEqual(model.Genre, bookToEdit.Genre);
            Assert.AreEqual(model.Title, bookToEdit.Title);
            Assert.IsTrue(selectedItem.Selected);
            Assert.IsNull(result.ViewBag.Message);
            Mock.Assert(repository);
        }
        //http://stackoverflow.com/questions/5826649/returning-a-file-to-view-download-in-asp-net-mvc

        // I have file not found issue
        // here is a work around
        // https://github.com/aspnet/Mvc/issues/5053
        public IActionResult GetKindleFile(string url)
        {
            // check domain
            var firstPageUri = new Uri(url);

            if (firstPageUri.Host.Contains("thuvienhoasen.org"))
            {
                var thuvienhoasen = new ThuVienHoaSen();
                var bookHelper    = new BookHelper(thuvienhoasen);
                //bookHelper.DownloadFolder = AppContext.BaseDirectory; // in case web app cannot access to a file outside of its folder
                // var firstUrlPath = @"/a17221/ban-do-tu-phat";
                // var firstUrlPath = @"/p27a10044/1/bai-van-khuyen-phat-tam-bo-de";

                // this works
                var kindleFile = bookHelper.CreateKindleFiles(url);
                // var fileContent = new System.IO.FileStream(kindleFile, System.IO.FileMode.Open);
                // return File(fileContent, "application/octet-stream", System.IO.Path.GetFileName(kindleFile));
            }
            else if (firstPageUri.Scheme == "file")
            {
                var note       = new MyNote();
                var bookHelper = new BookHelper(note);
                var kindleFile = bookHelper.CreateKindleFiles(url, true);
            }

            return(View("Index"));
        }
Example #15
0
 /// <summary>
 /// Makes all data grid view rows visible if there is no text in the search textbox.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void txtSearch_TextChanged(object sender, EventArgs e)
 {
     if (txtSearch.Text == "")
     {
         BookHelper.CurrentBooksData(dgvViewBooks);
     }
 }
Example #16
0
 /// <summary>
 /// Updates the Books and Issued books table
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btnReturn_Click(object sender, EventArgs e)
 {
     if (BookHelper.ReturnBook(int.Parse(dgvViewIssuedBooks.CurrentRow.Cells["BookId"].Value.ToString())) > 0)
     {
         BookHelper.LoadIssuedBooks(dgvViewIssuedBooks);
     }
 }
Example #17
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void DataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dataGridView1.Columns[e.ColumnIndex].Name == "colBtn_drop")
            {
                Book model = new Book();
                model.Id = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells["id"].Value);
                if (BookHelper.Drop(model, new List <string>()
                {
                    "id"
                }))
                {
                    ShowDataGird(); MessageBox.Show("删除成功", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }

            if (dataGridView1.Columns[e.ColumnIndex].Name == "colBtn_alter")
            {
                Book model = new Book();
                model.Id     = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells["Id"].Value);
                model.name   = dataGridView1.Rows[e.RowIndex].Cells["name"].Value.ToString();
                model.author = dataGridView1.Rows[e.RowIndex].Cells["author"].Value.ToString();
                model.press  = dataGridView1.Rows[e.RowIndex].Cells["press"].Value.ToString();
                if (BookHelper.AlterByPK(model, "id"))
                {
                    ShowDataGird(); MessageBox.Show("修改成功", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
        }
        public void DeleteBookReturnsToIndex()
        {
            //Arrange
            var       repository     = Mock.Create <IRepository>();
            const int bookIdToDelete = 1;

            Mock.Arrange(() => repository.GetAllBooks()).Returns(new List <Book>()
            {
                BookHelper.CleanCode(2)
            }).OccursOnce();
            Mock.Arrange(() => repository.Delete(1)).OccursOnce();

            //Act
            var        controller     = new HomeController(repository);
            ViewResult result         = controller.Delete(bookIdToDelete) as ViewResult;
            var        resultViewName = result.ViewName;
            var        model          = result.Model as List <Book>;
            var        insertedBook   = model.Find(b => b.BookId == bookIdToDelete);

            //Assert
            Assert.AreEqual("Index", resultViewName);
            Assert.AreEqual(1, model.Count);
            Assert.IsInstanceOfType(model, typeof(List <Book>));
            Assert.IsNull(insertedBook);
            Assert.AreEqual("Book deleted successfully", result.ViewBag.Message);
            Mock.Assert(repository);
        }
Example #19
0
        public void Search()
        {
            BookHelper        bookHelper = new BookHelper();
            ElasticConnection client     = new ElasticConnection("222.186.190.241", 9200);
            //第一个参数是数据库,第二个参数是表
            SearchCommand cmd   = new SearchCommand("xiaoshuo", "xiaoshuo_url");
            var           query = new QueryBuilder <Book>()
                                  .Query(b =>
                                         b.Bool(m =>
                                                //并且关系
                                                m.Must(t =>
                                                //分词的最小单位或关系查询
                                                       t.QueryString(t1 => t1.DefaultField("Name").Query("总裁"))
                                                       )
                                                )
                                         ).Size(5).Build();
            var  result     = client.Post(cmd, query);
            var  count      = result.Result.Count();
            var  serializer = new JsonNetSerializer();
            var  results    = serializer.ToSearchResult <Book>(result); //把结果序列化
            Book book;

            foreach (var doc in results.Documents)
            {
                book = new Book()
                {
                    Name = doc.Name,
                    Url  = doc.Url
                };
                Console.WriteLine(book.Name);
                Console.WriteLine(book.Url);
            }
        }
Example #20
0
        /// <summary>
        /// 显示数据网格控件
        /// </summary>
        public void ShowDataGird()
        {
            this.dataGridView1.DataSource = null;
            this.dataGridView1.Columns.Clear();

            List <Book> list = BookHelper.FindList(new Book(), new List <string>());

            dataGridView1.DataSource = list;

            dataGridView1.Columns["name"].HeaderText   = "图书名称";
            dataGridView1.Columns["author"].HeaderText = "图书作者";
            dataGridView1.Columns["press"].HeaderText  = "出版社";

            dataGridView1.Columns["id"].Visible = false;

            DataGridViewButtonColumn col_Btn_alter = new DataGridViewButtonColumn();

            col_Btn_alter.Name       = "colBtn_alter";
            col_Btn_alter.HeaderText = "";
            col_Btn_alter.DefaultCellStyle.NullValue = "修改";
            dataGridView1.Columns.Add(col_Btn_alter);

            DataGridViewButtonColumn col_Btn_Drop = new DataGridViewButtonColumn();

            col_Btn_Drop.Name       = "colBtn_drop";
            col_Btn_Drop.HeaderText = "";
            col_Btn_Drop.DefaultCellStyle.NullValue = "删除";
            dataGridView1.Columns.Add(col_Btn_Drop);
        }
        public void EditFormSubmitReturnsToIndex()
        {
            //Arrange
            var repository             = Mock.Create <IRepository>();
            var submittedBookViewModel = new BookEditViewModel()
            {
                BookId   = 2,
                AuthorId = 1,
                Genre    = BookHelper.CleanCode().Genre,
                Title    = BookHelper.CleanCode().Title,
                Authors  = null //after post submit this value is null
            };

            Mock.Arrange(() => repository.Save((Book)Arg.AnyObject)).OccursOnce();

            //Act
            var controller = new HomeController(repository);

            controller.ControllerContext = Mock.Create <ControllerContext>(); //needed by TryValidateModel(entity)
            var result = controller.Edit(submittedBookViewModel) as RedirectToRouteResult;

            //Assert
            Assert.AreEqual("Index", result.RouteValues["action"]);
            Assert.AreEqual("Book edited successfully", controller.TempData["Message"]);
            Mock.Assert(repository);
        }
Example #22
0
 public LTFApiHelper(LTFrameNetClass _ltf)
 {
     BH  = new BookHelper();
     ltf = _ltf;
     //josnNovelTypes = GetNovelTypes();
     //josnNovels = GetNovels();
 }
Example #23
0
 /// <summary>
 /// Reloads the data grid view when search textbox is empty.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void txtSearch_TextChanged(object sender, EventArgs e)
 {
     if (string.IsNullOrEmpty(txtSearch.Text))
     {
         BookHelper.LoadIssuedBooks(dgvViewIssuedBooks);
     }
 }
Example #24
0
        /// <summary>
        /// Adds the autocomplete source for the search textbox.
        /// </summary>
        private void AddAutoCompleteSource()
        {
            AutoCompleteStringCollection source = new AutoCompleteStringCollection();

            source.AddRange(BookHelper.GetSourceList().ToArray());
            txtSearch.AutoCompleteCustomSource = source;
        }
Example #25
0
 /// <summary>
 ///Loads active books into the data grid view.
 ///Load selected student ids into the id combo box.
 ///Loads student names in the student name combo box.
 ///Sets the due date to 10 days from today.
 ///Initializes the id combo box to index -1.
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void IssueBook_Load(object sender, EventArgs e)
 {
     BookHelper.LoadActive(dgvIssueBook);
     StudentHelper.LoadNames(cmbStudentName);
     cmbId.SelectedIndex = -1;
     dtpDueDate.Value    = dtpDueDate.Value.AddDays(10);
 }
        public void CanCommitLoan()
        {
            ILoanHelper loanHelper = new LoanHelper();
            ILoanDAO    loanDao    = new LoanDao(loanHelper);

            IMemberHelper memberHelper = new MemberHelper();
            IMemberDAO    memberDao    = new MemberDao(memberHelper);

            IBookHelper bookHelper = new BookHelper();
            IBookDAO    bookDao    = new BookDao(bookHelper);

            var borrowDate = DateTime.Today;
            var dueDate    = DateTime.Today.AddDays(7);

            var member = memberDao.AddMember("Jim", "Tulip", "csu phone", "*****@*****.**");

            var book = bookDao.AddBook("Jim Tulip", "Adventures in Programming", "call number");

            var loan = loanDao.CreateLoan(member, book, borrowDate, dueDate);

            loanDao.CommitLoan(loan);

            Assert.NotNull(loan);

            Assert.Equal(1, loanDao.LoanList.Count);
            Assert.Equal(loan, loanDao.LoanList[0]);

            Assert.NotEqual(0, loan.ID);
        }
Example #27
0
        private void FontBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var font = (FontBox.SelectedItem as ComboBoxItem).Content.ToString();

            Pager.FontFamily = BookHelper.GetFont(font);
            Pager.SetBlockProperty();
            AppDataHelper.SetValue("FontFamily", font);
        }
Example #28
0
 public BookPage()
 {
     InitializeComponent();
     lbl_notFound.Visibility = Visibility.Hidden;
     lbl_update.Visibility   = Visibility.Hidden;
     _bookRepository         = new BookRepository();
     _bookHelper             = new BookHelper();
     _viewHelper             = new ViewHelper();
 }
Example #29
0
        public void CollectBooks(List <string> BookNeedCollect, string ListPageUrl, string NextPageUrl, string BookUrlRule, string BookInfoRule, string ChapterListUrl, string encoding, string urlTitleRule, string ContentRule)
        {
            BookHelper bh = new BookHelper("http://www.aizr.net/");

begin:
            string listHtml = Url.GetHtml(ListPageUrl, encoding);
            Match m_books = listHtml.GetMatchGroup(BookUrlRule);

            while (m_books.Success)
            {
                string bookUrl   = m_books.Groups["url"].Value.AppendToDomain(ListPageUrl);
                string bookTitle = m_books.Groups["title"].Value;
                if (BookNeedCollect.Count != 1 || BookNeedCollect.First() != "*")
                {
                    if (BookNeedCollect.Where(p => p == bookTitle).Count() == 0)
                    {
                        m_books = m_books.NextMatch();//不需要采集的书籍
                        continue;
                    }
                }
                if (bh.SearchBook(bookTitle, "", "").Count > 0)
                {
                    m_books = m_books.NextMatch();//已经存在的书籍
                    continue;
                }

                string bookInfoHtml = Url.GetHtml(bookUrl, encoding);;
                Match  m_bookInfo   = bookInfoHtml.GetMatchGroup(BookInfoRule);
                if (m_bookInfo.Success)
                {
                    //获取到书籍信息,并且添加到系统
                    string title  = m_bookInfo.Groups["title"].Value;
                    string author = m_bookInfo.Groups["author"].Value;
                    string cls    = m_bookInfo.Groups["class"].Value;
                    string length = (m_bookInfo.Groups["length"].Value.ToInt32() * 1024).ToS();
                    string intro  = m_bookInfo.Groups["intro"].Value;

                    //处理类别
                    Class c = bh.GetClass(cls);
                    //添加书籍
                    bh.BookAdd(title, author, c.ID, intro, length.ToInt64());

                    //处理章节
                    string chapterListUrl = bookInfoHtml.GetMatch(ChapterListUrl).First().AppendToDomain(bookUrl);
                    Collect(chapterListUrl, title, urlTitleRule
                            , ContentRule, encoding);
                }
            }//结束书籍列表书籍采集
            //开始判断是够有下一页
            Match m_NextPage = listHtml.GetMatchGroup(NextPageUrl);

            while (m_NextPage.Success)
            {
                ListPageUrl = m_NextPage.Groups["key"].Value.AppendToDomain(ListPageUrl);
                goto begin;;
            }
        }
 public SearchBook(bool isLibrarian)
 {
     InitializeComponent();
     _bookRepository = new BookRepository();
     _bookHelper     = new BookHelper();
     _viewHelper     = new ViewHelper();
     _isLibrarian    = isLibrarian;
     SetSelection();
 }
Example #31
0
        public void BookHelperImplementsIBookHelperInterface()
        {
            var helper = new BookHelper();

            Assert.IsAssignableFrom <IBookHelper>(helper);

            var typedMember = helper as IBookHelper;

            Assert.NotNull(typedMember);
        }
        public MockDataProviderModule()
        {
            _memberHelper = new MemberHelper();
            _memberDAO = new MemberDAO(_memberHelper);
            _loanHelper = new LoanHelper();
            _loanDAO = new LoanDAO(_loanHelper);
            _bookHelper = new BookHelper();
            _bookDao = new BookDAO(_bookHelper);

            // Setup dates for test data
            _borrowDate = DateTime.Now;
            _loanPeriod = new TimeSpan(LoanConstants.LOAN_PERIOD, 0, 0, 0);
            _dueDate = _borrowDate.Add(_loanPeriod);
          
            SetupBookTestData();
            SetupMemberTestData();
            SetUpLoanTestData();
            SetUpTestData();
        }
        public void CanUpdateOverdueStatus()
        {
            ILoanHelper loanHelper = new LoanHelper();
            ILoanDAO loanDao = new LoanDao(loanHelper);

            IMemberHelper memberHelper = new MemberHelper();
            IMemberDAO memberDao = new MemberDao(memberHelper);

            IBookHelper bookHelper = new BookHelper();
            IBookDAO bookDao = new BookDao(bookHelper);

            var borrowDate = DateTime.Today;
            var dueDate = DateTime.Today.AddDays(7);

            var member = memberDao.AddMember("Jim", "Tulip", "csu phone", "*****@*****.**");

            var book = bookDao.AddBook("Jim Tulip", "Adventures in Programming", "call number");

            var loan = loanDao.CreateLoan(member, book, borrowDate, dueDate);

            loanDao.CommitLoan(loan);

            Assert.Equal(LoanState.CURRENT, loan.State);

            loanDao.UpdateOverDueStatus(DateTime.Today.AddMonths(1));

            Assert.Equal(LoanState.OVERDUE, loan.State);
        }
        public void CanGetOverdueLoans()
        {
            ILoanHelper loanHelper = new LoanHelper();
            ILoanDAO loanDao = new LoanDao(loanHelper);

            IMemberHelper memberHelper = new MemberHelper();
            IMemberDAO memberDao = new MemberDao(memberHelper);

            IBookHelper bookHelper = new BookHelper();
            IBookDAO bookDao = new BookDao(bookHelper);

            var borrowDate = DateTime.Today;
            var dueDate = DateTime.Today.AddDays(7);

            var member = memberDao.AddMember("Jim", "Tulip", "csu phone", "*****@*****.**");

            var book = bookDao.AddBook("Jim Tulip", "Adventures in Programming", "call number");

            var loan = loanDao.CreateLoan(member, book, borrowDate, dueDate);

            loanDao.CommitLoan(loan);

            Assert.Equal(LoanState.CURRENT, loan.State);

            loanDao.UpdateOverDueStatus(DateTime.Today.AddMonths(1));

            Assert.Equal(LoanState.OVERDUE, loan.State);

            for (int i = 0; i < 10; i++)
            {
                var m = memberDao.AddMember("Test", "Test", "Test Phone", "Test Email");
                var b = bookDao.AddBook("Test", "Test", "Test");

                var l = loanDao.CreateLoan(m, b, borrowDate, dueDate);

                loanDao.CommitLoan(l);
            }

            var overdue = loanDao.FindOverDueLoans();

            Assert.Equal(1, overdue.Count);
            Assert.Equal(loan, overdue[0]);
        }
        public void CanGetLoanByBookTitle()
        {
            ILoanHelper loanHelper = new LoanHelper();
            ILoanDAO loanDao = new LoanDao(loanHelper);

            IMemberHelper memberHelper = new MemberHelper();
            IMemberDAO memberDao = new MemberDao(memberHelper);

            IBookHelper bookHelper = new BookHelper();
            IBookDAO bookDao = new BookDao(bookHelper);

            var borrowDate = DateTime.Today;
            var dueDate = DateTime.Today.AddDays(7);

            var member = memberDao.AddMember("Jim", "Tulip", "csu phone", "*****@*****.**");

            var book = bookDao.AddBook("Jim Tulip", "Adventures in Programming", "call number");

            var loan = loanDao.CreateLoan(member, book, borrowDate, dueDate);

            loanDao.CommitLoan(loan);

            for (int i = 0; i < 10; i++)
            {
                var m = memberDao.AddMember("Test", "Test", "Test Phone", "Test Email");
                var b = bookDao.AddBook("Test", "Test", "Test");

                var l = loanDao.CreateLoan(m, b, borrowDate, dueDate);

                loanDao.CommitLoan(l);
            }

            var result = loanDao.FindLoansByBookTitle(book.Title);

            var single = result.Single();

            Assert.Equal(loan, single);
        }
        public void GetLoanByLoanIdReturnsNullIfNotFound()
        {
            ILoanHelper loanHelper = new LoanHelper();
            ILoanDAO loanDao = new LoanDao(loanHelper);

            IMemberHelper memberHelper = new MemberHelper();
            IMemberDAO memberDao = new MemberDao(memberHelper);

            IBookHelper bookHelper = new BookHelper();
            IBookDAO bookDao = new BookDao(bookHelper);

            var borrowDate = DateTime.Today;
            var dueDate = DateTime.Today.AddDays(7);

            var member = memberDao.AddMember("Jim", "Tulip", "csu phone", "*****@*****.**");

            var book = bookDao.AddBook("Jim Tulip", "Adventures in Programming", "call number");

            var loan = loanDao.CreateLoan(member, book, borrowDate, dueDate);

            loanDao.CommitLoan(loan);

            for (int i = 0; i < 10; i++)
            {
                var m = memberDao.AddMember("Test", "Test", "Test Phone", "Test Email");
                var b = bookDao.AddBook("Test", "Test", "Test");

                var l = loanDao.CreateLoan(m, b, borrowDate, dueDate);

                loanDao.CommitLoan(l);
            }

            var result = loanDao.GetLoanByID(1000);

            Assert.Null(result);
        }