ট্র্যাক
/
Ballerina
Ballerina
/
অনুশীলনী
/
PaySwitch - বেতন কনভার্টার
PaySwitch - বেতন কনভার্টার

PaySwitch - বেতন কনভার্টার

মধ্যম

নির্দেশনা

সমস্যার বিবৃতি

Insure Everyone নামের একটি কোম্পানি তার কর্মচারীদের বিদেশি মুদ্রায় বেতন দিচ্ছে। কিন্তু আইনি বাধ্যবাধকতার কারণে বেতনটি স্থানীয় মুদ্রায় রূপান্তর করতে হয়। কোম্পানিটির কর্মচারীরা সারা বিশ্বে ছড়িয়ে আছেন। Insure Everyone-এর HR বিভাগ প্রতিটি কর্মচারীর বেতন তার নিজ নিজ স্থানীয় মুদ্রায় রূপান্তর করার একটি প্রোগ্রাম বানাতে একজন দক্ষ ডেভেলপারের সাহায্য চাইছে। Insure Everyone বাইরের একটি API থেকে পাওয়া বিনিময় হারের ওপর নির্ভর করে।

বাইরের বিনিময় হার API-টি ব্যবহার করে আপনাকে এমন একটি ফাংশন লিখতে হবে, যা একটি source currency, salary (উৎস মুদ্রায়) এবং কর্মচারীর local currency নেবে এবং সেই বেতনটি স্থানীয় মুদ্রায় রিটার্ন করবে।

মুদ্রা বিনিময় API

বাইরের মুদ্রা বিনিময় API থেকে পাওয়া রেসপন্সটি নিচে দেওয়া হলো:

নোট: সমস্যার বিবৃতিটি ছোট রাখার জন্য rates-গুলো সংক্ষিপ্ত করা হয়েছে

{
    "base": "EUR",
    "rates": {
        "AED": 4.167972,
        "AFN": 118.91123,
        "ALL": 121.353306,
        "AMD": 546.175542,
        "ANG": 2.035384,
        "AOA": 629.106987,
        "ARS": 116.624363,
        "AUD": 1.580224,
        "AWG": 2.042846,
        "AZN": 1.92923,
        "BAM": 1.95468,
        "BBD": 2.26981,
        "BDT": 97.024176,
        "BGN": 1.956957,
        "BHD": 0.428175,
        "BIF": 2257.462616,
        "BMD": 1.134504,
        "BND": 1.534691,
        "BOB": 7.773946,
        "BRL": 6.394753,
        "BSD": 1.134916,
        "BTC": 0.000027,
        "BTN": 83.896824,
        "BWP": 13.167125,
    }
}

USD-এর জন্য বিনিময় হার পাওয়ার একটি উদাহরণ অনুরোধ:

GET http://localhost:8080/rates/USD

{
  "base": "USD",
  "rates": {
    "AED": 3.672477643818380310171368756063197,
    "AFN": 104.7748962262571579872079201988508,
    "ALL": 106.9266548068103418652047146893925,
    "AMD": 481.2454276553169780099231576470961,
    "ANG": 1.793414695824643301163693331958788,
    "AOA": 554.3178661774696212335484143830275,
    "ARS": 102.7598951821316197338845611280433,
    "AUD": 1.392364754903645275750470737610812,
    "AWG": 1.799989602800547350872880138793802,
    "AZN": 1.699880432206294535038121596128717,
    "BAM": 1.722304900517304728699178180683942,
    "BBD": 1.999971804204874171858658003508614,
    "BDT": 85.48980589838411660371074286227852,
    "BGN": 1.724311207564226937381544618524109,
    "BHD": 0.3772729555625457630971671155965922,
    "BIF": 1989.092294529751410010035940827599,
    "BMD": 0.9996325735447665520331371082216295
    // omitted
  }
}

সীমাবদ্ধতা

  • 500 <= salary <= 10000
  • sourceCurrency আর targetCurrency হলো ISO মুদ্রা কোড (বর্ণভিত্তিক)। টেস্ট ইনপুটে ভুল মুদ্রা কোড থাকতে পারে।
  • রিটার্ন করা হারের নির্ভুলতা 5 দশমিক স্থান পর্যন্ত যাচাই করা হবে।

সংজ্ঞা

আপনাকে আপনার কোডটি নিচের ফাংশনটির ভেতরে লিখতে হবে।

# The exchange rate API base URL
configurable string apiUrl = "http://localhost:8080";

# Convert provided salary to local currency.
#
# + salary - Salary in source currency
# + sourceCurrency - Soruce currency
# + localCurrency - Employee's local currency
# + return - Salary in local currency or error
public function convertSalary(decimal salary, string sourceCurrency, string localCurrency) returns decimal|error {
    // TODO: Write your code here
    return 0;
}

টেস্ট এনভায়রনমেন্ট

  • আপনি হয় bal run দিয়ে প্রজেক্টটি চালিয়ে নিজে হাতে টেস্ট করতে পারেন, নয়তো ইউনিট টেস্ট লিখে bal test দিয়ে সেগুলো চালাতে পারেন। backend সার্ভিসটি http://localhost:8080-এ স্বয়ংক্রিয়ভাবে চালু হয়ে যাবে

উদাহরণ

উদাহরণ ১

ইনপুট:
  • বেতন: 1000
  • উৎস মুদ্রা: USD
  • লক্ষ্য মুদ্রা: GBP
আউটপুট:

ধরে নিন, বাইরের মুদ্রা বিনিময় সেবাটি নিচের রূপান্তর হারের রেসপন্সটি দিয়েছে (বাদ দেওয়া হয়েছে):

{
    "base": "USD",
    "rates": {
        // omitted
        "GBP": 0.73584,
        // omitted
    }
}

ফাংশনটিকে 735.84000 রিটার্ন করতে হবে

উদাহরণ ২

ইনপুট:
  • বেতন: 1000
  • উৎস মুদ্রা: GBP
  • লক্ষ্য মুদ্রা: USD
আউটপুট:

ধরে নিন, বাইরের মুদ্রা বিনিময় সেবাটি নিচের রূপান্তর হারের রেসপন্সটি দিয়েছে (বাদ দেওয়া হয়েছে):

{
    "base": "GBP",
    "rates": {
        // omitted
        "USD": 1.35898,
        // omitted
    }
}

ফাংশনটিকে 1358.9800 রিটার্ন করতে হবে

পরামর্শ

  • সহজে ব্যবহার করার জন্য আপনি পাওয়া JSON রেসপন্সটি একটি ইউজার-ডিফাইনড টাইপে (আরও নির্দিষ্টভাবে বললে একটি ওপেন রেকর্ডে) রূপান্তর করতে পারেন। আরও জানতে HTTP ক্লায়েন্ট ডেটা বাইন্ডিং দেখুন
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Ballerina Exercism

PaySwitch - বেতন কনভার্টার শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Ballerina ট্র্যাকের 60টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।