<?php

require_once('lib/nusoap.php');
require_once 'class/DataManager.php';

$server = new nusoap_server();
$ns = "car_track";
$server->configureWSDL('car_track', $ns);

$server->wsdl->schemaTargetNamespace = $ns;

// register a web service method

$server->register('addNewTrack', // method name
        array(
    'track_id' => 'xsd:int',
    'user_id' => 'xsd:int',
    'track_starttime' => 'xsd:string'
        ), // input parameters
        array('return' => 'xsd:boolean'), // output parameters
        'urn:car_track', // namespace
        'urn:car_track#addNewTrack', // soapaction
        'rpc', // style
        'encoded', // use
        'Ulozenie trasy do databazy'            // documentation
);

function addNewTrack($track_id, $user_id, $track_starttime) {
    $seconds = $track_starttime / 1000;
    $time = date("Y-m-d H:i:s", $seconds);   
    $time2 = date("Y-m-d", $seconds);

    $TrackId = DataManager::insertTrack(($track_id + 102000), $user_id, $time2, 0, "CarTrack " . $time, "", $time, "");
    return true;
}

$server->register('editTrack', // method name
        array(
    'track_distance' => 'xsd:double',
    'track_endtime' => 'xsd:string',
    'track_id' => 'xsd:int'
        ), // input parameters
        array('return' => 'xsd:boolean'), // output parameters
        'urn:car_track', // namespace
        'urn:car_track#editTrack', // soapaction
        'rpc', // style
        'encoded', // use
        'Aktualizovanie zaznamu trasy'            // documentation
);

function editTrack($track_distance, $track_starttime, $track_id) {
    $seconds = $track_starttime / 1000;
    $time = date("Y-m-d H:i:s", $seconds);
    DataManager::updateTrack($track_id + 102000, $track_distance, $time);
    return true;
}

$server->register('addNewPoint', // method name
        array(
    'point_id' => 'xsd:int',
    'track_id' => 'xsd:int',
    'point_datetime' => 'xsd:string',
    'point_latitude' => 'xsd:double',
    'point_longitude' => 'xsd:double',
    'point_altitude' => 'xsd:double',
    'point_speed' => 'xsd:double'
        ), // input parameters
        array('return' => 'xsd:boolean'), // output parameters
        'urn:car_track', // namespace
        'urn:car_track#addNewPoint', // soapaction
        'rpc', // style
        'encoded', // use
        'Ulozenie bodu do databazy'            // documentation
);

function addNewPoint($point_id, $track_id, $point_datetime, $point_latitude, $point_longitude, $point_altitude, $point_speed) {
    DataManager::__getConnection();
    $seconds = $point_datetime / 1000;
    $time = date("Y-m-d H:i:s", $seconds);
    $pointArray = array(
        'point_id' => $point_id + 102000,
        'track_id' => $track_id + 102000, 
        'point_datetime' => $time,
        'point_latitude' => $point_latitude,
        'point_longitude' => $point_longitude,
        'point_altitude' => $point_altitude,
        'point_speed' => $point_speed
    );

    DataManager::insertPoint($pointArray);

    //$TrackId = DataManager::insertTrack($user_id, $track_date, 0, "CarTrack " . $track_date . " " . $track_starttime, "", $track_starttime, "");
    return true;
}

// service the methods
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
?>