Monopoly app bouwen in Salesforce – deel 12: Repareer uw huizen en Aangeslagen voor straatgeld

De meeste grote stappen zijn gezet. Tijd om te kijken naar deze twee specifieke Kans kaarten waarbij het te betalen bedrag berekend moet worden. Die hebben we tot nu toe genegeerd, maar de betaling hiervan gaan we vandaag in orde maken.

Het gaat om deze twee kaarten:

U wordt aangeslagen voor straatgeld

  • € 4.000,- per huis
  • € 11.500,- per hotel

Repareer uw huizen

  • € 2.500,- per huis
  • € 10.000,- per hotel

De meest logische oplossing hiervoor is om speciale velden voor het bedrag per huis en het bedrag per hotel op het Rule object op te nemen. In de flow voor afhandeling van de Rule moeten we dan alle huizen en hotels in bezit van de speler tellen als die een kaart heeft getrokken waarbij deze bedragen gevuld zijn. Daarna vermenigvuldigen we de bedragen met de aantallen huizen en hotels.

Eerst de custom velden

Voor het toevoegen van de velden kiezen we voor schema builder.

Hierna moeten we ze handmatig op de Lightning Page opnemen.

En laten we ze dan ook maar meteen invullen op de betreffende records

De flow

De flow die we hiervoor gaan aanpassen is SCR – Execute Rule die we in aflevering 5 gebouwd hebben. Onder het Pay Money pad plaatsen we een volgende Decision element waarin we kijken of de Amount per house en Amount per hotel velden van de betreffende Rule bedragen bevatten.

Het tellen van de huizen en hotels van een speler kunnen we zien als een op zichzelf staand proces, dus dat zullen we in een subflow doen die we hier kunnen invoegen.

De subflow om huizen en hotels te tellen

Dit wordt een autolaunched flow en de enige input die we nodig hebben is de Id van de Player voor wie we gaan tellen. Omdat het net zo eenvoudig is om de gehele record variabele voor die Player als input variabele te nemen en dit ons meer flexibiliteit biedt om indien nodig de functionaliteit van de flow later uit te breiden, gebruiken we ook hier weer de inputPlayer variabele.

Output variabelen hebben we ook, twee keer een eenvoudig getal met 0 decimalen.

  • De eerste stap is alle Assets op te halen die in bezit zijn van de inputPlayer.
  • Vervolgens evalueren we met een Loop elke Asset
  • Dan gebruiken we een Decision om te bepalen of de Asset een hotel, 1 tot 4 huizen of geen huizen en hotels heeft.
  • Staat er een hotel, dan tellen we 1 op bij outputNumberOfHotels
  • Staan er huizen op, dan tellen we dat aantal op bij outputNumberOfHouses

Deze verschillende elementen van de flow configureren we als volgt:

Het optellen van 1 bij outputNumberOfHotels is eenvoudig, maar voor het optellen van het juiste aantal huizen hebben we een formule nodig, die de waarde van het Buildings__c veld omzet in een getal. De waarden zijn “1 house”, 2 houses”, “3 houses” en “4 houses”. Met de formule hieronder isoleren we het eerste teken en zetten we dat om van text (string) naar een getal. Omdat het een keuzelijst waarde is, moet je deze eerst omzetten naar tekst, voor je er een tekstformule zoals LEFT op kunt gebruiken.

Hier werken we dus als het ware van binnen naar buiten.

  • De binnenste en eerste bewerking is keuzelijstwaarde omzetten naar tekst
  • De tweede bewerking is deze tekst inkorten naar het eerste teken
  • De laatste en buitenste bewerking is zorgen dat dit getal dat nu nog een string is als getal herkend wordt. (een getalvariabele zonder decimalen noem je ook wel een integer)

En die formule gebruiken we om het juiste aantal huizen bij outputNumberOfHouses op te tellen.

Deze flow slaan we op als ALF – Count Player’s Houses and Hotels en we activeren deze flow meteen.

Terug naar de hoofdflow

Had je het tabblad met de Flow Builder met SCR – Execute Rule nog open staan. Klik dan eerst even op Save en ververs het tabblad met de F5 toets. Pas na het refreshen ‘weet’ de flow van het bestaan van de nieuwe subflow.

We voegen de subflow in onder de Calculated Amount tak die we zojuist gemaakt hebben.

De Cash Balance van de Player werken we in de eerste instantie weer bij met een Assignment om de Subtract operator te kunnen gebruiken.

De formule die het te betalen bedrag bepaalt, ziet er als volgt uit.

{!Count_Player_s_Houses_and_Hotels.outputNumberOfHotels} * {!inputRule.Amount_per_hotel__c} +
{!Count_Player_s_Houses_and_Hotels.outputNumberOfHouses} * {!inputRule.Amount_per_house__c}

De Assignment om het te betalen bedrag bij de actieve speler af te trekken en op te tellen bij de cash balance van de ontvangende speler (de bank) is vrijwel hetzelfde als die er al bestond bij een vast bedrag. Alleen gebruiken we de hierboven getoonde formule om het bedrag te betalen.

Hierna kunnen we weer aansluiten op de al bestaande route om hetzelfde Update element en scherm te gebruiken. In het Scherm moeten we wel een extra stuk logica toevoegen om het juiste bedrag te tonen.

In het scherm kopiëren we de inhoud van het Display Text element en plakken we die in een tweede Display Text. het veld voor het bedrag passen we aan. Op de beide Display Text elementen stellen we voorwaardelijke zichtbaarheid in door naar de uitkomsten van de beslissing te verwijzen.

Nou, dat viel best wel mee, toch? Volgende keer gaan we werken aan de mogelijkheid om huizen te kopen. In juli en augustus even een onderbreking dus dat volgende deel zal verschijnen op 11 september.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *