বলদ-ষাঁড় ফ্যাশন হাউজ

নিচের কোডটা 'প্রোগ্রামিংয়ের বলদ টু বস' বইয়ের, অ্যাপ বানিয়ে করবে বড়াই অধ্যায়ের ফাইনাল কোড। সেখানে একটু একটু করে কিভাবে পুরাটা বানানো হইছে সেটা বুঝানো হইছে। পুরাটা বানানোর পর ফাইনাল যে কোড হইছে সেটা নিচে দেয়া হলো।

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

অ্যাপ দিয়ে নিচের কাজগুলো করানো হয়েছে

  1. দোকানের একটা নাম থাকবে। ওপরে সাইনবোর্ডে যে নাম লেখা আছে, সেই নাম।
  2. কাস্টমার এসে কোনো একটা জিনিস আছে কি না জানতে চাইলে, সেটা আছে কি না, বলে দিতে হবে।
  3. কোনো জিনিসের দাম জিজ্ঞেস করলে, সেটার দাম বলে দিতে হবে।
  4. সারা দিনে মোট কত টাকা বিক্রি হইছে, সেটার একটা হিসাব রাখতে হবে। যাতে দোকানের ক্যাশে কত টাকা আছে, এটার মালিক জানতে চাইলে তাকে বলে দেওয়া যায়।
  5. কাস্টমার এক বা একাধিক জিনিস কিনতে চাইলে, দুইটা সিচুয়েশন হতে পারে। এক. কাস্টমার যতগুলা চাইছে ততগুলা স্টকে নাই। তখন কাস্টমারকে বলতে হবে, সরি, আপনি যতগুলা চাচ্ছেন ততগুলা আমাদের দোকানে নাই। দুই. কস্টমার যতগুলা চাইছে তার সমান বা বেশি থাকলে তিনটা কাজ করতে হবে।
    1. কাস্টমার মোট কত টাকা দিবে, সেটা হিসাব করতে হবে।
    2. কাস্টমার যত টাকা দিছে, সেটা আজকের দিনে যত টাকা বিক্রি হইছে তার সাথে যোগ করতে হবে।
    3. যে কয়টা বিক্রি হইছে সে কয়টা স্টক থেকে কমাতে হবে।
  6. দোকানে নতুন বা পুরান আইটেম ওঠানোর সিস্টেম থাকতে হবে।
    1. যে আইটেম আগে থেকেই আছে, সেটা আরও কয়েকটা ওঠানো হলে, স্টকে আগে যে কয়টা ছিল তার সাথে এখন যে কয়টা ওঠানো হচ্ছে, সে কয়টা যোগ করে দিলেই হবে।
    2. আর যে আইটেম আগে কখনোই দোকানে ছিল না, সেটা যোগ করতে গেলে প্রথমেই সেটা স্টকে যোগ করতে হবে। সেটার দাম লিখে রাখতে হবে। যাতে কাস্টমার দাম জানতে চাইলে সেটার দাম বলে দেওয়া যায়। আবার কেউ এসে এই নতুন জিনিস আছে কি না, জানতে চাইলে, আছে বলে উত্তর দিতে হবে।

এই রকম আরো ফিচার থাকতে পারে। যেমন

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

২. আর তুই নিজে নিজে দোকানের একটা ফিচার ঠিক কর। তারপর সেটার কোড লিখে নিচে কমেন্ট কর।

নিচের কোড রান করতে চাইলে http://habluderadda.com/consoleএ গিয়ে রান করতে পারবে।


class Store {
    constructor(name) {
         this.name = name;
         this.items = [];
         this.stock = {};
         this.prices = {};
         this.totalSales = 0;
    }

    isItemAvailable(name){
         var itemIndex = this.items.indexOf(name);
         if(itemIndex == -1){
              return false;
         }
         else {
             return true;
         }
    }

    getPrice(name){
         var isAvailable = this.isItemAvailable(name);
         if(isAvailable == true ){
              var price = this.prices[name];
              return price;
         }
         else {
             console.log("sorry we do not have", name);
         }
    }

    getTotalSale(){
       return this.totalSales;
    }

    sellItem(name, quantity){
         var available = this.stock[name];
         if(available < quantity){
              console.log("Sorry we do not have enough");
              return;
         }
         else {
             var itemPrice = this.getPrice(name);
             var currentSale = itemPrice * quantity;
             this.totalSales = this.totalSales + currentSale;
             var remaining = available - quantity;
             this.stock[name] = remaining;
               console.log("thanks for your purcase");
          }
      }

      addItem(name, quantity, price){
            var isExisting = this.isItemAvailable(name);
            if(isExisting == true){
                 var available = this.stock[name];
                  this.stock[name] = available + quantity;
           }
          else {
                 this.items.push(name);
                 this.prices[name] = price;
                 this.stock[name] = quantity;
          }
    }
}

var habluStore = new Store("Hablu Fashion Store");
habluStore.addItem("shirt", 40, 300);
habluStore.addItem("pant", 20, 500);