<?php

$serverCollection = json_decode(file_get_contents("input.json"), true);

$dbArray = [];

function currencyName($currencySymbol){
    if($currencySymbol === '$'){ return 'USD'; }
    if($currencySymbol === 'S$'){ return 'SGD'; }
    if($currencySymbol === '€'){ return 'EUR'; }
    return '';
}

foreach($serverCollection as $server) {

    $format = `
    {
      "model": "Dell R6302x Intel Xeon E5-2650v3",
      "ram": {
        "memory": "128",
        "unit": "GB",
        "type": "DDR4"
      },
      "hdd": {
        "memory": "120",
        "count": "2",
        "unit": "GB",
        "type" : "SSD"
      },
      "location": "SingaporeSIN-11",
      "price": {
        "currency": "USD",
        "currencySymbol": "$",
        "amountCents": "55599"
      }
    }`;


    $model = $server['model'];
    $ram = $server['ram'];
    $hdd = $server['hdd'];
    $location = $server['location'];
    $price = $server['price'];

    $dbServer = [];

    $dbServer['model'] = $model;

    $ramArray = explode("GB", $ram);

    $dbServer['ram'] = [
        'memory' => $ramArray[0],
        'unit' => 'GB',
        'type' => $ramArray[1]
    ];

    $dbServer['hdd'] = $hdd;
    preg_match('/(\d{0,})(x)(\d{0,})(GB|TB)(.{0,})/m', $hdd, $hddArray);

    $dbServer['hdd'] = [
        'memory' => $hddArray[3],
        'count' => $hddArray[1],
        'unit' => $hddArray[4],
        'type' => $hddArray[5]
    ];

    $dbServer['location'] = $location;

    preg_match('/(€|\$|S\$)(\d{0,}\.\d{0,}|\d{0,}\,\d{0,}\.\d{0,})/m', $price, $priceArray);
    $dbServer['price'] = [
        'currency' => currencyName($priceArray[1]),
        'currencySymbol' => $priceArray[1],
        'amountCents' => round( ((float) $priceArray[2]) * 100)
    ];

    $dbArray[] = $dbServer;
}

file_put_contents('./../db.json', json_encode($dbArray, JSON_UNESCAPED_UNICODE));