Neue API 2023
Bernd Wurst

Bernd Wurst commited on 2023-08-05 10:58:24
Zeige 11 geänderte Dateien mit 260 Einfügungen und 157 Löschungen.

... ...
@@ -10,21 +10,17 @@ if (!isset($_SESSION['phone']) || (!isset($_SESSION['name']) && !isset($_SESSION
10 10
 
11 11
 
12 12
 $content = '';
13
-$kunde = null;
14
-if (isset($_SESSION['name'])) {
15
-    $kunde = suche_kunde($_SESSION['name'], $_SESSION['phone']);
13
+$_SESSION['lname'] = ucwords($_SESSION['name']);
14
+if (strpos($_SESSION['name'], ' ') !== false) {
15
+    $parts = explode(" ", ucwords($_SESSION['name']));
16
+    $_SESSION['lname'] = array_pop($parts);
17
+    $_SESSION['fname'] = implode(" ", $parts);
16 18
 }
19
+if (isset($_SESSION['name']) && !isset($_SESSION['kundennr'])) {
20
+    $kunde = suche_kunde($_SESSION['name'], $_SESSION['phone']);
17 21
     if ($kunde) {
18
-    $fields = array("kundennr" => "kundennr", "firma" => "firma", "fname" => "vorname", "lname" => "nachname", "address" => "adresse", "zip" => "plz", "city" => "ort");
19
-    foreach ($fields as $sesskey => $arrkey) {
20
-        if (isset($_SESSION[$sesskey]) && $_SESSION[$sesskey] != '' && $_SESSION[$sesskey] != 'bekannt') {
21
-            $kunde[$arrkey] = $_SESSION[$sesskey];
22
+        $_SESSION['kundennr'] = $kunde['id'];
22 23
     }
23
-        if (isset($kunde[$arrkey])) {
24
-            $_SESSION[$sesskey] = $kunde[$arrkey];
25
-        }
26
-    }
27
-    unset($_SESSION['name']);
28 24
 }
29 25
 
30 26
 if (isset($_REQUEST['error'])) {
... ...
@@ -34,36 +30,30 @@ if (isset($_REQUEST['error'])) {
34 30
     </div>';
35 31
 }
36 32
 
37
-if (!$kunde) {
38
-    $kunde = array('kundennr' => '', 'firma' => '', 'nachname' => '', 'vorname' => '', 'adresse' => '', 'plz' => '', 'ort' => '');
39
-    $fields = array("kundennr" => "kundennr", "firma" => "firma", "fname" => "vorname", "lname" => "nachname", "address" => "adresse", "zip" => "plz", "city" => "ort");
40 33
 
41
-    foreach ($fields as $sesskey => $arrkey) {
42
-        if (isset($_SESSION[$sesskey])) {
43
-            $kunde[$arrkey] = $_SESSION[$sesskey];
44
-        }
45
-    }
46
-    if (isset($_SESSION['name'])) {
47
-        $kunde['nachname'] = ucwords($_SESSION['name']);
48
-        if (strpos($_SESSION['name'], ' ') !== false) {
49
-            $parts = explode(" ", ucwords($_SESSION['name']));
50
-            $kunde['nachname'] = array_pop($parts);
51
-            $kunde['vorname'] = implode(" ", $parts);
52
-
53
-        }
54
-    }
55
-}
56 34
 $headline = 'Adresse eingeben';
57
-if ($kunde['kundennr']) {
35
+if (isset($_SESSION['kundennr']) and $_SESSION['kundennr']) {
58 36
     $headline = 'Willkommen zurück!';
59 37
     $content .= '
60
-        <p>Schön, wir kennen uns ja schon! Wenn sich an Ihrer Adresse seit Ihrem letztem Besuch etwas geändert hat, ändern Sie es bitte hier. Ansonsten können Sie die Felder so lassen. Aus Datenschutzgründen werden die gespeicherten Daten hier nicht angezeigt.</p>
38
+        <p>Schön, wir kennen uns ja schon! Aus Datenschutzgründen wird Ihre Adresse hier nicht angezeigt. Sofern Sie Änderungen an Ihren Kundendaten wünschen, sprechen Sie uns bitte vor Ort darauf an.</p>';
39
+    $content .= '
40
+        <form class="form" action="save.php" method="post">
41
+        <input type="hidden" name="form" value="address">';
42
+    $content .= '<input name="fname" type="hidden" value="'.$_SESSION['fname'].'">
43
+           <input name="lname" type="hidden" value="'.$_SESSION['lname'].'">
44
+          <div class="form-group form-group-lg">
45
+            <div><input class="btn btn-primary btn-lg" type="submit" value="Weiter &gt;"></div>
46
+        </div>
47
+        </form>
48
+
61 49
     ';
50
+
51
+
62 52
 } else { 
63 53
     $content .= '
64 54
         <p>Bitte geben Sie in diesem Schritt Ihre Adresse ein.</p>
65 55
     ';
66
-}
56
+
67 57
 
68 58
     $fields = array("vorname" => "Vorname",
69 59
         "nachname" => "Nachname",
... ...
@@ -87,15 +77,15 @@ foreach ($fields as $field => $label) {
87 77
     $content .= '
88 78
         <form class="form" action="save.php" method="post">
89 79
         <input type="hidden" name="form" value="address">';
90
-if (isset($kunde['firma']) && $kunde['firma'] != '') {
80
+    /*if (isset($kunde['firma']) && $kunde['firma'] != '') {
91 81
         $content .= '
92 82
         <div class="form-group form-group-lg row">
93 83
             <div class="col-sm-12"><input class="form-control" id="address" name="address" type="text" placeholder="'.$placeholders['firma'].'" autocomplete="street-address" value="'.$contents['firma'].'"></div>
94 84
         </div>';
95
-}
85
+    }*/
96 86
     $content .= '   <div class="form-group form-group-lg row">
97
-        <div class="col-sm-6"><input class="form-control" id="fname" name="fname" type="text" placeholder="'.$placeholders['vorname'].'" autocomplete="given-name" value="'.$contents['vorname'].'"></div>
98
-        <div class="col-sm-6"><input class="form-control" id="lname" name="lname" type="text" placeholder="'.$placeholders['nachname'].'" autocomplete="family-name" value="'.$contents['nachname'].'"></div>
87
+            <div class="col-sm-6"><input class="form-control" id="fname" name="fname" type="text" placeholder="'.$placeholders['vorname'].'" autocomplete="given-name" value="'.$_SESSION['fname'].'"></div>
88
+            <div class="col-sm-6"><input class="form-control" id="lname" name="lname" type="text" placeholder="'.$placeholders['nachname'].'" autocomplete="family-name" value="'.$_SESSION['lname'].'"></div>
99 89
         </div>
100 90
         <div class="form-group form-group-lg row">
101 91
             <div class="col-sm-12"><input class="form-control" id="address" name="address" type="text" placeholder="'.$placeholders['adresse'].'" autocomplete="street-address" value="'.$contents['adresse'].'"></div>
... ...
@@ -110,6 +100,6 @@ $content .= '   <div class="form-group form-group-lg row">
110 100
         </form>
111 101
 
112 102
     ';
113
-
103
+}
114 104
 
115 105
 include("template.php");
... ...
@@ -8,6 +8,10 @@ $(function () {
8 8
         $('#btn-frischsaftja').addClass('btn-primary');
9 9
         $('#details-frischsaft').show();
10 10
         $('#frischsaft').focus();
11
+        val = parseInt($('#frischaft').val(), 10);
12
+        if (val > 0 && val <= 150) {
13
+           $('#submit').prop('disabled', false);
14
+        }
11 15
         event.preventDefault();
12 16
     });
13 17
 
... ...
@@ -42,8 +42,9 @@ $content .= '
42 42
     <p>Welche Karton-Größen sollen wir für Sie herstellen?</p>
43 43
 
44 44
     <div class="form-group form-group-lg row">
45
-        <div class="col-sm-6"><input type="submit" class="btn btn-block btn-lg btn-light" id="btn-5er" name="5er" value="'.$gebrauchte.'5er"></div>
46
-        <div class="col-sm-6"><input type="submit" class="btn btn-block btn-lg btn-light" id="btn-10er" name="10er" value="'.$gebrauchte.'10er"></div>
45
+        <div class="col-sm-4 col-xs-12"><input type="submit" class="btn btn-block btn-lg btn-light" id="btn-3er" name="3er" value="'.$gebrauchte.'3er"></div>
46
+        <div class="col-sm-4 col-xs-12"><input type="submit" class="btn btn-block btn-lg btn-light" id="btn-5er" name="5er" value="'.$gebrauchte.'5er"></div>
47
+        <div class="col-sm-4 col-xs-12"><input type="submit" class="btn btn-block btn-lg btn-light" id="btn-10er" name="10er" value="'.$gebrauchte.'10er"></div>
47 48
     </div>
48 49
     <div class="form-group form-group-lg">
49 50
         <label for="sonstiges">Falls obiges nicht zutrifft, beschreiben Sie bitte hier Ihren Wunsch.</label>
... ...
@@ -18,7 +18,11 @@ $number = format_number($_SESSION['phone']);
18 18
 
19 19
 
20 20
 $headline = 'Vielen Dank für Ihren Auftrag!';
21
-$url = 'https://auftrag.mosterei-wurst.de/view/'.$_REQUEST['handle'];
21
+if (isset($_SESSION['orderid']) && $_SESSION['orderid'] > 0) {
22
+    $content = '<p>Ihr Auftrag ist vollständig bei uns eingegangen.</p>';
23
+    $content .= '<p>Die Auftragsnummer lautet: '.$_SESSION['orderid'].'</p>';
24
+}
25
+/*$url = 'https://auftrag.mosterei-wurst.de/view/'.$_REQUEST['handle'];
22 26
 if (!(isset($_SESSION['mode']) && $_SESSION['mode'] == 'local')) {
23 27
     $url = '<a href="'.$url.'">'.$url.'</a>';
24 28
 }
... ...
@@ -34,7 +38,7 @@ if (substr($number, 0, 5) == '+49 1' && isset($_SESSION['mode']) && $_SESSION['m
34 38
         <div><a class="btn btn-outline-secondary btn-lg" href="smsauftrag.php?handle='.$_REQUEST['handle'].'">Diesen Link per SMS erhalten</a></div>
35 39
     </div>
36 40
 ';
37
-}
41
+}*/
38 42
 $content .='    <div class="form-group form-group-lg">
39 43
         <div><a class="btn btn-primary btn-lg" href="clear.php">Zurück zum Anfang</a></div>
40 44
     </div>
... ...
@@ -51,7 +51,7 @@ $content .= '
51 51
      <div class="form-group form-group-lg">
52 52
         <label for="frischsaft">Welche Menge an frischem (nicht pasteurisiertem) Saft sollen wir in Ihr Gefäß einfüllen?</label>
53 53
     <div class="row justify-content-center">
54
-        <div class="col-6 col-sm-2"><input class="form-control" type="number" name="frischsaft" id="frischsaft"></div>
54
+        <div class="col-6 col-sm-2"><input class="form-control" type="number" name="frischsaft" id="frischsaft" value="'.(isset($_SESSION['frischsaft']) ? $_SESSION['frischsaft'] : '').'"></div>
55 55
         <div class="col-6 col-sm-8" style="text-align: left; font-size: 18px; padding-top: 0.5em;" class="form-control">Liter</div>
56 56
     </div>
57 57
     </div>
... ...
@@ -1,52 +1,66 @@
1 1
 <?php
2 2
 
3
-require_once dirname(__DIR__).'/config.php';
3
+require_once("config.php");
4 4
 
5
-$config['debug'] = false;
6
-//$config['debug'] = true;
5
+$jwt_token = null;
6
+$jwt_refresh_token = null;
7 7
 
8
-$curl = curl_init();
8
+# init API
9
+$base_url = $config['api_url'];
10
+$url = $base_url . 'login';
11
+$data = [
12
+    "username" => $config['api_username'],
13
+    "password" => $config['api_password']
14
+];
15
+$options = array(
16
+  'http' => array(
17
+    'method'  => 'POST',
18
+    'content' => json_encode( $data ),
19
+    'header'=>  "Content-Type: application/json\r\n" .
20
+                "Accept: application/json\r\n"
21
+    )
22
+);
9 23
 
10
-curl_setopt_array($curl, array(
11
-      CURLOPT_RETURNTRANSFER => true,
12
-      CURLOPT_ENCODING => "",
13
-      CURLOPT_MAXREDIRS => 10,
14
-      CURLOPT_TIMEOUT => 30,
15
-      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
16
-      CURLOPT_HTTPHEADER => array("Content-Type: application/json"),
17
-      CURLOPT_CUSTOMREQUEST => "POST"));
24
+$context  = stream_context_create( $options );
25
+$result = file_get_contents( $url, false, $context );
26
+$response = json_decode( $result, true);
18 27
 
28
+$jwt_token = $response["token"];
29
+$jwt_refresh_token = $response["refresh_token"];
19 30
 
20
-function api_call($path, $data)
21
-{
22
-    global $curl;
23
-    global $config;
24 31
 
25
-    if ($config['debug']) {
26
-        echo '<pre>API-Call: '.$config['api_url'].$path."\n";
27
-        print_r($data);
28
-        echo '</pre>';
29
-    }
32
+function api_call($method, $url, $content = []) {
33
+    global $jwt_token;
34
+    global $base_url;
35
+    $url = $base_url . $url;
36
+    $options = array(
37
+      'http' => array(
38
+        'method'  => strtoupper($method),
39
+        'content' => json_encode( $content ),
40
+        'header'=>  "Content-Type: application/json\r\n" .
41
+                    "Accept: application/json\r\n" .
42
+                    "Authorization: Bearer ".$jwt_token."\r\n"
43
+        )
44
+    );
30 45
 
31
-    $data['authtoken'] = $config['api_token'];
32
-    curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
33
-    curl_setopt($curl, CURLOPT_URL, $config['api_url'].$path.($config['debug'] ? '?debug' : ''));
46
+    $context  = stream_context_create( $options );
47
+    $result = file_get_contents( $url, false, $context );
48
+    $response = json_decode( $result, true );
49
+    return $response;
50
+}
34 51
 
35
-    $response = curl_exec($curl);
36
-    $err = curl_error($curl);
52
+require_once('vendor/autoload.php');
37 53
 
38
-    $ret = @json_decode($response, true);
39
-    if ($config['debug'] && $ret) {
40
-        echo '<pre>API response';
41
-        print_r($ret);
42
-        echo '</pre>';
54
+function format_number_api($number) {
55
+    $phoneNumberUtil = \libphonenumber\PhoneNumberUtil::getInstance();
56
+    try {
57
+        $phoneNumber = $phoneNumberUtil->parse($number, 'DE');
58
+    } catch (Exception $e) {
59
+        return NULL;
43 60
     }
44
-    if ($config['debug'] && (!isset($ret['status']) || $ret['status'] == 'error')) {
45
-        echo '<pre>API-Error-Response:';
46
-        echo $response;
47
-        echo '</pre>';
61
+    if ($phoneNumberUtil->isValidNumber($phoneNumber)) {
62
+        return $phoneNumberUtil->format($phoneNumber, \libphonenumber\PhoneNumberFormat::E164);
48 63
     }
49
-    return $ret;
64
+    return NULL;
50 65
 }
51 66
 
52
-
... ...
@@ -1,27 +1,55 @@
1 1
 <?php
2
-
2
+require_once('api.php');
3 3
 
4 4
 function suche_kunde($name, $number) {
5 5
         global $content;
6 6
         if (! $number) {
7 7
             return NULL;
8 8
         }
9
-        $data = array("name" => $name, "telefon" => $number);
10
-
11
-        $ret = api_call('kunde/pruefen', $data);
9
+        $ret = api_call('GET', 'customerContacts/search/'.format_number_api($number));
12 10
 
13
-        if (!$ret || $ret["status"] == 'error' || !$ret["kundennr"]) {
14
-            if (isset($ret["errno"]) && $ret["errno"] == "429") {
15
-                $content .= '<div class="card text-white bg-danger mb-3">
16
-                <div class="card-header">Fehler</div>
17
-                <div class="card-body">Die Suche anhand der Telefonnummer wurde verweigert, weil zu viele Zugriffe auf diese Funktion vorgenommen wurden. Bitte geben Sie Ihre Daten neu ein oder versuchen Sie es in wenigen Minuten noch einmal.</div>
18
-                </div>';
11
+        if (count($ret) > 0) {
12
+            $name = strtolower($name);
13
+            foreach ($ret as $item) {
14
+                $cust = $item['customer'];
15
+                if ($name == strtolower($cust['lastname']) ||
16
+                    $name == strtolower($cust['firstname']) ||
17
+                    $name == strtolower($cust['firstname'] .' '. $cust['lastname'])
18
+                    ) {
19
+                    return $cust;
20
+                }
21
+            }
19 22
         }
20 23
         return null;
24
+
25
+        /*
26
+        $kundenliste = json_decode(file_get_contents('../kunden.json'), TRUE);
27
+        foreach ($kundenliste as $k) {
28
+                foreach ($k['kontakt'] as $kon) {
29
+                        if ($kon['wert'] == $number) {
30
+                                return $k;
21 31
                         }
22
-         return $ret;
32
+                }
33
+        }
34
+        */
23 35
 }
24 36
 
37
+function erstelle_kunde($daten) {
38
+    $json = [
39
+        "firstname" => $daten['fname'],
40
+        "lastname" => $daten['lname'],
41
+        "phone" => format_number_api($daten['phone']),
42
+        "street" => $daten['address'],
43
+        "zip" => $daten['zip'],
44
+        "city" => $daten['city'],
45
+        "contacts" => []];
46
+    $ret = api_call('POST', 'customers', $json);
47
+    if (isset($ret['id'])) {
48
+        return $ret['id'];
49
+    } else {
50
+        return null;
51
+    }
52
+}
25 53
 
26 54
 require_once('vendor/autoload.php');
27 55
 
... ...
@@ -0,0 +1,34 @@
1
+<?php
2
+session_start();
3
+// Quitte ist erst ab 10.10. erlaubt
4
+if (date('m-d') < '10-10') {
5
+    $_SESSION['obstart'] = 'Apfel';
6
+    header("Location: gebrauchte.php");
7
+    die();
8
+}
9
+
10
+require_once('lib/api.php');
11
+$ret = api_call('GET', 'fruitTypes');
12
+print_r($ret);
13
+$headline = 'Obstart';
14
+$content = '';
15
+
16
+$content .= '
17
+    <form class="form" action="save.php" method="post">
18
+    <input type="hidden" name="form" value="obstart">
19
+    <p>Um welche Fruchtart handelt es sich bei Ihrem Obst (überwiegend)?</p>';
20
+
21
+foreach ($ret as $fruit) {
22
+    $content .= '
23
+    <div class="form-group form-group-lg">
24
+        <input type="submit" class="btn btn-block btn-lg btn-primary" id="btn-ja" name="obstart" value="'.$fruit['label'].'">
25
+    </div>
26
+
27
+';
28
+}
29
+$content .= '
30
+    </form>
31
+    ';
32
+
33
+
34
+include("template.php");
... ...
@@ -61,6 +61,10 @@ if (isset($_REQUEST['form'])) {
61 61
                 $redirect = 'address.php?error';
62 62
                 break;
63 63
             }
64
+            if (!isset($_SESSION['kundennr']) || !$_SESSION['kundennr']) {
65
+                $_SESSION['kundennr'] = erstelle_kunde($_SESSION);
66
+            }
67
+
64 68
             if ($_SESSION['mode'] == 'local') {
65 69
                 $_SESSION['angeliefert'] = true;
66 70
                 $redirect = 'gitterbox.php';
... ...
@@ -100,9 +104,13 @@ if (isset($_REQUEST['form'])) {
100 104
                     }
101 105
                 }
102 106
             }
103
-            $redirect = 'gebrauchte.php';
107
+            $redirect = 'obstart.php';
104 108
             break;
105 109
 
110
+         case 'obstart':
111
+            $_SESSION['obstart'] = $_REQUEST['obstart'];
112
+            $redirect = 'gebrauchte.php';
113
+
106 114
          case 'gebrauchte':
107 115
             if (isset($_REQUEST['kartonsja'])) {
108 116
                 $_SESSION['kartons'] = true;
... ...
@@ -114,6 +122,9 @@ if (isset($_REQUEST['form'])) {
114 122
             $redirect = 'auftrag.php';
115 123
             break;
116 124
          case 'auftrag':
125
+            if (isset($_REQUEST['3er'])) {
126
+                $_SESSION['neue'] = '3er';
127
+            }
117 128
             if (isset($_REQUEST['5er'])) {
118 129
                 $_SESSION['neue'] = '5er';
119 130
             }
... ...
@@ -144,96 +155,105 @@ if (isset($_REQUEST['form'])) {
144 155
             }
145 156
 
146 157
             $_SESSION['complete'] = true;
147
-            $redirect = 'finish.php?handle='.$_SESSION['handle'];
158
+            $redirect = 'finish.php';
148 159
             break;
149 160
 
150 161
     }
151 162
 }
152 163
 
153
-$data = array("handle" => $_SESSION['handle']);
154
-
155
-$ret = api_call('auftrag/lesen', $data);
156
-
157
-if (!isset($ret['auftrag'])) {
158
-    echo 'Es gibt ein Problem beim Speichern der Auftragsdaten. Bitte wenden Sie sich persönlich an uns oder verwenden Sie einen Papierauftrag.';
159
-    die();
160
-}
161
-
162
-
163
-$auftrag = $ret['auftrag'];
164
-
164
+/*
165
+ * Um das Speichern in der API kümmern wir uns, wenn Kundendaten, Obstart und grundsätzliche Auftragsdaten feststehen
166
+ */
167
+if (isset($_SESSION['neue'])) {
168
+    // Bevor dieses Datenfeld vorhanden ist, macht Speichern keinen Sinn
169
+    $auftrag = [];
170
+    /* Herunterladen bringt nichts, da wir einfach immer unsere bekannten Daten rein schieben. Parallelität ist nicht gewünscht
171
+     * if (isset($auftrag['id'])) {
172
+        // Auftrag ist schon in der API, aktuellen Stand herunter laden
173
+        $auftrag = api_call('GET', 'orders/'.$auftrag['id']);
174
+    }*/
165 175
 
176
+    // customer
166 177
     if (isset($_SESSION['kundennr'])) {
167
-    $auftrag['kundennr'] = $_SESSION['kundennr'];
178
+        $auftrag['customer'] = $_SESSION['kundennr'];
179
+        $auftrag['notification_name'] = $_SESSION['name'];
168 180
     }
169
-$addrfields = array("kundennr" => "kundennr", "firma" => "firma", "fname" => "vorname", "lname" => "nachname", "address" => "adresse", "zip" => "plz", "city" => "ort", "phone" => "telefon");
170
-foreach ($addrfields as $sesskey => $apikey) {
171
-    if (isset($_SESSION[$sesskey]) && $_SESSION[$sesskey] != 'bekannt') {
172
-        $auftrag['kundendaten'][$apikey] = $_SESSION[$sesskey];
181
+    // fruitType
182
+    $ret = api_call('GET', 'fruitTypes');
183
+    foreach ($ret as $fruit) {
184
+        if ($_SESSION['obstart'] == $fruit['label']) {
185
+            $auftrag['fruitType'] = $fruit['id'];
173 186
         }
174 187
     }
175
-$auftrag['kundendaten']['telefon'] = format_number($auftrag['kundendaten']['telefon']);
176
-
177
-if (count($auftrag['bestellung']) > 1) {
178
-    echo 'Diese Bestellung wurde auf anderem Wege an uns übermittelt und kann mit dieser Oberfläche leider nicht verändert werden';
179
-    die();
180
-}
181
-
188
+    // containers
182 189
     if (isset($_SESSION['lieferart']) && $_SESSION['lieferart'] == 'gitterbox' && isset($_SESSION['gbcount']) && $_SESSION['gbcount'] > 0) {
183
-    if ($_SESSION['gbcount'] < count($auftrag['bestellung'][0]["gitterbox"])) {
184
-        $auftrag['bestellung'][0]["gitterbox"] = array();
185
-    }
186
-    while (count($auftrag['bestellung'][0]["gitterbox"]) < $_SESSION['gbcount']) {
187
-        $auftrag['bestellung'][0]["gitterbox"][] = array("id" => null);
190
+        $auftrag['containers'] = array_fill(0, $_SESSION['gbcount'], [ "type" => "box", "weight" => 400 ]);
188 191
     }
189
-} else {
190
-    $auftrag['bestellung'][0]["gitterbox"] = array();
191
-}
192
-
193 192
     if (isset($_SESSION['lieferart']) && $_SESSION['lieferart'] == 'anhaenger') {
194
-    $auftrag['bestellung'][0]['anhaenger'] = array(array("kennz" => null));
195
-    if (isset($_SESSION['kennz']) && $_SESSION['kennz'] != '') {
196
-        $auftrag['bestellung'][0]['anhaenger'][0]["kennz"] = $_SESSION['kennz'];
193
+        if (!isset($_SESSION['kennz'])) {
194
+            $_SESSION['kennz'] = null;
197 195
         }
196
+        $auftrag['containers'] = [
197
+            ["type" => "trailer",
198
+            "weight" => 0,
199
+            "label" => $_SESSION['kennz']]
200
+        ];
198 201
     }
199
-
200
-if (isset($_SESSION['kartons']) && $_SESSION['kartons']) {
201
-    $auftrag['bestellung'][0]['gebrauchte'] = true;
202
-} else {
203
-    $auftrag['bestellung'][0]['gebrauchte'] = false;
202
+    // usedPackages
203
+    if (isset($_SESSION['kartons'])) {
204
+        $auftrag['usedPackages'] = (bool) $_SESSION['kartons'];
204 205
     }
205 206
 
206
-$auftrag['bestellung'][0]['neue'] = array();
207
-if (isset($_SESSION['neue']) && $_SESSION['neue'] == 'sonstiges') {
208
-    $auftrag['bestellung'][0]['neue']["sonstiges"] = $_SESSION["sonstiges"];
209
-} elseif (isset($_SESSION['neue']) && $_SESSION['neue'] == '10er') {
210
-    $auftrag['bestellung'][0]['neue']["10er"] = "100%";
207
+    // plannedPackagings
208
+    if (isset($_SESSION['neue'])) {
209
+        if ($_SESSION['neue'] == 'sonstiges') {
210
+            $auftrag['notes'] = (isset($_SESSION['anmerkungen']) ? $_SESSION['anmerkungen'] . "\n\n" : '') . $_SESSION["sonstiges"];
211 211
         } else {
212
-    $auftrag['bestellung'][0]['neue']["5er"] = "100%";
212
+            $plan = [];
213
+            $ret = api_call('GET', 'packageTypes');
214
+            foreach ($ret as $pt) {
215
+                if ($pt['label'] == $_SESSION['neue']) {
216
+                    $plan[] = [ "packageType" => $pt['id'],
217
+                                "rest" => true ];
218
+                }
219
+                if ($pt['label'] == 'frischsaft' && isset($_SESSION['frischsaft']) && $_SESSION['frischsaft'] > 0) {
220
+                    $plan[] = [ "packageType" => $pt['id'],
221
+                                "count" => $_SESSION['frischsaft']];
222
+                }
223
+            }
224
+            $auftrag['plannedPackagings'] = $plan;
213 225
         }
214
-
215
-if (isset($_SESSION['frischsaft']) && $_SESSION['frischsaft'] > 0) {
216
-    $auftrag['bestellung'][0]['frischsaft'] = $_SESSION['frischsaft'];
217
-} else {
218
-    $auftrag['bestellung'][0]['frischsaft'] = null;
219 226
     }
220 227
 
221 228
 
229
+    // notes
222 230
     if (isset($_SESSION['anmerkungen']) && $_SESSION['anmerkungen'] != '') {
223
-    $auftrag['bestellung'][0]['anmerkungen'] = $_SESSION['anmerkungen'];
231
+        $auftrag['notes'] = $_SESSION['anmerkungen'];
232
+        $auftrag['notes'] = $_SESSION['anmerkungen'] . (isset($_SESSION["sonstiges"]) ? "\n\n" . $_SESSION["sonstiges"] : '');
224 233
     }
225 234
 
226
-if (isset($_SESSION['complete']) && $_SESSION['complete'] == true && !$auftrag['status']['bestellt']) {
227
-    $auftrag['status']['bestellt'] = time();
235
+    if (isset($_SESSION['orderid']) && $_SESSION['orderid']) {
236
+        // update
237
+        $ret = api_call('PUT', 'orders/'.$_SESSION['orderid'], $auftrag);
238
+    } else {
239
+        // neu
240
+        $ret = api_call('POST', 'orders', $auftrag);
241
+        if (!isset($ret['id'])) {
242
+            echo "Es gabe einen Fehler beim Abspeichern des Auftrags. Wir bitten dies zu entschuldigen und einen Papierauftrag auszufüllen.";
243
+            file_put_contents("../error.log", 
244
+                date("Y-m-d H:i:s") . ': '.json_encode($auftrag).
245
+                print_r($ret, true).'\n', FILE_APPEND | LOCK_EX);
246
+            die();
247
+        }
248
+        $_SESSION['orderid'] = $ret['id'];
228 249
     }
229 250
 
230
-$ret = api_call('auftrag/anlieferung', $auftrag);
231
-
251
+    /*
232 252
     if ($ret['status'] == 'error') {
233 253
         echo 'Es gibt ein Problem beim Speichern des Auftrags. Bitte verwenden Sie diesmal einen Papier-Auftrag.';
234 254
         die();
235 255
     }
236
-
237
-
256
+    */
257
+}
238 258
 
239 259
 header('Location: '.$redirect);
... ...
@@ -60,7 +60,13 @@ if ($_SESSION['lieferart'] == 'anhaenger') {
60 60
 }
61 61
 
62 62
 $abfuellung = '';
63
-if ($_SESSION['neue'] == '5er') {
63
+if ($_SESSION['neue'] == '3er') {
64
+    if ($_SESSION['kartons']) {
65
+        $abfuellung = 'Wir füllen zunächst Ihre gebrauchten Kartons (wenn vorhanden zuerst 3er, dann 5er, dann 10er) und falls noch Saft übrig ist, füllen wir diesen in <strong>3-Liter-Kartons</strong>.';
66
+    } else {
67
+        $abfuellung = 'Wir füllen Ihren Saft in <strong>3-Liter-Kartons</strong>.';
68
+    }
69
+} elseif ($_SESSION['neue'] == '5er') {
64 70
     if ($_SESSION['kartons']) {
65 71
         $abfuellung = 'Wir füllen zunächst Ihre gebrauchten Kartons (wenn vorhanden zuerst 5er, dann 10er) und falls noch Saft übrig ist, füllen wir diesen in <strong>5-Liter-Kartons</strong>.';
66 72
     } else {
... ...
@@ -1,12 +1,14 @@
1 1
 <?php
2
+//print_r($_SESSION);
2 3
 $pages = array(
3 4
     1 => 'index.php',
4 5
     2 => 'address.php',
5 6
     3 => 'gitterbox.php',
6
-    4 => 'gebrauchte.php',
7
-    5 => 'auftrag.php',
8
-    6 => 'frischsaft.php',
9
-    7 => 'summary.php');
7
+    4 => 'obstart.php',
8
+    5 => 'gebrauchte.php',
9
+    6 => 'auftrag.php',
10
+    7 => 'frischsaft.php',
11
+    8 => 'summary.php');
10 12
 
11 13
 $previous = array_search(basename($_SERVER['PHP_SELF']), $pages) - 1;
12 14
 if ($previous > 0) {
13 15