コード例 #1
0
        public IActionResult Details(string id)
        {
            ObjectId loanId = new ObjectId(id);
            Loan     loan   = BookLoanRepository.GetBookLoanByBookLoanId(loanId);

            return(View(loan));
        }
コード例 #2
0
        /// <summary>
        /// Compares start date and end date to already lend out book, if the dates interferes with each other, numberOfCopies -= 1
        /// </summary>
        /// <param name="bookId">the book to borrow</param>
        /// <param name="numberOfCopies">number of copies of the chosen book</param>
        /// <param name="date">the selected start date</param>
        /// <returns>how many copies that remains</returns>
        public static int Book(ObjectId bookId, int numberOfCopies, DateTime startDate, DateTime endDate)
        {
            List <Loan> loans = BookLoanRepository.GetBookLoansById(bookId);

            foreach (Loan loan in loans)
            {
                int checkStartDate = Validations.CompareDates(startDate, loan.StartDate);
                int checkEndDate   = Validations.CompareDates(endDate, loan.EndDate);

                if (checkStartDate >= 0 && checkEndDate <= 0)
                {
                    numberOfCopies -= 1;
                }
                else if (true)
                {
                    checkStartDate = Validations.CompareDates(endDate, loan.StartDate);
                    checkEndDate   = Validations.CompareDates(endDate, loan.EndDate);

                    if (checkStartDate >= 0 && checkEndDate <= 0)
                    {
                        numberOfCopies -= 1;
                    }
                }
            }
            return(numberOfCopies);
        }
コード例 #3
0
        public IActionResult ConfirmDelete(string id)
        {
            ObjectId bookLoanId = new ObjectId(id);

            BookLoanRepository.DeleteBookLoan(bookLoanId);
            return(Redirect("/BookLoan"));
        }
コード例 #4
0
        public IActionResult Edit(string id, DateTime startDate, DateTime endDate)
        {
            ObjectId loanId = new ObjectId(id);

            BookLoanRepository.UpdateBookLoan(loanId, startDate, endDate);

            return(Redirect("/BookLoan"));
        }
コード例 #5
0
        private static void LoanProcessAvailableBooks(Member member, Book book, DateTime startDate, DateTime endDate)
        {
            Loan loan = Factory.CreateLoan(startDate, endDate, member);

            loan.BookArticle = book;
            BookLoanRepository.InsertBookLoan(loan);
            StandardMessages.LoanComplete(book.Name, loan.EndDate);
        }
コード例 #6
0
 public JsonResult Get()
 {
     using (var ctx = new libraryContext())
     {
         var data = new BookLoanRepository(ctx).GetBookLoans().ToList();
         return(Json(data, new JsonSerializerSettings {
             ReferenceLoopHandling = ReferenceLoopHandling.Ignore
         }));
     }
 }
コード例 #7
0
ファイル: ReturnItem.cs プロジェクト: ramsalo1981/Library
        public static void UpdateBookLoan(Member member)
        {
            Loan loanToReturn = SelectLoanById.SelectBookLoan(member);

            if (loanToReturn != null)
            {
                DateTime returnDate = DateTime.Today;
                BookLoanRepository.ReturnBook(loanToReturn, returnDate);

                StandardMessages.ItemReturned("book");
            }
            else
            {
                StandardMessages.NothingToReturn("books");
            }
        }
コード例 #8
0
 public JsonResult Post([FromBody] BookLoans loan)
 {
     using (var ctx = new libraryContext())
     {
         var BkLnRepo = new BookLoanRepository(ctx);
         var result   = BkLnRepo.Add(loan);
         if (result == null)
         {
             ctx.SaveChanges();
             return(Json(new { message = "Success" }));
         }
         else
         {
             return(Json(new { error = result }));
         }
     }
 }
コード例 #9
0
ファイル: SelectLoanById.cs プロジェクト: ramsalo1981/Library
        /// <summary>
        /// The user selects a book loan by index and gets the chosen book loan returned
        /// </summary>
        /// <returns>the chosen book loan</returns>
        public static Loan SelectBookLoan(Member member)
        {
            List <Book> book = BookRepository.GetBooks();

            if (book.Count > 0)
            {
                List <Loan> loans = BookLoanRepository.GetBookLoansByMember(member);
                StandardMessages.ListAllItems("your book loans");

                int i = 1;
                foreach (Loan loan in loans)
                {
                    var outputDate = loan.EndDate.ToString("yyyy-MM-dd");
                    Console.WriteLine($"{i} {loan.Member.Name} {loan.BookArticle.Name} {outputDate}");
                    i++;
                }
                StandardMessages.SelectItemToDelete("book", "return");
                string input = Console.ReadLine();
                if (input != "0")
                {
                    int index = Validations.ParseInt(input);

                    bool isValid = Validations.SelectedIndex(index, i, loans.Count);
                    if (isValid)
                    {
                        return(loans[index - 1]);
                    }
                    else
                    {
                        StandardMessages.InvalidOption();
                        input = Console.ReadLine();
                        return(null);
                    }
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                StandardMessages.NothingToReturn("books");
                return(null);
            }
        }
コード例 #10
0
        /// <summary>
        /// Prints all book loans with the id of the book the user wanted to borrow
        /// </summary>
        /// <param name="id">book id of the wanted book</param>
        public static void PrintBookLoansList(ObjectId id)
        {
            List <Loan> loans = BookLoanRepository.GetBookLoansById(id);

            StandardMessages.ListAllItems("loans");
            DateTime today = DateTime.Today;

            foreach (Loan loan in loans)
            {
                int result = Validations.CompareDates(today, loan.EndDate);
                if (result < 0)
                {
                    var startDate = loan.StartDate.ToString("yyyy-MM-dd");
                    var endDate   = loan.EndDate.ToString("yyyy-MM-dd");

                    Console.WriteLine($"{loan.BookArticle.Name} - {loan.Member.Name} - {startDate} - {endDate}");
                }
            }
        }
コード例 #11
0
        public IActionResult Create(string memberId, string bookId, DateTime startDate, DateTime endDate)
        {
            ObjectId memberOId = new ObjectId(memberId);
            ObjectId bookOId   = new ObjectId(bookId);

            Book book = BookRepository.GetBookById(bookOId);

            int copiesRemaining = CheckLoansToCopies.Book(book.Id, book.NumberOfCopies, startDate, endDate);

            if (copiesRemaining > 0)
            {
                Loan loan = CreateLoan(memberOId, book.Id, startDate, endDate);
                BookLoanRepository.InsertBookLoan(loan);
            }
            else if (copiesRemaining <= 0)
            {
                string        errorMessage  = "No availiable copies at that date. Please try an other one";
                BookLoanModel bookLoanModel = new BookLoanModel();
                bookLoanModel.ErrorMessage = errorMessage;
                return(View(bookLoanModel));
            }

            return(Redirect("/BookLoan"));
        }
コード例 #12
0
        public IActionResult Index()
        {
            List <Loan> loans = BookLoanRepository.GetAllBookLoans();

            return(View(loans));
        }