$_SESSION['email']]); } } $_SESSION['address_done'] = true; $redirect = nextPage(); break; case 'notification': if (isset($_REQUEST['notification'])) { list($schema, $content) = explode(':', $_REQUEST['notification']); if ($schema == 'sms' or $schema == 'whatsapp') { $content = format_number_api($content); } $_SESSION['notificationPreference'] = $schema.':'.$content; $_SESSION['notification_done'] = true; } $redirect = nextPage(); break; case 'anlieferung': if (isset($_REQUEST['schonda'])) { $_SESSION['angeliefert'] = true; $redirect = 'gitterbox.php'; break; } if (isset($_REQUEST['kommtnoch'])) { $_SESSION['angeliefert'] = false; $redirect = 'gitterbox_spaeter.php'; break; } break; case 'gitterbox': if (isset($_REQUEST['lieferart'])) { $_SESSION['gitterbox_done'] = true; 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 = nextPage(); break; case 'obstart': $_SESSION['obstart'] = $_REQUEST['obstart']; $_SESSION['obstart_done'] = true; $redirect = nextPage(); case 'gebrauchte': if (isset($_REQUEST['kartonsja'])) { $_SESSION['kartons'] = true; } if (isset($_REQUEST['kartonsnein'])) { $_SESSION['kartons'] = false; } $_SESSION['gebrauchte_done'] = true; $redirect = nextPage(); break; case 'auftrag': if (isset($_REQUEST['3er'])) { $_SESSION['neue'] = '3er'; } 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']); } elseif (isset($_REQUEST['sonstiges'])) { $_SESSION['neue'] = 'sonstiges'; $redirect = 'auftrag.php?sonstiges'; break; } $_SESSION['auftrag_done'] = true; $redirect = nextPage(); break; case 'frischsaft': if (isset($_REQUEST['frischsaftnein'])) { $_SESSION['frischsaft'] = 0; } elseif (isset($_REQUEST['frischsaft'])) { $_SESSION['frischsaft'] = htmlspecialchars($_REQUEST['frischsaft']); } $_SESSION['frischsaft_done'] = true; $redirect = nextPage(); break; case 'summary': if (isset($_REQUEST['anmerkungen'])) { $_SESSION['anmerkungen'] = htmlspecialchars($_REQUEST['anmerkungen']); } $_SESSION['complete'] = true; $redirect = 'finish.php'; break; } } /* * Um das Speichern in der API kümmern wir uns, wenn Kundendaten, Obstart und grundsätzliche Auftragsdaten feststehen */ if (isset($_SESSION['neue'])) { // Bevor dieses Datenfeld vorhanden ist, macht Speichern keinen Sinn $auftrag = []; /* Herunterladen bringt nichts, da wir einfach immer unsere bekannten Daten rein schieben. Parallelität ist nicht gewünscht * if (isset($auftrag['id'])) { // Auftrag ist schon in der API, aktuellen Stand herunter laden $auftrag = api_call('GET', 'orders/'.$auftrag['id']); }*/ // customer if (isset($_SESSION['kundennr'])) { $auftrag['customer'] = $_SESSION['kundennr']; $auftrag['name'] = $_SESSION['name']; $auftrag['phone'] = $_SESSION['phone']; $auftrag['email'] = isset($_SESSION['email']) ? $_SESSION['email'] : null; $auftrag['notificationPreference'] = $_SESSION['notificationPreference']; $auftrag['fruitTypeName'] = $_SESSION['obstart']; } // containers if (isset($_SESSION['lieferart']) && $_SESSION['lieferart'] == 'gitterbox' && isset($_SESSION['gbcount']) && $_SESSION['gbcount'] > 0) { $auftrag['containers'] = array_fill(0, $_SESSION['gbcount'], [ "type" => "box", "weight" => 400 ]); } if (isset($_SESSION['lieferart']) && $_SESSION['lieferart'] == 'anhaenger') { if (!isset($_SESSION['kennz'])) { $_SESSION['kennz'] = null; } $auftrag['containers'] = [ ["type" => "trailer", "weight" => 0, "label" => $_SESSION['kennz']] ]; } // usedPackages if (isset($_SESSION['kartons'])) { $auftrag['haveUsed'] = (bool) $_SESSION['kartons']; } // plannedPackagings if (isset($_SESSION['neue'])) { $plan = []; if ($_SESSION['neue'] == 'sonstiges') { $auftrag['free'] = $_SESSION["sonstiges"]; } else { $plan[] = [ "packageType" => $_SESSION['neue'], "wish" => "rest" ]; } if (isset($_SESSION['frischsaft']) && $_SESSION['frischsaft'] > 0) { $plan[] = [ "packageType" => "frischsaft", "wish" => $_SESSION['frischsaft'] ]; } $auftrag['wishes'] = $plan; } // notes $auftrag['notes'] = ''; if (isset($_SESSION['anmerkungen']) && $_SESSION['anmerkungen'] != '') { $auftrag['notes'] = $_SESSION['anmerkungen'] . (isset($_SESSION["sonstiges"]) ? "\n\n" . $_SESSION["sonstiges"] : ''); } if ($_SESSION['mode'] != 'local') { $auftrag['notes'] .= "\nAuftrag wurde mit einem eigenen Gerät erstellt."; } if (!isset($_SESSION['complete']) || $_SESSION['complete'] == false) { $auftrag['notes'] .= "\nAuftrag unvollständig erfasst."; } // Auftrag lokal speichern $filename = "../data/".date('Y').'/'.time().'.json'; if (isset($_SESSION['orderid'])) { $filename = "../data/".date('Y').'/'.time().'-'.$_SESSION['orderid'].'.json'; } @file_put_contents($filename, json_encode($auftrag)); if (isset($_SESSION['orderid']) && $_SESSION['orderid']) { // update $ret = api_call('PUT', 'anonymous/updateorder/'.$_SESSION['orderid'], $auftrag); } else { // neu $ret = api_call('POST', 'anonymous/neworder', $auftrag); } if ($ret['status_code'] >= 400) { foreach ($ret['data']['validation_errors'] as $item) { $_SESSION['warnings'][] = $item['key'].': '.$item['message']; } return showError(); } $ret = $ret['data']; $_SESSION['orderid'] = $ret['uuid']; if (!isset($ret['id'])) { echo "Es gabe einen Fehler beim Abspeichern des Auftrags. Wir bitten dies zu entschuldigen und einen Papierauftrag auszufüllen."; file_put_contents("../error.log", date("Y-m-d H:i:s") . ': '.json_encode($auftrag). print_r($ret, true).'\n', FILE_APPEND | LOCK_EX); die(); } // Auftrag lokal speichern if (isset($_SESSION['orderid'])) { $filename = "../data/".date('Y').'/'.time().'-'.$_SESSION['orderid'].'.json'; } @file_put_contents($filename, json_encode($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);