MERN

⌘K
  1. Home
  2. Docs
  3. MERN
  4. বইয়ের স্টক ফিচার বানাই

বইয়ের স্টক ফিচার বানাই

এর আগে আমরা যখন book মডেল বানিয়েছিলাম তখন কোন quantity ঘর রাখিনি এখন যখন স্টক নিয়ে কাজ করতে হবে তাই বুক মডেল এ quantity ফিল্ড যোগ করি।

// Book Schema
const bookSchema = new mongoose.Schema({
  quantity: { type: Number, default: 0 }, // Inventory quantity field
});
const stockbookSchema = new mongoose.Schema({
    book: {
      type: mongoose.Schema.Types.ObjectId,
      ref: 'Book',
      required: true,
    },
    quantity: { type: Number, required: true },
    dateAdded: { type: Date, default: Date.now },
  });
  
  const Stockbook = mongoose.model('Stockbook', stockbookSchema);

module.exports = { Author, Book ,Member,Loan,Stockbook};

routes ফাইলটি আপডেট করি

এখন যখন আমরা অ্যাড স্টক করবো তখন তার একটি এন্ট্রি addstock কালেকশন এ জমা হবে এবং সেভ হওয়ার সময় বুক মডেলের quantity আপডেট করবে।

const { Author, Book,Member,Loan,Stockbook } = require('./models');
// Save a stockbook entry
router.post('/add-stockbook', async (req, res) => {
    try {
      const { book, quantity } = req.body;
  
      // Create a stockbook entry
      const stockbookEntry = new Stockbook({ book: book, quantity });
      await stockbookEntry.save();
  
      // Update the book's quantity
      await Book.findByIdAndUpdate(book, { $inc: { quantity } });
  
      res.json(stockbookEntry);
    } catch (err) {
      console.error(err);
      res.status(500).json({ error: 'Failed to save stockbook entry' });
    }
  });
  

আমরা সাধারণত একটি বই একজনকে এক কপি করে দেব এজন্য যখন বই লোন দেব তখন বুক মডেল থেকে এক কপি বই কমিয়ে বুক মডেলের কোয়ান্টিটি আপডেট করবো।

router.post('/loans', async (req, res) => {
    try {
      const { bookId, memberId, dueDate } = req.body;
  
      // Decrement the book's quantity in the inventory
      await Book.findByIdAndUpdate(bookId, { $inc: { quantity: -1 } });
  
      // Create a loan record
      const loan = new Loan({ book: bookId, member: memberId, dueDate });
      await loan.save();
  
      res.json(loan);
    } catch (err) {
      console.error(err);
      res.status(500).json({ error: 'Failed to loan the book' });
    }
  });

আবার বই যখন মেম্বার ফেরত দেবে তখন বইয়ের স্টক আপডেট করে দেব।

  // Receive a returned book
router.put('/receive-book/:loanId', async (req, res) => {
    try {
      const loanId = req.params.loanId;
  
      // Increment the book's quantity in the inventory
      const loan = await Loan.findById(loanId);
      await Book.findByIdAndUpdate(loan.book, { $inc: { quantity: 1 } });
  
      // Update the loan record with the return date
      const returnDate = new Date();
      await Loan.findByIdAndUpdate(loanId, { returnDate });
  
      res.json({ message: 'Book received and loan record updated' });
    } catch (err) {
      console.error(err);
      res.status(500).json({ error: 'Failed to receive the book' });
    }
  });
  

How can we help?