summaryrefslogtreecommitdiff
path: root/Application/AddTransaction/index.php
blob: 1c3d35f8354b3fb2a3d4083e7d6841a916ca962e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php

require_once $_SERVER['DOCUMENT_ROOT'] . "/Private/SessionManager.php"; global $_PROFILE;

/**
 * Encode data to Base64URL
 * @param string $data
 * @return boolean|string
 */
function base64url_encode($data)
{
    // First of all you should encode $data to Base64 string
    $b64 = base64_encode($data);

    // Make sure you get a valid result, otherwise, return FALSE, as the base64_encode() function do
    if ($b64 === false) {
        return false;
    }

    // Convert Base64 to Base64URL by replacing “+” with “-” and “/” with “_”
    $url = strtr($b64, '+/', '-_');

    // Remove padding character from the end of line and return the Base64URL result
    return rtrim($url, '=');
}

/**
 * Decode data from Base64URL
 * @param string $data
 * @param boolean $strict
 * @return boolean|string
 */
function base64url_decode($data, $strict = false)
{
    // Convert Base64URL to Base64 by replacing “-” with “+” and “_” with “/”
    $b64 = strtr($data, '-_', '+/');

    // Decode Base64 string and return the original data
    return base64_decode($b64, $strict);
}

if (!isset($_GET['Currency']) || !isset($_GET['Amount']) || !is_numeric($_GET['Amount']) || !isset($_GET['Description']) || !isset($_GET['Operation'])) {
    die();
}

$list = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/Private/Data/Transactions.json"), true);
$exchangeRate = (float)file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/Private/ExchangeRate.txt");

$eurToGbp = $exchangeRate;
$gbpToEur = 1 / $eurToGbp;

$list = array_reverse($list);

if ($_GET['Currency'] === "€") {
    $list[] = [
        'author' => $_PROFILE['id'],
        'type' => $_GET['Operation'] === "+" || $_GET['Operation'] === " " ? "gain" : "pay",
        'amount' => [
            'eur' => (float)$_GET['Amount'],
            'gbp' => (float)$_GET['Amount'] * $eurToGbp,
            'original' => 'eur'
        ],
        'date' => date("c"),
        'description' => base64url_decode($_GET['Description'])
    ];
} else {
    $list[] = [
        'author' => $_PROFILE['id'],
        'type' => $_GET['Operation'] === "+" || $_GET['Operation'] === " " ? "gain" : "pay",
        'amount' => [
            'eur' => (float)$_GET['Amount'] * $gbpToEur,
            'gbp' => (float)$_GET['Amount'],
            'original' => 'gbp'
        ],
        'date' => date("c"),
        'description' => base64url_decode($_GET['Description'])
    ];
}

$list = array_reverse($list);

file_put_contents($_SERVER['DOCUMENT_ROOT'] . "/Private/Data/Transactions.json", json_encode($list));