Kurzusok
/
Ballerina
Ballerina
/
Feladatok
/
PaySwitch - Bérkonverter
PaySwitch - Bérkonverter

PaySwitch - Bérkonverter

Közepes

Utasítások

A probléma

Az Insure Everyone nevű cég külföldi valutákban fizeti az alkalmazottait. A jogszabályi előírások miatt azonban a fizetést át kell váltani a helyi valutára. Az alkalmazottai a világ minden táján dolgoznak. Az Insure Everyone HR-osztálya egy tehetséges fejlesztő segítségét kéri egy olyan program megírásához, amely minden alkalmazott fizetését átváltja a hozzá tartozó helyi valutára. Az Insure Everyone egy külső API által biztosított árfolyamokra támaszkodik.

A külső árfolyam-API ismeretében olyan függvényt kell írnod, amely megkapja a source currency forrásvalutát, a salary fizetést (forrásvalutában) és az alkalmazott local currency helyi valutáját, majd visszaadja a fizetést a helyi valutában.

Valutaátváltási API

A külső valutaárfolyam-API válasza az alábbi:

Megjegyzés: a rates le van rövidítve, hogy a probléma leírása rövid maradjon

{
    "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,
    }
}

Példa kérés az USD árfolyamainak lekérésére:

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
  }
}

Megkötések

  • 500 <= salary <= 10000
  • A sourceCurrency és a targetCurrency ISO-valutakódok (alfabetikusak). A tesztbemenet érvénytelen valutakódokat is tartalmazhat.
  • A visszaadott árfolyam pontosságát 5 tizedesjegyig mérik.

Definíció

A kódodat a következő függvényen belül kell megírnod.

# 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;
}

Tesztkörnyezet

  • A tesztelést elvégezheted manuálisan, ha a projektet a bal run paranccsal futtatod, vagy írhatsz egységteszteket, és futtathatod őket a bal test paranccsal. A háttérszolgáltatás automatikusan elindul a http://localhost:8080 címen.

Példa

1. példa

Bemenet:
  • Fizetés: 1000
  • Forrásvaluta: USD
  • Célvaluta: GBP
Kimenet:

Feltéve, hogy a külső valutaváltó a következő átváltási árfolyam-választ adta vissza (kihagyva):

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

A függvénynek 735.84000-t kell visszaadnia.

2. példa

Bemenet:
  • Fizetés: 1000
  • Forrásvaluta: GBP
  • Célvaluta: USD
Kimenet:

Feltéve, hogy a külső valutaváltó a következő átváltási árfolyam-választ adta vissza (kihagyva):

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

A függvénynek 1358.9800-t kell visszaadnia.

Tippek

  • A kapott JSON-választ átalakíthatod egy felhasználó által definiált típusra (pontosabban egy nyílt rekordra) a könnyebb hozzáférés érdekében. További információért lásd a HTTP-kliens adatkötése oldalt.
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Ballerina Exercism

Készen állsz elkezdeni a(z) PaySwitch - Bérkonverter feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Ballerina nyelvet 60 feladat segítségével, valódi emberi mentorálással, mindez ingyen.