Bernd Wurst commited on 2023-09-22 09:56:08
Zeige 4 geänderte Dateien mit 75 Einfügungen und 2 Löschungen.
| ... | ... |
@@ -33,13 +33,20 @@ if (isset($_REQUEST['error'])) {
|
| 33 | 33 |
|
| 34 | 34 |
|
| 35 | 35 |
$headline = 'Adresse eingeben'; |
| 36 |
-if (isset($_SESSION['kundennr']) and $_SESSION['kundennr']) {
|
|
| 36 |
+if (isset($_SESSION['kundennr']) && $_SESSION['kundennr']) {
|
|
| 37 | 37 |
$headline = 'Willkommen zurück!'; |
| 38 | 38 |
$content .= ' |
| 39 | 39 |
<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>'; |
| 40 | 40 |
$content .= ' |
| 41 | 41 |
<form class="form" action="save.php" method="post"> |
| 42 | 42 |
<input type="hidden" name="form" value="address">'; |
| 43 |
+ if (!kunde_hat_email($_SESSION['kundennr'])) {
|
|
| 44 |
+ $content .= '<p><strong>Eine kleine Bitte:</strong> Wir kennen bisher noch keine E-Mail-Adresse von Ihnen. Wenn Sie uns eine E-Mail-Adresse angeben, können wir Sie auch per E-Mail über die Fertigstellung Ihres Auftrags benachrichtigen.</p> |
|
| 45 |
+ <div class="form-group form-group-lg row"> |
|
| 46 |
+ <div class="col-sm-12"><input class="form-control" id="email" name="email" type="text" placeholder="E-Mail-Adresse" autocomplete="email"></div> |
|
| 47 |
+ </div>'; |
|
| 48 |
+ } |
|
| 49 |
+ |
|
| 43 | 50 |
$content .= '<input name="fname" type="hidden" value="'.(isset($_SESSION['fname']) ? $_SESSION['fname'] : '').'"> |
| 44 | 51 |
<input name="lname" type="hidden" value="'.$_SESSION['lname'].'"> |
| 45 | 52 |
<div class="form-group form-group-lg"> |
| ... | ... |
@@ -59,6 +66,7 @@ if (isset($_SESSION['kundennr']) and $_SESSION['kundennr']) {
|
| 59 | 66 |
$fields = array("vorname" => "Vorname",
|
| 60 | 67 |
"nachname" => "Nachname", |
| 61 | 68 |
"firma" => "Firmenname", |
| 69 |
+ "email" => "E-Mail", |
|
| 62 | 70 |
"adresse" => "Adresse", |
| 63 | 71 |
"plz" => "PLZ", |
| 64 | 72 |
"ort" => "Ort"); |
| ... | ... |
@@ -94,6 +102,9 @@ if (isset($_SESSION['kundennr']) and $_SESSION['kundennr']) {
|
| 94 | 102 |
<div class="form-group form-group-lg row"> |
| 95 | 103 |
<div class="col-sm-4"><input class="form-control" id="zip" name="zip" type="text" placeholder="'.$placeholders['plz'].'" autocomplete="postal-code" value="'.$contents['plz'].'"></div> |
| 96 | 104 |
<div class="col-sm-8"><input class="form-control" id="city" name="city" type="text" placeholder="'.$placeholders['ort'].'" autocomplete="locality" value="'.$contents['ort'].'"></div> |
| 105 |
+ </div> |
|
| 106 |
+ <div class="form-group form-group-lg row"> |
|
| 107 |
+ <div class="col-sm-12"><input class="form-control" id="email" name="email" type="text" placeholder="'.$placeholders['email'].'" autocomplete="email" value="'.$contents['email'].'"></div> |
|
| 97 | 108 |
</div> |
| 98 | 109 |
<div class="form-group form-group-lg"> |
| 99 | 110 |
<div><input class="btn btn-primary btn-lg" type="submit" value="Weiter >"></div> |
| ... | ... |
@@ -96,6 +96,10 @@ function api_call($method, $url, $content = []) |
| 96 | 96 |
$request = new Request(strtoupper($method), $url, $headers, $body); |
| 97 | 97 |
$res = $client->send($request, ['timeout' => 5]); |
| 98 | 98 |
|
| 99 |
+ //$filename = '../data/'.date('Y').'/debug-'.microtime(true).'.json';
|
|
| 100 |
+ //@file_put_contents($filename, strtoupper($method).' '.$url."\n".$body."\n".$res->getBody()); |
|
| 101 |
+ |
|
| 102 |
+ |
|
| 99 | 103 |
if ($res->getStatusCode() >= 500) {
|
| 100 | 104 |
print('Es gibt gerade ein technisches Problem.');
|
| 101 | 105 |
die(); |
| ... | ... |
@@ -41,11 +41,65 @@ function suche_kunde($name, $number) {
|
| 41 | 41 |
*/ |
| 42 | 42 |
} |
| 43 | 43 |
|
| 44 |
+function kunde_hat_email($customerno) {
|
|
| 45 |
+ $ret = api_call('GET', 'customers/'.(int) $customerno);
|
|
| 46 |
+ if ($ret['status_code'] >= 400) {
|
|
| 47 |
+ // Fehler. Belästige den Kunden nicht damit |
|
| 48 |
+ return true; |
|
| 49 |
+ } |
|
| 50 |
+ $ret = $ret['data']; |
|
| 51 |
+ if (isset($ret['email']) && $ret['email']) {
|
|
| 52 |
+ return true; |
|
| 53 |
+ } |
|
| 54 |
+ foreach ($ret['contacts'] as $c) {
|
|
| 55 |
+ if (isset($c['email']) && $c['email']) {
|
|
| 56 |
+ return true; |
|
| 57 |
+ } |
|
| 58 |
+ } |
|
| 59 |
+ return false; |
|
| 60 |
+} |
|
| 61 |
+ |
|
| 62 |
+ |
|
| 63 |
+ |
|
| 64 |
+function update_kunde($customerno, $daten) {
|
|
| 65 |
+ $ret = api_call('GET', 'customers/'.(int) $customerno);
|
|
| 66 |
+ if ($ret['status_code'] >= 400) {
|
|
| 67 |
+ // Fehler. Erstelle Neukunde |
|
| 68 |
+ erstelle_kunde($daten); |
|
| 69 |
+ return; |
|
| 70 |
+ } |
|
| 71 |
+ $customer = $ret['data']; |
|
| 72 |
+ |
|
| 73 |
+ foreach ($daten as $field => $value) {
|
|
| 74 |
+ if ($value) {
|
|
| 75 |
+ $customer[$field] = $value; |
|
| 76 |
+ } |
|
| 77 |
+ } |
|
| 78 |
+ |
|
| 79 |
+ $filename = '../data/'.date('Y').'/kunde-'.$customerno.'-'.time().'.json';
|
|
| 80 |
+ @file_put_contents($filename, json_encode($customer)); |
|
| 81 |
+ $ret = api_call('PUT', 'customers/'.(int) $customerno, $customer);
|
|
| 82 |
+ if ($ret['status_code'] >= 400) {
|
|
| 83 |
+ foreach ($ret['data']['validation_errors'] as $item) {
|
|
| 84 |
+ $_SESSION['warnings'][] = $item['key'].': '.$item['message']; |
|
| 85 |
+ } |
|
| 86 |
+ return null; |
|
| 87 |
+ } |
|
| 88 |
+ $ret = $ret['data']; |
|
| 89 |
+ if (isset($ret['id'])) {
|
|
| 90 |
+ return $ret['id']; |
|
| 91 |
+ } else {
|
|
| 92 |
+ return null; |
|
| 93 |
+ } |
|
| 94 |
+} |
|
| 95 |
+ |
|
| 96 |
+ |
|
| 44 | 97 |
function erstelle_kunde($daten) {
|
| 45 | 98 |
$json = [ |
| 46 | 99 |
"firstname" => $daten['fname'] ?: null, |
| 47 | 100 |
"lastname" => $daten['lname'], |
| 48 | 101 |
"phone" => format_number_api($daten['phone']), |
| 102 |
+ "email" => $daten['email'] ?: null, |
|
| 49 | 103 |
"street" => $daten['address'] ?: null, |
| 50 | 104 |
"zip" => $daten['zip'] ?: null, |
| 51 | 105 |
"city" => $daten['city'] ?: null, |
| ... | ... |
@@ -85,7 +85,7 @@ if (isset($_REQUEST['form'])) {
|
| 85 | 85 |
break; |
| 86 | 86 |
|
| 87 | 87 |
case 'address': |
| 88 |
- $fields = array("firma", "fname", "lname", "address", "zip", "city");
|
|
| 88 |
+ $fields = array("firma", "fname", "lname", "address", "zip", "city", "email");
|
|
| 89 | 89 |
foreach ($fields as $f) {
|
| 90 | 90 |
if (isset($_REQUEST[$f]) && trim($_REQUEST[$f]) != '') {
|
| 91 | 91 |
$_SESSION[$f] = trim(htmlspecialchars($_REQUEST[$f])); |
| ... | ... |
@@ -104,6 +104,10 @@ if (isset($_REQUEST['form'])) {
|
| 104 | 104 |
if (!$_SESSION['kundennr']) {
|
| 105 | 105 |
showError(); |
| 106 | 106 |
} |
| 107 |
+ } else {
|
|
| 108 |
+ if (isset($_SESSION['email']) && $_SESSION['email']) {
|
|
| 109 |
+ update_kunde($_SESSION['kundennr'], ['email' => $_SESSION['email']]); |
|
| 110 |
+ } |
|
| 107 | 111 |
} |
| 108 | 112 |
|
| 109 | 113 |
if ($_SESSION['mode'] == 'local') {
|
| 110 | 114 |