schema update, guest list form updates, javascript fix removing required

This commit is contained in:
Chris Smith
2019-03-05 12:55:49 -06:00
parent 69ad29c539
commit 43263d97b6
6 changed files with 67 additions and 26 deletions

View File

@@ -22,6 +22,10 @@ h4 {
padding-top: 25px;
}
.pad-15-left {
padding-left: 15px;
}
/*form validation*/
.container {
max-width: 960px;

View File

@@ -75,7 +75,7 @@ CREATE TABLE `orders` (
`state` varchar(45) NOT NULL,
`zip` varchar(45) NOT NULL,
`payment_type` int(11) NOT NULL DEFAULT '0',
`stripe_token` varchar(64) NOT NULL,
`stripe_token` varchar(64) NULL,
`date_created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`uuid` varchar(64) NOT NULL,
PRIMARY KEY (`id`),

View File

@@ -130,5 +130,32 @@ $router->get('/manage/{uuid}', function ($uuid) {
include 'views/common/footer.php';
});
$router->post('/manage/{uuid}', function ($uuid) {
if ($uuid !== $_POST['uuid']) {
throw new Exception('Invalid form submission', 400);
}
$order = R::findOne('orders', ' uuid = ?', [$uuid]);
$parametersToSearch = $_POST['guestsArray'];
array_push($parametersToSearch, $order->id);
$guests = R::findAll('guests', ' id IN(' . R::genSlots($_POST['guestsArray']) . ') AND order_id = ?', $parametersToSearch);
foreach ($guests as $id => $guest) {
if (!empty($_POST['guests'][$id]['name']) &&
!empty($_POST['guests'][$id]['email']) &&
!empty($_POST['guests'][$id]['phone'])) {
$guest->name = $_POST['guests'][$id]['name'];
$guest->email = $_POST['guests'][$id]['email'];
$guest->phone = $_POST['guests'][$id]['phone'];
$guest->childcare = $_POST['guests'][$id]['childcare'];
$guest->valet = $_POST['guests'][$id]['valet'];
$guest->restrictions = $_POST['guests'][$id]['restrictions'];
R::store($guest);
}
}
header('Location: /manage/'.$uuid);
});
// Run it!
$router->run();

View File

@@ -5,10 +5,18 @@ addEventHandler(document, 'DOMContentLoaded', function () {
addEventHandler(document.getElementById('credit'), 'click', function() {
document.getElementById('checkDetails').style.display = 'none';
document.getElementById('creditDetails').style.display = '';
document.getElementById('cc-number').required = true;
document.getElementById('cc-name').required = true;
document.getElementById('cc-expiration').required = true;
document.getElementById('cc-cvv').required = true;
});
addEventHandler(document.getElementById('check'), 'click', function() {
document.getElementById('checkDetails').style.display = '';
document.getElementById('creditDetails').style.display = 'none';
document.getElementById('cc-number').required = false;
document.getElementById('cc-name').required = false;
document.getElementById('cc-expiration').required = false;
document.getElementById('cc-cvv').required = false;
});
});

View File

@@ -2,44 +2,46 @@
<div class="row">
<div class="col-md-12 order-md-1">
<h3 class="mb-3">Your ticket information</h3>
<form class="needs-validation" novalidate method="POST">
<input type="hidden" name="uuid" value="<?=$order->uuid?>">
<?php
$i = 0;
foreach ($guests as $guest) {
$i++;
?>
<input type="hidden" name="guests[<?=$i?>][id]" value="<?=$guest->id;?>" >
<input type="hidden" name="guestsArray[]" value="<?=$guest->id;?>" >
<h5 class="mb-3">Guest #<?=$i?> <small><?=(is_null($guest->table)) ? '' : 'Table #' . $guest->table; ?><?=(is_null($guest->paddle)) ? '' : ', Paddle #' . $guest->paddle; ?></small></h5>
<form class="needs-validation" novalidate method="POST">
<div class="row">
<div class="col-md-2 mb-3">
<label for="firstName">Full name</label>
<input type="text" class="form-control" id="firstName" value="<?=$guest->name?>">
<label for="name">Full name</label>
<input name="guests[<?=$i?>][name]" type="text" class="form-control" id="name" value="<?=$guest->name?>">
</div>
<div class="col-md-2 mb-3">
<label for="lastName">Email</label>
<input type="text" class="form-control" id="email" value="<?=$guest->email?>">
<input name="guests[<?=$i?>][email]" type="text" class="form-control" id="email" value="<?=$guest->email?>">
</div>
<div class="col-md-2 mb-3">
<label for="lastName">Phone</label>
<input type="text" class="form-control" id="phone" value="<?=$guest->phone?>">
<input name="guests[<?=$i?>][phone]" type="text" class="form-control" id="phone" value="<?=$guest->phone?>">
</div>
<div class="col-md-2 mb-3">
<label for="lastName">Childcare?</label>
<select class="form-control" name="childcare">
<label for="childcare">Childcare?</label>
<select class="form-control" name="guests[<?=$i?>][childcare]">
<option value="0" <?php if (false == $guest->childcare) { echo 'selected'; } ?>>No</option>
<option value="1" <?php if (true == $guest->childcare) { echo 'selected'; } ?>>Yes</option>
</select>
</div>
<div class="col-md-2 mb-3">
<label for="lastName">Valet?</label>
<select class="form-control" name="valet">
<label for="valet">Valet?</label>
<select class="form-control" name="guests[<?=$i?>][valet]">
<option value="0" <?php if (false == $guest->valet) { echo 'selected'; } ?>>No</option>
<option value="1" <?php if (true == $guest->valet) { echo 'selected'; } ?>>Yes</option>
</select>
</div>
<div class="col-md-2 mb-3">
<label for="lastName">Restrictions?</label>
<select class="form-control" name="restrictions">
<label for="restrictions">Restrictions?</label>
<select class="form-control" name="guests[<?=$i?>][restrictions]">
<option value="0" <?php if (0 == $guest->restrictions) { echo 'selected'; } ?>>None</option>
<option value="1" <?php if (1 == $guest->restrictions) { echo 'selected'; } ?>>Vegetarian</option>
<option value="2" <?php if (2 == $guest->restrictions) { echo 'selected'; } ?>>Vegan</option>

View File

@@ -181,20 +181,20 @@
Credit card number is required
</div>
</div>
</div>
<div class="row">
<div class="col-md-3 mb-3">
<label for="cc-expiration">Expiration</label>
<input type="text" class="form-control" id="cc-expiration" placeholder="" required>
<div class="invalid-feedback">
Expiration date required
<div class="row">
<div class="col-md-3 mb-3">
<label for="cc-expiration">Expiration</label>
<input type="text" class="form-control" id="cc-expiration" placeholder="" required>
<div class="invalid-feedback">
Expiration date required
</div>
</div>
</div>
<div class="col-md-3 mb-3">
<label for="cc-expiration">CVV</label>
<input type="text" class="form-control" id="cc-cvv" placeholder="" required>
<div class="invalid-feedback">
Security code required
<div class="col-md-3 mb-3">
<label for="cc-expiration">CVV</label>
<input type="text" class="form-control" id="cc-cvv" placeholder="" required>
<div class="invalid-feedback">
Security code required
</div>
</div>
</div>
</div>