Tracks
/
Ballerina
Ballerina
/
Übungen
/
PaySwitch - Gehaltsrechner
PaySwitch - Gehaltsrechner

PaySwitch - Gehaltsrechner

Mittel

Anleitung

Problemstellung

Ein Unternehmen namens Insure Everyone bezahlt seine Angestellten in Fremdwährungen. Aufgrund gesetzlicher Vorgaben muss das Gehalt jedoch in die Landeswährung umgerechnet werden. Die Angestellten sind über die ganze Welt verteilt. Die Personalabteilung von Insure Everyone sucht die Unterstützung einer talentierten Entwicklerin oder eines talentierten Entwicklers, um ein Programm zu bauen, das das Gehalt jeder angestellten Person in die entsprechende Landeswährung umrechnet. Insure Everyone verlässt sich dabei auf Wechselkurse, die eine externe API bereitstellt.

Angesichts der externen Wechselkurs-API musst du eine Funktion schreiben, die eine source currency, ein salary (in der Quellwährung) und die local currency der angestellten Person entgegennimmt und das Gehalt in der Landeswährung zurückgibt.

Wechselkurs-API

Die Antwort der externen Wechselkurs-API ist unten dargestellt:

Hinweis: Die rates sind gekürzt, damit diese Problemstellung kurz bleibt

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

Eine Beispielanfrage, um die Wechselkurse für USD abzurufen:

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

Einschränkungen

  • 500 <= salary <= 10000
  • sourceCurrency und targetCurrency sind ISO-Währungscodes (alphabetisch). Die Testeingabe kann ungültige Währungscodes enthalten.
  • Die Genauigkeit des zurückgegebenen Kurses wird bis auf 5 Dezimalstellen genau gemessen.

Definition

Du musst deinen Code in der folgenden Funktion schreiben.

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

Testumgebung

  • Du kannst es entweder manuell testen, indem du das Projekt mit bal run ausführst, oder Unit-Tests schreiben und sie mit bal test ausführen. Der Backend-Service startet automatisch unter http://localhost:8080

Beispiel

Beispiel 1

Eingabe:
  • Gehalt: 1000
  • Quellwährung: USD
  • Zielwährung: GBP
Ausgabe:

Angenommen, der externe Währungsumtausch hat die folgende Antwort mit Umrechnungskursen zurückgegeben (ausgelassen):

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

Die Funktion muss 735.84000 zurückgeben

Beispiel 2

Eingabe:
  • Gehalt: 1000
  • Quellwährung: GBP
  • Zielwährung: USD
Ausgabe:

Angenommen, der externe Währungsumtausch hat die folgende Antwort mit Umrechnungskursen zurückgegeben (ausgelassen):

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

Die Funktion muss 1358.9800 zurückgeben

Hinweise

  • Du kannst die empfangene JSON-Antwort in einen benutzerdefinierten Typ (genauer gesagt ein Open Record) umwandeln, um einfach darauf zugreifen zu können. Weitere Informationen findest du unter Datenbindung im HTTP-Client
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Ballerina Exercism

Bereit, mit PaySwitch - Gehaltsrechner zu starten?

Melde dich bei Exercism an, um Ballerina mit 60 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.