De berekeningsmodule

2 weken geleden • 2 minuten lezen

Nu dat het grote project van Robert en mij goed vooruit gaat, werd het tijd voor het grootste en moeilijkste onderdeel. We mochten een grote berekeningsmodule uitbouwen, die modulair in de toekomst eenvoudig uitgebreid kan worden en via de back-end door de klant te beheren was.

Onderzoek

De berekeningsmodule van de app was super complex, aangezien verschillende database entiteiten steeds relationeel met elkaar verbonden moesten zijn en vertaald worden naar wiskundige formules geschreven door de VUB.

Zo ben ik de eerste dagen begonnen met het onderzoeken van de verschillende spreadsheets, en de achterliggende back-end flow, logica en organisatie te ontwerpen. Een super leuke en uitdagende challenge!

Migraties

Nadat ik de berekeningen in grote lijnen onder de knie had, ben ik begonnen met het schrijven van migraties om de data uit de Excel-spreadsheets te digitaliseren naar de Laravel-software.

Uiteraard was er hiervoor een Composer package beschikbaar, met dank aan de open-source community van PHP! Hiermee kon ik nieuwe geoptimaliseerde spreadsheets maken in het CSV-formaat, die dan geconverteerd konden worden naar rijen in de database.

Het enige nadeel hiervan was dat de package rechtstreeks de database-connectie aansprak, waardoor de data niet langs Eloquent passeerde. Hierdoor werd een aantal data niet juist gegeneerd, wat ik dan oploste door formules binnen Excel te schrijven, die deze logica opving en zo juist kon importeren.

Berekeningen

Nadat de eerste datasets geïmporteerd werden, kon ik aan de slag met het verwerken van de gegevens binnen Laravel. Hiervoor maakte ik een veelvormige relatietabel, om variabel types van verschillende entiteiten aan datasets dynamisch te linken.

Hierna werkte ik met Robert samen om in de front-end een real-time search op te zetten naar alle database-entiteiten die konden voorkomen in de berekening. Deze konden dan gebruikt worden om met bouwblokken formules bij elkaar te slepen, die dan in de back-end geparsed en berekend werden.

Tot slot

Na velen testrondes en itereren op de datasets was de berekeningsmodule technisch klaar in onze voorlaatste week stage! Met het modulair systeem is het nu vrij eenvoudig om alle verdere datasets nog als ware blokken toe te voegen aan het systeem, waarmee de berekeningen eenvoudig uitgebreid kunnen worden.