বিনিয়োগকারী ব্যবহারকারীবিনিয়োগ করার পেজ

বিনিয়োগকারীর বিনিয়োগ করার পেজ (Investor Invest Page)

১. সেল পোস্টগুলো দেখা (Viewing Sell Posts):

  • ইনভেস্টর তার ড্যাশবোর্ডের বাম পাশের মেনু থেকে “Invest” ট্যা��ে ক্লিক করলে “Open for buying” নামের একটি সেকশন দেখতে পাবেন (Image 1)।
  • এখানে কৃষকদের দেওয়া সেই সেল পোস্টগুলোই কার্ড আকারে দেখাবে, যেগুলো সিস্টেমের অ্যাডমিন বা এজেন্ট দ্বারা অ্যাপ্রুভ করা হয়েছে। প্রতিটি কার্ডে প্রোডাক্টের ছবি, নাম, ক্যাটাগরি এবং মোট দাম উল্লেখ থাকবে।

২. পোস্টের বিস্তারিত দেখা (Opening Post Details):

  • যেকোনো একটি প্রোডাক্ট কার্ডে ক্লিক করলে একটি বিস্তারিত পেজ বা মডাল ওপেন হবে (Image 2)।
  • এখানে প্রোডাক্টের ডেসক্রিপশন বা বিবরণ, মোট দাম (যেমন: 10000 tk) এবং বর্তমানে কত শতাংশ শেয়ার কেনার জন্য ফাঁকা আছে (Available share), তার সমপরিমাণ টাকার মূল্য এবং প্রোডাক্টের পরিমাণ (Quantity) দেখা যাবে।

৩. বিনিয়োগের পরিমাণ নির্ধারণ (Choosing Investment Options): ইনভেস্টর চাইলে দুটি পদ্ধতিতে বিনিয়োগ করতে পারবেন:

  • Invest by percentage (শতকরা হারে): এখানে ইনভেস্টর কত শতাংশ (%) কিনতে চান তা ইনপুট দেবেন। এটি ২ দশমিক স্থান পর্যন্ত (2 decimal floating value) দেওয়া যাবে। তিনি কোনোভাবেই বর্তমানে অ্যাভেইলেবল শতাংশের চেয়ে বেশি ইনপুট দিতে পারবেন না।
  • Invest by Amount (টাকার অংকে): এই বক্সে টিক দিয়ে সরাসরি টাকার পরিমাণ লেখা যাবে। এর একটি সর্বনিম্ন সীমা থাকবে (মোট দামের ১% বা price/100) এবং সর্বোচ্চ সীমা থাকবে বর্তমানে অ্যাভেইলেবল থাকা শেয়ারের সর্বোচ্চ মূল্যের সমান।
  • যেকোনো একটি পদ্ধতিতে ইনপুট দেওয়ার সাথে সাথেই সিস্টেম হিসাব করে নিচে Payable Amount (যেমন: 2000 tk) এবং এই টাকায় তিনি কতটুকু প্রোডাক্টের মালিক হবেন, তা দেখিয়ে দেবে।

৪. বাজারদর যাচাই (Data Analytics):

  • পেজে থাকা “See analytics” বাটনে ক্লিক করলে ইনভেস্টর উক্ত প্রোডাক্টটির পূর্বের বাজারদরের ডেটা বা অ্যানালিটিক্স দেখতে পাবেন। এটি তাকে প্রোডাক্টটিতে ইনভেস্ট করা লাভজনক হবে কি না, সেই সিদ্ধান্ত নিতে সাহায্য করবে।

৫. পেমেন্ট করা (Payment Process):

  • সবকিছু ঠিক থাকলে “Invest” বাটনে ক্লিক করতে হবে। এতে সিস্টেম সরাসরি একটি পেমেন্ট গেটওয়ে ওপেন করবে, যেখান থেকে ইনভেস্টর তার পেমেন্ট সম্পন্ন করতে পারবেন।

৬. একাধিকবার বিনিয়োগ (Investing Multiple Times):

  • একজন ইনভেস্টর চাইলে একই প্রোডাক্টে একাধিকবার ইনভেস্ট করতে পারবেন।
  • যদি তিনি এমন কোনো পোস্ট ওপেন করেন যেটিতে তিনি আগে থেকেই কিছু শেয়ার কিনে রেখেছেন (Image 3), তবে সিস্টেম তাকে তার বর্তমান মালিকানার পরিমাণ দেখাবে (যেমন: Your share 10% worth 1000 tk Quantity: 10kg)।
  • এক্ষেত্রে নিচে ইনভেস্ট করার মূল বাটনটির নাম পরিবর্তন হয়ে “Invest More” হয়ে যাবে, যাতে ক্লিক করে তিনি চাইলে আরও শেয়ার কিনতে পারেন।

৭. কেনা প্রোডাক্ট লিস্টে যুক্ত হওয়া (My Product List):

  • যেকোনো পোস্টে সফলভাবে ইনভেস্ট করার পর, সেই প্রোডাক্টটি তার ড্যাশবোর্ডের বাম পাশের মেনুতে থাকা “My Product” লিস্টে তালিকাভুক্ত হয়ে যাবে, যেখান থেকে তিনি পরবর্তীতে তার কেনা সব প্রোডাক্ট ম্যানেজ করতে পারবেন।

লজিক

Investor Root Page Logic:

১. প্রোডাক্ট বা ফসল খুঁজে বের করা (Finding the Product): প্রথমে URL থেকে useParams() ব্যবহার করে প্রোডাক্টের id নেওয়া হয়েছে। এরপর সেই আইডি দিয়ে productList থেকে নির্দিষ্ট ফসলটি খুঁজে বের করা হয়েছে। কোনো কারণে আইডি না মিললে ডিফল্ট হিসেবে লিস্টের প্রথম ফসলটি দেখানো হবে।

২. মোট মূল্য এবং বিনিয়োগযোগ্য অংশ হিসাব করা (Base Calculations):

  • মোট দাম (totalValue): ফসলের পরিমাণকে (quantity) তার প্রতি কেজির দাম (expectedPrice) দিয়ে গুণ করে ফসলের মোট দাম বের করা হয়েছে।
  • এভেইলেবল শেয়ার (availableShareValueavailableShareQuantity): একজন কৃষক হয়তো তার পুরো ফসল (১০০%) বিক্রি করবেন না। তিনি যতটুকু বিক্রি করতে ইচ্ছুক (availableSharePercentage), সেই অনুযায়ী ওই ফসলের সর্বোচ্চ কত টাকায় এবং কতটুকু পরিমাণে বিনিয়োগ করা যাবে, তা গাণিতিকভাবে বের করা হয়েছে।

৩. ইউজারের ইনপুট লাইভ ট্র্যাক করা (Watching Form Inputs): ইউজার ফর্মে কী লিখছে, তা react-hook-form-এর watch ফাংশন দিয়ে রিয়েল-টাইমে ট্র্যাক করা হচ্ছে। ইউজার কি ‘Percentage (শতকরা)’ মুডে আছে নাকি ‘Amount (টাকা)’ মুডে আছে, এবং বক্সে কত সংখ্যা লিখছে, তা মুহূর্তের মধ্যে সিস্টেম ধরে ফেলছে।

৪. বিনিয়োগের ধরন অনুযায়ী হিসাব-নিকাশ (Dynamic Core Logic): এখানে চমৎকার একটি লজিক কাজ করছে। ইউজার দুটি উপায়ে বিনিয়োগ করতে পারে:

  • পার্সেন্টেজ বা Percentage মুড: ইউজার যদি বক্সে লেখে ১০%, তবে সিস্টেম নিজে থেকেই মোট দামের ১০% টাকা (payableAmount) এবং মোট ফসলের ১০% পরিমাণ (ownershipQuantity) হিসাব করে স্ক্রিনে দেখিয়ে দেবে।
  • টাকা বা Amount মুড: ইউজার যদি বক্সে লেখে ২০০০ টাকা, তখন সিস্টেম উল্টো দিক থেকে হিসাব করবে। সে হিসাব করে বের কর ে যে, ২০০০ টাকায় মোট ফসলের ঠিক কত শতাংশ (calculatedPercentage) এবং কত কেজি বা কত পিস ফসল সে পাবে। (নোট: ইউজার যে মুড সিলেক্ট করবে, ফর্মের অন্য ইনপুট বক্সটি তখন বন্ধ বা disabled থাকবে, যাতে কোনো ভুল না হয়।)

৫. সর্বোচ্চ সীমার সতর্কতা (Limit Validation): ইউজার যাতে কোনোভাবেই উন্মুক্ত বা এভেইলেবল শেয়ারের চেয়ে বেশি কিনতে না পারে, সেজন্য isOverLimit নামে একটি লজিক বসানো হয়েছে। ইউজার যদি লিমিটের চেয়ে বেশি টাকা বা পার্সেন্টেজ লেখে, তাহলে সাথে সাথে দুটি জিনিস ঘটবে:

  • নিচে একটি লাল রঙের ওয়ার্নিং বা এরর মেসেজ দেখাবে।
  • সাবমিট বা “Invest” বাটনটি সাথে সাথে অকেজো (disabled) হয়ে যাবে, যাতে সে ক্লিক করতে না পারে।

৬. আগের বিনিয়োগ চেক করা (Checking Existing Investment): ইউজার আগে থেকেই এই ফসলে কোনো বিনিয়োগ করেছে কি না, তা existingInvestment ডাটা দিয়ে চেক করা হচ্ছে। যদি তার আগে থেকেই কেনা শেয়ার থাকে, তবে স্ক্রিনের উপর তার আগের কেনা শেয়ারের পরিমাণ ও টাকার অঙ্ক দেখাবে। শুধু তাই নয়, এর ফলে বাটনের নাম “Invest” থেকে স্বয়ংক্রিয়ভাবে পরিবর্তন হয়ে “Invest More” হয়ে যাবে।

৭. পেমেন্ট গেটওয়েতে পাঠানো (Form Submission): সবশেষে ইউজার যখন বাটনে ক্লিক করবে, তখন onSubmit ফাংশনটি চালু হবে। এটি আবারও চেক করবে যে লিমিট ক্রস করেছে কি না। সব ঠিক থাকলে এটি পেমেন্ট গেটওয়ের জন্য একটি পপ-আপ (Alert) দেখাবে, যেখানে সে কত টাকা দিয়ে কত কেজি ফসল কিনছে, তার একটা ফাইনাল সামারি থাকবে।

সিস্টেমটি সম্পূর্ণ অটোমেটিক। ইউজার শুধু টাকা বা পার্সেন্টেজের যেকোনো একটি ইনপুট দিলেই সিস্টেম বাকি সবকিছু (লিমিট, পাওয়ার পরিমাণ, পেমেন্ট অ্যামাউন্ট) নিজে নিজে হিসাব করে নেয়।