<?php
require_once "lib/api.php";
require_once "lib/auftrag.php";
session_start();

$handle_length = 8;
if (! isset($_SESSION['handle']) || !$_SESSION['handle']) {
    $random = base64_encode(md5(microtime()));
    $_SESSION['handle'] = substr(str_replace(array('+', '=', '/'), '', $random), 0, $handle_length);
    $_SESSION['date'] = date('Y-m-d H:i:s.v');
    $_SESSION['complete'] = false;
}


$redirect = NULL;
if (isset($_REQUEST['form'])) {
    switch ($_REQUEST['form']) {
        case 'start':
            $number = '';
            if (isset($_REQUEST['phone']) && trim($_REQUEST['phone']) != '') {
                $number = trim($_REQUEST['phone']);
            }
            $name = '';
            if (isset($_REQUEST['name']) && trim($_REQUEST['name']) != '') {
                $name = trim($_REQUEST['name']);
            }

            if (! $number || !$name) {
                $redirect = 'index.php?error&num='.urlencode($number).'&name='.urlencode($name);
                break;
            }

            if (substr($number, 0, 1) != 0 && substr($number, 0, 3) != '+49') {
                $number = '07192'.$number;
            }

           $number = format_number_national($number);

            $_SESSION['name'] = htmlspecialchars($name);
            $_SESSION['phone'] = htmlspecialchars($number);
            if (isset($_REQUEST['save']) && $_REQUEST['save'] == 'yes' && $_SESSION['mode'] != 'local') {
                setcookie('NAME', $name, time() + 24*3600*500, "");
                setcookie('NUMBER', $number, time() + 24*3600*500, "");
            }

            $redirect = 'address.php';
            break;

        case 'address':
            $fields = array("firma", "fname", "lname", "address", "zip", "city");
            foreach ($fields as $f) {
                if (isset($_REQUEST[$f]) && trim($_REQUEST[$f]) != '') {
                    $_SESSION[$f] = trim(htmlspecialchars($_REQUEST[$f]));
                } else {
                    if (! isset($_SESSION[$f])) {
                        $_SESSION[$f] = '';
                    }
                }
            }
            if ($_SESSION['lname'] == '') {
                $redirect = 'address.php?error';
                break;
            }
            if ($_SESSION['mode'] == 'local') {
                $_SESSION['angeliefert'] = true;
                $redirect = 'gitterbox.php';
            } elseif (isset($_SESSION['angeliefert'])) {
                if ($_SESSION['angeliefert']) {
                    $redirect = 'gitterbox.php';
                } else {
                    $redirect = 'gitterbox_spaeter.php';
                }
            } else {
                $redirect = 'anlieferung.php';
            }
            break;

        case 'anlieferung':
            if (isset($_REQUEST['schonda'])) {
                $_SESSION['angeliefert'] = true;
                $redirect = 'gitterbox.php';
            }
            if (isset($_REQUEST['kommtnoch'])) {
                $_SESSION['angeliefert'] = false;
                $redirect = 'gitterbox_spaeter.php';
            }
            break;
        case 'gitterbox':
            if (isset($_REQUEST['lieferart'])) {
                if ($_REQUEST['lieferart'] == 'gitterbox') {
                    $_SESSION['lieferart'] = 'gitterbox';
                    $_SESSION['gbcount'] = htmlspecialchars($_REQUEST['gbcount']);
                }
                if ($_REQUEST['lieferart'] == 'anhaenger') {
                    $_SESSION['lieferart'] = 'anhaenger';
                    $_SESSION['kennz'] = htmlspecialchars($_REQUEST['kennz']);
                    if ($_SESSION['angeliefert'] === false && ! $_SESSION['kennz']) {
                        $redirect = 'gitterbox_spaeter.php?error';
                        break;
                    }
                }
            }
            $redirect = 'gebrauchte.php';
            break;

         case 'gebrauchte':
            if (isset($_REQUEST['kartonsja'])) {
                $_SESSION['kartons'] = true;
            } 
            if (isset($_REQUEST['kartonsnein'])) {
                $_SESSION['kartons'] = false;
            }

            $redirect = 'auftrag.php';
            break;
         case 'auftrag':
            if (isset($_REQUEST['5er'])) {
                $_SESSION['neue'] = '5er';
            }
            if (isset($_REQUEST['10er'])) {
                $_SESSION['neue'] = '10er';
            }
            if (isset($_REQUEST['submit']) && isset($_REQUEST['sonstiges']) && $_REQUEST['sonstiges'] != '') {
                $_SESSION['neue'] = 'sonstiges';
                $_SESSION['sonstiges'] = htmlspecialchars($_REQUEST['sonstiges']);
            }


            $redirect = 'frischsaft.php';
            break;

         case 'frischsaft':
            if (isset($_REQUEST['frischsaftnein'])) {
                $_SESSION['frischsaft'] = 0;
            } elseif (isset($_REQUEST['frischsaft'])) {
                $_SESSION['frischsaft'] = htmlspecialchars($_REQUEST['frischsaft']);
            }

            $redirect = 'summary.php';
            break;
        case 'summary':
            if (isset($_REQUEST['anmerkungen'])) {
                $_SESSION['anmerkungen'] = htmlspecialchars($_REQUEST['anmerkungen']);
            }

            $_SESSION['complete'] = true;
            $redirect = 'finish.php?handle='.$_SESSION['handle'];
            break;

    }
}

$data = array("handle" => $_SESSION['handle']);

$ret = api_call('auftrag/lesen', $data);

if (!isset($ret['auftrag'])) {
    echo 'Es gibt ein Problem beim Speichern der Auftragsdaten. Bitte wenden Sie sich persönlich an uns oder verwenden Sie einen Papierauftrag.';
    die();
}


$auftrag = $ret['auftrag'];


if (isset($_SESSION['kundennr'])) {
    $auftrag['kundennr'] = $_SESSION['kundennr'];
}
$addrfields = array("kundennr" => "kundennr", "firma" => "firma", "fname" => "vorname", "lname" => "nachname", "address" => "adresse", "zip" => "plz", "city" => "ort", "phone" => "telefon");
foreach ($addrfields as $sesskey => $apikey) {
    if (isset($_SESSION[$sesskey]) && $_SESSION[$sesskey] != 'bekannt') {
        $auftrag['kundendaten'][$apikey] = $_SESSION[$sesskey];
    }
}
$auftrag['kundendaten']['telefon'] = format_number($auftrag['kundendaten']['telefon']);

if (count($auftrag['bestellung']) > 1) {
    echo 'Diese Bestellung wurde auf anderem Wege an uns übermittelt und kann mit dieser Oberfläche leider nicht verändert werden';
    die();
}

if (isset($_SESSION['lieferart']) && $_SESSION['lieferart'] == 'gitterbox' && isset($_SESSION['gbcount']) && $_SESSION['gbcount'] > 0) {
    if ($_SESSION['gbcount'] < count($auftrag['bestellung'][0]["gitterbox"])) {
        $auftrag['bestellung'][0]["gitterbox"] = array();
    }
    while (count($auftrag['bestellung'][0]["gitterbox"]) < $_SESSION['gbcount']) {
        $auftrag['bestellung'][0]["gitterbox"][] = array("id" => null);
    }
} else {
    $auftrag['bestellung'][0]["gitterbox"] = array();
}

if (isset($_SESSION['lieferart']) && $_SESSION['lieferart'] == 'anhaenger') {
    $auftrag['bestellung'][0]['anhaenger'] = array(array("kennz" => null));
    if (isset($_SESSION['kennz']) && $_SESSION['kennz'] != '') {
        $auftrag['bestellung'][0]['anhaenger'][0]["kennz"] = $_SESSION['kennz'];
    }
}

if (isset($_SESSION['kartons']) && $_SESSION['kartons']) {
    $auftrag['bestellung'][0]['gebrauchte'] = true;
} else {
    $auftrag['bestellung'][0]['gebrauchte'] = false;
}

$auftrag['bestellung'][0]['neue'] = array();
if (isset($_SESSION['neue']) && $_SESSION['neue'] == 'sonstiges') {
    $auftrag['bestellung'][0]['neue']["sonstiges"] = $_SESSION["sonstiges"];
} elseif (isset($_SESSION['neue']) && $_SESSION['neue'] == '10er') {
    $auftrag['bestellung'][0]['neue']["10er"] = "100%";
} else {
    $auftrag['bestellung'][0]['neue']["5er"] = "100%";
}

if (isset($_SESSION['frischsaft']) && $_SESSION['frischsaft'] > 0) {
    $auftrag['bestellung'][0]['frischsaft'] = $_SESSION['frischsaft'];
} else {
    $auftrag['bestellung'][0]['frischsaft'] = null;
}


if (isset($_SESSION['anmerkungen']) && $_SESSION['anmerkungen'] != '') {
    $auftrag['bestellung'][0]['anmerkungen'] = $_SESSION['anmerkungen'];
}

if (isset($_SESSION['complete']) && $_SESSION['complete'] == true) {
    $auftrag['status'] = 'bestellt';
}

$ret = api_call('auftrag/anlieferung', $auftrag);

if ($ret['status'] == 'error') {
    echo 'Es gibt ein Problem beim Speichern des Auftrags. Bitte verwenden Sie diesmal einen Papier-Auftrag.';
    die();
}



header('Location: '.$redirect);