function bindTransactionProofEntityArray($transactionProofEntitys)
{
    $transactionProofDtos = new TransactionProofListDto();
    $transactionProofDtoArray = array();
    foreach ($transactionProofEntitys as $transactionProofEntity => $value) {
        array_push($transactionProofDtoArray, bindTransactionProofEntity($value));
    }
    $transactionProofDtos->setTransactionProofs($transactionProofDtoArray);
    return $transactionProofDtos;
}
function bindTransactionEntity($transactionEntity)
{
    if ($transactionEntity != null) {
        $transactionDto = new TransactionDto();
        $transactionDto->setTransactionId($transactionEntity->getTransactionId());
        $transactionDto->setTransactionTotal($transactionEntity->getTransactionTotal());
        $transactionDto->setUser(bindUserEntity($transactionEntity->getUser()));
        $transactionDto->setTransactionType($transactionEntity->getTransactionType());
        $transactionDto->setTransactionProof(bindTransactionProofEntity($transactionEntity->getTransactionProof()));
        $transactionDto->setTransactionDate($transactionEntity->getTransactionDate());
        return $transactionDto;
    } else {
        return null;
    }
}
    }
});
$app->put('/transactionproofs/:id', function ($id) use($app) {
    global $entityManager;
    $transactionProofEntity = $entityManager->find("TransactionProofEntity", $id);
    $entityManager->flush();
    $transactionProofDto = bindTransactionProofEntity($transactionProofEntity);
    $transactionProofDto->printData($app);
});
$app->post('/transactionproofs', function () use($app) {
    global $entityManager;
    $transactionProofDto = new TransactionProofDto();
    $transactionProofDto->bindJson($app);
    $entityManager->persist($transactionProofEntity);
    $entityManager->flush();
    $transactionProofDto = bindTransactionProofEntity($transactionProofEntity);
    $transactionProofDto->printData($app);
});
$app->delete('/transactionproofs/:id', function ($id) use($app) {
    global $entityManager;
    $transactionProofEntity = $entityManager->find("TransactionProofEntity", $id);
    $entityManager->remove($transactionProofEntity);
    $entityManager->flush();
});
/*Referances*/
$app->get('/transactionproofs/:id/transactions', function ($id) use($app) {
    global $entityManager;
    $transactionEntities = $entityManager->getRepository("TransactionEntity")->findBy(array('transactionproof' => $id));
    $transaction = bindTransactionEntityArray($transactionEntities);
    $transaction->printData($app);
});