ट्रैक
/
Ballerina
Ballerina
/
अभ्यास
/
PaySwitch - वेतन कन्वर्टर
PaySwitch - वेतन कन्वर्टर

PaySwitch - वेतन कन्वर्टर

मध्यम

निर्देश

समस्या विवरण

Insure Everyone नाम की एक कंपनी अपने कर्मचारियों को विदेशी मुद्राओं में वेतन देती है। लेकिन कानूनी ज़रूरतों की वजह से वेतन को स्थानीय मुद्रा में बदलना ज़रूरी है। इसके कर्मचारी दुनिया भर में फैले हुए हैं। Insure Everyone का मानव संसाधन विभाग एक प्रतिभाशाली डेवलपर से मदद माँग रहा है, ताकि एक ऐसा प्रोग्राम बनाया जा सके जो हर कर्मचारी के वेतन को उसकी संबंधित स्थानीय मुद्रा में बदल दे। 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 से चलाकर। बैकएंड सेवा http://localhost:8080 पर अपने आप शुरू हो जाएगी

उदाहरण

उदाहरण 1

इनपुट:
  • वेतन: 1000
  • स्रोत मुद्रा: USD
  • लक्ष्य मुद्रा: GBP
आउटपुट:

मान लीजिए कि बाहरी मुद्रा विनिमय ने यह रूपांतरण दरों वाला जवाब दिया (छोड़ा गया):

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

फंक्शन को 735.84000 लौटाना चाहिए

उदाहरण 2

इनपुट:
  • वेतन: 1000
  • स्रोत मुद्रा: GBP
  • लक्ष्य मुद्रा: USD
आउटपुट:

मान लीजिए कि बाहरी मुद्रा विनिमय ने यह रूपांतरण दरों वाला जवाब दिया (छोड़ा गया):

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

फंक्शन को 1358.9800 लौटाना चाहिए

संकेत

  • आसान पहुँच के लिए आप प्राप्त JSON जवाब को एक उपयोगकर्ता-परिभाषित टाइप (खास तौर पर एक ओपन रिकॉर्ड) में बदल सकते हैं। ज़्यादा जानकारी के लिए HTTP क्लाइंट डेटा बाइंडिंग देखिए
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Ballerina Exercism

PaySwitch - वेतन कन्वर्टर शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Ballerina को 60 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।