<?php

/**
 *  Informatica Eindproject D4p
 *  6in3, Stedelijk Gymnasium Nijmegen
 *  Docent: Hans de Wolf
 *
 *  ==================
 *
 *  Daniel Boutros,
 *  Christiaan Goossens,
 *  Jelmer Hinssen
 */

namespace Inforbank\Application\Helper\Idob;

use Inforbank\Application;

class Transactie
{
    public static function createTransactie($reference, $clientId, $amount, $description)
    {
        $container = Application::getContainer();
        $db = $container->db;

        $trans = $db->idobt->insert([
            "reference" => $reference,
            "clientId" => $clientId,
            "amount" => $amount,
            "description" => $description,
            "status" => 1
        ]);
        return $trans['id'];
    }

    public static function getTransactie($id)
    {
        $container = Application::getContainer();
        $db = $container->db;

        $transactie = $db->idobt->where("transactieId", $id)->limit(1)->fetch();

        if (!$transactie) {
            throw new \Exception("Transaction not found");
        }

        return array(
            "transactieId" => $transactie['transactieId'],
            "reference" => $transactie['reference'],
            "clientId" => $transactie['clientId'],
            "amount" => (double) $transactie['amount'],
            "description" => $transactie['description'],
            "status" => (int) $transactie['status']
        );
    }

    public static function setTransactionStatus($id, $status)
    {
        $container = Application::getContainer();
        $db = $container->db;

        $transactie = $db->idobt->where("transactieId", $id)->limit(1);
        if (!$transactie) {
            throw new \Exception("Transaction not found");
        }

        $transactie->update(array(
            "status" => $status
        ));

        if (!$transactie) {
            throw new \Exception("Failed to update status");
        }
    }
}
