Se trata de un carrito de la compra que se puede obtener el total.
Se puede aplicar un precio en oferta sobre el producto siempre y cuando haya un minimo de unidades.
También se debe poder obtener el total del carrito en otra moneda diferente al Euro.
He usado Laravel como framework, dado que en la actualidad es el que más domino.
He recurrido en algunas ocasiones a metodos de Collections que me permiten trabajar con arrays de una forma más sencilla. He usado filter para buscar en las colecciones y sum para hacer la suma de los items del carrito.
Para el correcto funcionamiento, después de haber hecho clone
del proyecto,
desde el directorio del proyecto deberemos ejecutar:
composer install
Es posible que hayan problemas de permisos de acceso a los directorios logs y cache por eso recomiendo seguir las instrucciones en el caso de que pase:
Para obtener las monedas respecto al euro he utilizado el servicio que habeis sugerido:
Dado lo que dicen en el propio servicio:
The reference rates are usually updated around 16:00 CET on every working day, except on TARGET closing days. They are based on a regular daily concertation procedure between central banks across Europe, which normally takes place at 14:15 CET.
Lo ideal es que esto se haga cada 24 horas preferiblemente justo después de las 16:00h CET, y se actualicen las diferentes monedas en base de datos. Ahora mismo lo obtengo en el momento de la petición del total en otra moneda, pero evidentemente no sería así en producción.
El código del carrito está en el directorio /app/Libs/ y el código de testear en /tests/Unit/
Desde la raiz del proyecto /cart/ se puede testear el código usando el comando
artisan
:
php artisan test
Aunque si se prefiere el método standard sería:
./vendor/bin/phpunit