$type, 'label' => $label, 'weight' => 400, ]; if (!isset($_SESSION['containers'])) { $_SESSION['containers'] = []; } foreach ($_SESSION['containers'] as $cont) { if ($cont['label'] == $label && $label != '') { // Box schon vorhanden $redirect = 'index.php?error=Container schon vorhanden'; break 2; } } $_SESSION['containers'][] = $box; $redirect = 'index.php'; break; case 'delete_container': $num = htmlspecialchars($_REQUEST['index']); if ($num != $_REQUEST['index']) { $redirect = 'index.php?error=Container nicht gefunden'; } $num = (int) $num; if (isset($_SESSION['containers'][$num])) { unset($_SESSION['containers'][$num]); // Array neu aufbauen $_SESSION['containers'] = array_values($_SESSION['containers']); } $redirect = 'index.php'; break; case 'containers_complete': $_SESSION['containers_done'] = true; $redirect = nextPage(); break; case 'customer': $lname = ''; if (isset($_REQUEST['lname']) && trim($_REQUEST['lname']) != '') { $lname = namen_korrigieren($_REQUEST['lname']); } $fname = ''; if (isset($_REQUEST['fname']) && trim($_REQUEST['fname']) != '') { $fname = namen_korrigieren($_REQUEST['fname']); } $number = ''; if (isset($_REQUEST['phone']) && trim($_REQUEST['phone']) != '') { $number = trim($_REQUEST['phone']); } if (substr($number, 0, 1) != "0" && substr($number, 0, 3) != '+49') { $number = '07192'.$number; } $number = format_number_national($number); if (! $number || !$lname || !format_number_api($number)) { $redirect = 'customer.php?error&num='.urlencode($number).'&lname='.urlencode($lname).'&fname='.urlencode($fname); break; } $_SESSION['lname'] = htmlspecialchars($lname); $_SESSION['fname'] = htmlspecialchars($fname); $_SESSION['phone'] = htmlspecialchars($number); if (isset($_REQUEST['save']) && $_REQUEST['save'] == 'yes' && $_SESSION['mode'] != 'local') { setcookie('LNAME', $lname, time() + 24*3600*500, ""); setcookie('FNAME', $fname, 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", "email"); 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['fname'] != '') { $_SESSION['name'] = $_SESSION['lname'].', '.$_SESSION['fname']; } if (!isset($_SESSION['kundennr']) || !$_SESSION['kundennr']) { $_SESSION['kundennr'] = erstelle_kunde($_SESSION); $_SESSION['phonenumbers'] = [format_number_api($_SESSION['phone'])]; $_SESSION['emailaddrs'] = []; if ($_SESSION['email'] != '') { $_SESSION['emailaddrs'][] = $_SESSION['email']; } if (!$_SESSION['kundennr']) { showError(); } } else { if (isset($_SESSION['email']) && $_SESSION['email']) { // Not implemented //update_kunde($_SESSION['kundennr'], ['email' => $_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 '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['containers']) && count($_SESSION['containers']) > 0) { $auftrag['containers'] = array_values($_SESSION['containers']); } // 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']; } 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);