জাভাস্ক্রিপ্ট টিউটোরিয়াল-শিখুন গল্পে গল্পে সাথে 1100+ Exercise

  • জাভাস্ক্রিপ্ট পরিচিতি-Introduction to JavaScript
  • প্রোগ্রামিং শুরু করতে কতটুকু গণিত লাগে?
  • প্রোগ্রামিং শুরু করতে কতটুকু ইংরেজি জানা লাগে?
  • ভালো প্রোগ্রামার কিভাবে হবো? [+৭টি গুরুত্বপূর্ণ টিপস]
  • পকেট কাটে : shopping cart
  • ফুড ডেলিভারি: পান্ডার আন্ডা
  • পই পই MFS: প্র্যাকটিস
  • কাজ করে কাজী, ফাঁকি দেয় পাঁজি

ফুড ডেলিভারি: পান্ডার আন্ডা


এইবার আমরা দুইজন মিলে কিছু কোড করে ফেলি। আমি কিছু করলাম, আর তুই বেশির ভাগ করে ফেলবি। মাঝে মধ্যে আমি কোডের আউটলাইন দিয়ে দিব। আর তুই সেটা পুরা কোড লিখে ফেলবি। কী বলিস? 

— শুরু করে দে। কী আছে জীবনে? 


আমার কাছে কয়েকটা অ্যারে আছে। প্রথমে আছে restaurants, সেখানে স্যাম্পল হিসেবে দুইটা রেস্টুরেন্টের ডাটা আছে। প্রত্যেকটা রেস্টুরেন্টের মধ্যে আইডি, নাম এবং ম্যানু আছে। ম্যানুর মধ্যে খাবারের নাম আর দাম আছে। এ ছাড়া আরও দুইটা অ্যারে আছে। সেগুলা orders, reviews, সবার শেষে একটা অবজেক্ট আছে। সেখানে কিছু ডিসকাউন্ট কোড আছে বা কুপন কোড আছে এবং একটা কমেন্টে বলা আছে, ডিসকাউন্টের মান পার্সেন্টে আছে। 

 

  const restaurants = [
    { id: 1, name: "Pizza Place", menu: [{ name: "Pepperoni Pizza", price: 12 }] },
    { id: 2, name: "Sushi House", menu: [{ name: "Salmon Sushi", price: 15 }] }
  ];
  const orders = [ ];
  const reviews = [ ];
  // Discount in percentage
  const discountCodes = { "SAVE10": 10, "WELCOME15": 15 }; 


এই প্রজেক্টের উদ্দেশ্য হলো, একটি ফুড ডেলিভারি অ্যাপের বেসিক কিছু ফাংশনালিটি তৈরি করা। যেখানে মানুষ রেস্টুরেন্ট থেকে খাবার অর্ডার করতে পারবে। কোন রেস্টুরেন্ট থেকে খাবার নিবে, সেটা ঠিক করতে পারবে। রিভিউ দিতে পারবে। ডিসকাউন্ট কুপন ইউজ করতে পারবে। 


টাস্ক-১: খাবারের দাম পাওয়ার জন্য getFoodPrice নামে একটা ফাংশন লিখে ফেল। যেখানে দুইটা প্যারামিটার থাকবে। প্রথমটা হবে রেস্টুরেন্টের নাম, আর সেকেন্ডটা হবে সেই রেস্টুরেন্টের খাবারের নাম। সেই ফাংশনের ভিতরে restaurants নামক অ্যারেতে খুঁজে দেখবি, যে নাম দিছে, সেই নামের রেস্টুরেন্ট আছে কি না। যদি থাকে, তাহলে সেই রেস্টুরেন্টের মেনুতে গিয়ে যে খাবারের নাম দিছে, সেই খাবার আছে কি না, সেটা চেক করবি। যদি খাবার পেয়ে যায়, তাহলে সেটার দাম রিটার্ন করে দিবি। আর যদি খাবার না পায়, তাহলে একটা স্ট্রিং রিটার্ন করে বলবি "Food Item not found."।


আবার যখন রেস্টুরেন্টের নাম দিয়ে রেস্টুরেন্ট খুঁজবে, তখন যদি রেস্টুরেন্ট না পায়, তখন একটা স্ট্রিং রিটার্ন করে বলবে "Restaurant not found."।


টাস্ক-২: এইবার placeOrder নামে একটা ফাংশন লিখ। এইটার চারটা প্যারামিটার থাকবে customer, restaurantName, foodItem, discountCode। প্রথমেই getFoodPrice ফাংশনকে রেস্টুরেন্টের নাম আর খাবারের নাম দিয়ে খাবারের দাম জানার চেষ্টা করবি। যদি খাবারের দাম হিসেবে একটা সংখ্যা আসে, তাহলে এইটা ইউজ করে অর্ডার অবজেক্ট বানাবি। আর যদি খাবারের দাম না পায়, তাহলে এরর ম্যাসেজ পাঠাবে "Food Item not found."। 


যদি ডিসকাউন্ট কোড হিসেবে কোনো আর্গুমেন্ট পাস করে, তাহলে discountCodes অবজেক্টে গিয়ে দেখবি, সেই কুপন আছে কি না। সেটা যদি থাকে, তাহলে খাবারের দাম ডিসকাউন্ট কুপনের ডিসকাউন্ট অনুসারে কমাবি। আর যদি ডিসকাউন্ট কুপন না থাকে, তখন একটা এরর ম্যাসেজ দিবি, কুপন কোড ইনভ্যালিড।


আর যদি কুপন না থাকে অথবা কুপন কোড ভ্যালিড থাকে, তাহলে একটা অর্ডার অবজেক্ট বানাবি। সেই অর্ডার অবজেক্টে কাস্টমারের নাম, রেস্টুরেন্টের নাম, খাবারের নাম, খাবারের দাম এবং status-এর ডিফল্ট মান থাকবে "Pending"। এইটা orders অ্যারেতে যোগ করে দিবি। 


অর্ডার অবজেক্টে একটা আইডি (id) প্রোপার্টি থাকবে। আর এই আইডি প্রোপার্টির মান হবে orders নামক অ্যারেতে যতগুলা উপাদান আছে, সেই উপাদানের সংখ্যার সাথে 1 যোগ করে যোগফল হবে আইডির মান। 


শেষমেশ অর্ডার ঠিকমতো হলে টেমপ্লেট স্ট্রিং দিয়ে একটা স্ট্রিং বানিয়ে সেটা রিটার্ন করবি। আর সেই স্ট্রিংয়ে থাকবে Your Order is Successfully placed। Order Id: দিয়ে দিবি।


টাস্ক-৩: কোনো একটা রেস্টুরেন্টের টোটাল বিক্রি বের করার জন্য একটা ফাংশন তৈরি কর। এই ফাংশনে একটা রেস্টুরেন্টের নাম নিবে। তারপর orders নামক অ্যারেতে এই রেস্টুরেন্টের যত অর্ডার আছে, সেগুলা ফিল্টার করবি। তারপর reduce ইউজ করে সেই রেস্টুরেন্টের টোটাল বিক্রির পরিমাণ বের করে সেটা রিটার্ন করে দিবি। আর যদি সেই রেস্টুরেন্টের জন্য কোনো অর্ডার খুঁজে না পায়, তাহলে 0 রিটার্ন করে দিবি।


টাস্ক-৪: কোনো একটা অর্ডার আইডি আর রেস্টুরেন্টের নাম দিয়ে কেউ রিভিউ সাবমিট করতে পারবে। এই ফাংশনের নাম দিবি submitReview, আর এইটার চারটা প্যারামিটার থাকবে। প্রথমে থাকবে অর্ডার আইডি, রেস্টুরেন্টের নাম। তারপর রেটিংস (0 থেকে 5-এর মধ্যে কোনো সংখা), তারপর থাকবে রিভিউর স্ট্রিং।


submitReview-এর মধ্যে প্রথমেই চেক করবি, যে অর্ডার আইডি আর রেস্টুরেন্টের নাম দিছে, সেটা ঠিক আছে কি না। অর্থাৎ অর্ডার আইডি আর রেস্টুরেন্ট নাম দুইটাই ম্যাচ করে, এমন কোনো অর্ডার আছে কি না। যদি থাকে, তাহলে বাকি কাজ করবি। আর যদি না থাকে, তাহলে বলবি— না খেয়ে ভুয়া রিভিউ দিবেন না, প্লিজ। 


আর অর্ডার ভ্যালিড হলে চেক করবি, রেটিংসের সংখ্যা 0 থেকে 5-এর মধ্যে কি না। যদি 5-এর বেশি হয় বা 0-এর কম হয়, তাহলে এরর দিবি– রেটিংস 0 থেকে 5-এর মধ্যে হতে হবে। 


এরপর চেক করবে, রিভিউর মধ্যে মিনিমাম 20 ক্যারেক্টার বা তার চেয়ে বড় রিভিউ লিখে দিছে কি না। যদি রিভিউর লেংথ কম হয়, তাহলে এরর ম্যাসেজ দিয়ে বলবি, রিভিউ 20 ক্যারেক্টারের চাইতে বড় হতে হবে। আর যদি রিভিউ ঠিক থাকে তাহলে, একটা রিভিউ অবজেক্ট বানিয়ে সেটা reviews নামক অ্যারেতে যোগ করে দিবি। প্রত্যেকটা রিভিউর একটা id থাকবে, অন্যান্য ডাটা থাকবে। রিটার্ন হিসেবে: রিভিউ ঠিকমতো যোগ হয়েছে এবং এইটা তোমার রিভিউ আইডি।  



Previous PageNext Page