|
|
@@ -0,0 +1,189 @@ |
|
|
|
<?php |
|
|
|
|
|
|
|
use Psr\Http\Message\ResponseInterface as Response; |
|
|
|
use Psr\Http\Message\ServerRequestInterface as Request; |
|
|
|
use Slim\Factory\AppFactory; |
|
|
|
|
|
|
|
require __DIR__ . '/../vendor/autoload.php'; |
|
|
|
|
|
|
|
class myDB extends \SQLite3 |
|
|
|
{ |
|
|
|
public function __construct() |
|
|
|
{ |
|
|
|
$this->open('./webshop.db'); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
$app = AppFactory::create(); |
|
|
|
|
|
|
|
$app->map(['GET', 'POST'], "/orders/{client}/create", function (Request $request, Response $response, array $args) { |
|
|
|
if ($request->getMethod() == "GET") { |
|
|
|
$db2 = new myDB(); |
|
|
|
$stmt2 = $db2->prepare("SELECT * FROM clients WHERE id = " . $args['client']); |
|
|
|
$res2 = $stmt2->execute(); |
|
|
|
$a = $res2->fetchArray(SQLITE3_ASSOC); |
|
|
|
|
|
|
|
$response->getBody()->write("<h1>Create order for" . $a['firstname'] . " " . $a['lastname'] . "</h1><hr/>"); |
|
|
|
$response->getBody()->write('<form action="/orders/' . $args['client'] . '/create" method="post">'); |
|
|
|
$response->getBody()->write('<label for="id">Reference: </label>'); |
|
|
|
$response->getBody()->write('<input type="text" name="reference">'); |
|
|
|
$response->getBody()->write('<input type="submit">'); |
|
|
|
$response->getBody()->write('</form>'); |
|
|
|
|
|
|
|
return $response; |
|
|
|
} else { |
|
|
|
$ref = $request->getParsedBody()['reference']; |
|
|
|
$db2 = new myDB(); |
|
|
|
$sql = "insert into orders (reference, customer_id, vat, subtotal, total) values ('" . $ref . "', " . $args['client'] . ",0,0,0)"; |
|
|
|
$db2->exec($sql); |
|
|
|
return $response->withHeader('Location', '/orders/' . $args['client']); |
|
|
|
}; |
|
|
|
}); |
|
|
|
|
|
|
|
// Route with optional params, see https://www.slimframework.com/docs/v4/objects/routing.html#how-to-create-routes section Optional segments |
|
|
|
$app->get('/orders[/{client}]', function (Request $request, Response $response, array $args) { |
|
|
|
$db = new myDB(); |
|
|
|
|
|
|
|
if ($args['client']) { |
|
|
|
// orders 1 client |
|
|
|
$sql = "SELECT o.* FROM orders o LEFT JOIN clients c on o.customer_id = c.id where c.id = " . $args['client']; |
|
|
|
$stmt = $db->prepare($sql); |
|
|
|
$res = $stmt->execute(); |
|
|
|
|
|
|
|
// naam van de klant |
|
|
|
$db2 = new myDB(); |
|
|
|
$stmt2 = $db2->prepare("SELECT * FROM clients WHERE id = " . $args['client']); |
|
|
|
$res2 = $stmt2->execute(); |
|
|
|
$a = $res2->fetchArray(SQLITE3_ASSOC); |
|
|
|
$response->getBody()->write('<a href="/orders/' . $args['client'] . '/create">Create order</a>'); |
|
|
|
$response->getBody()->write("<h1>ORDERS LIST FOR CLIENT " . $a['firstname'] . " " . $a['lastname'] . "</h1>"); |
|
|
|
$response->getBody()->write('<hr/>'); |
|
|
|
$response->getBody()->write("<table>"); |
|
|
|
} else { |
|
|
|
// alle klanten |
|
|
|
$response->getBody()->write("<h1>ORDERS LIST FOR ALL CLIENTS </h1>"); |
|
|
|
$response->getBody()->write('<hr/>'); |
|
|
|
$response->getBody()->write("<table>"); |
|
|
|
$sql = "SELECT o.* FROM orders o LEFT JOIN clients c on o.customer_id = c.id"; |
|
|
|
$stmt = $db->prepare($sql); |
|
|
|
$res = $stmt->execute(); |
|
|
|
} |
|
|
|
|
|
|
|
// toon de orders van 1 of alle klanten |
|
|
|
while ($row = $res->fetchArray(SQLITE3_ASSOC)) { |
|
|
|
// maak hier een deftige tabel van |
|
|
|
$response->getBody()->write("<tr><td>" . " <a href=\"/order/" . $row['id'] . "\">" . $row["reference"] . "</a> " . $row['subtotal'] . " " . $row['vat'] . " " . $row['total'] . "</td></tr>"); |
|
|
|
} |
|
|
|
|
|
|
|
$response->getBody()->write("</table>"); |
|
|
|
$response->getBody()->write('<hr/>'); |
|
|
|
|
|
|
|
$response->getBody()->write('<a href="/customers">Back to customer list</a> <a href="/orders">Back to order list</a>'); |
|
|
|
|
|
|
|
return $response; |
|
|
|
}); |
|
|
|
|
|
|
|
$app->map(['GET', 'POST'], "/order/{id}/create", function (Request $request, Response $response, array $args) { |
|
|
|
|
|
|
|
if ($request->getMethod() == "GET") { |
|
|
|
$db2 = new myDB(); |
|
|
|
$stmt2 = $db2->prepare("SELECT * FROM orders WHERE id = " . $args['id']); |
|
|
|
$res2 = $stmt2->execute(); |
|
|
|
$a = $res2->fetchArray(SQLITE3_ASSOC); |
|
|
|
|
|
|
|
$response->getBody()->write("<h1>Create orderline for" . $a['reference'] . "</h1><hr/>"); |
|
|
|
$response->getBody()->write('<form action="/order/' . $args['id'] . '/create" method="post">'); |
|
|
|
$response->getBody()->write('<label for="id">product: </label>'); |
|
|
|
$response->getBody()->write('<input type="text" name="id">'); |
|
|
|
$response->getBody()->write('<label for="qty">qty: </label>'); |
|
|
|
$response->getBody()->write('<input type="text" name="qty">'); |
|
|
|
$response->getBody()->write('<input type="submit">'); |
|
|
|
$response->getBody()->write('</form>'); |
|
|
|
$response->getBody()->write('<hr/>'); |
|
|
|
$response->getBody()->write('<a href="/customers">Back to customer list</a> <a href="/orders">Back to order list</a>'); |
|
|
|
return $response; |
|
|
|
} else { |
|
|
|
$productid = $request->getParsedBody()['id']; |
|
|
|
$qty = $request->getParsedBody()['qty']; |
|
|
|
$db2 = new myDB(); |
|
|
|
|
|
|
|
// vraag details van het product op |
|
|
|
$sqlproduct = "select * from products where id = " . $productid; |
|
|
|
$stmtproduct = $db2->prepare($sqlproduct); |
|
|
|
$resproduct = $stmtproduct->execute(); |
|
|
|
$product = $resproduct->fetchArray(SQLITE3_ASSOC); |
|
|
|
$order_id = $args['id']; |
|
|
|
$unitprice = $product['unitprice']; |
|
|
|
$vatperc = $product['vatperc']; |
|
|
|
|
|
|
|
// bereken de prijs van de lijn |
|
|
|
$subtotal = $qty * $unitprice; |
|
|
|
$vat = $subtotal * $vatperc / 100; |
|
|
|
$total = $subtotal + $vat; |
|
|
|
|
|
|
|
// voeg orderlijn toe |
|
|
|
$sql = "insert into order_lines (order_id, product_id, qty, subtotal, vat, total) values ($order_id, $productid, $qty, $subtotal, $vat, $total)"; |
|
|
|
$db2->exec($sql); |
|
|
|
|
|
|
|
// update het order met nieuwe totalen |
|
|
|
$sql = "update orders set total = total + $total, subtotal = subtotal + $subtotal, vat = vat + $vat where id = $order_id"; |
|
|
|
$db2->exec($sql); |
|
|
|
|
|
|
|
return $response->withHeader('Location', '/order/' . $args['id'] . '/create'); |
|
|
|
}; |
|
|
|
}); |
|
|
|
|
|
|
|
$app->get('/order/{id}', function (Request $request, Response $response, array $args) { |
|
|
|
|
|
|
|
$db = new myDB(); |
|
|
|
|
|
|
|
// detail orderlijnen |
|
|
|
$sql = "SELECT * FROM order_lines o LEFT JOIN products p on o.product_id = p.id where o.order_id = " . $args['id']; |
|
|
|
$stmt = $db->prepare($sql); |
|
|
|
$res = $stmt->execute(); |
|
|
|
|
|
|
|
// detail order |
|
|
|
$db2 = new myDB(); |
|
|
|
$stmt = $db2->prepare("SELECT * FROM orders WHERE id = " . $args['id']); |
|
|
|
$res2 = $stmt->execute(); |
|
|
|
$a = $res2->fetchArray(SQLITE3_ASSOC); |
|
|
|
$response->getBody()->write('<a href="/order/' . $args['id'] . '/create">Add orderline</a>'); |
|
|
|
|
|
|
|
|
|
|
|
$response->getBody()->write("<h1>ORDER DETAILS FOR ORDER " . $a['reference'] . "</h1>"); |
|
|
|
$response->getBody()->write('<hr/>'); |
|
|
|
$response->getBody()->write("<table>"); |
|
|
|
while ($row = $res->fetchArray(SQLITE3_ASSOC)) { |
|
|
|
// maak hier een deftige tabel van |
|
|
|
$response->getBody()->write("<tr><td>" . " " . $row['id'] . " " . $row["itemnumber"] . " " . $row['name'] . " " . $row['qty'] . " " . $row['subtotal'] . " " . $row['vat'] . " " . $row['total'] . "</td></tr>"); |
|
|
|
} |
|
|
|
$response->getBody()->write("</table>"); |
|
|
|
$response->getBody()->write('<hr/>'); |
|
|
|
|
|
|
|
$response->getBody()->write('<a href="/customers">Back to customer list</a> <a href="/orders">Back to order list</a>'); |
|
|
|
|
|
|
|
return $response; |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
$app->get('/customers', function (Request $request, Response $response, array $args) { |
|
|
|
$db = new myDB(); |
|
|
|
$sql = "SELECT * FROM clients"; |
|
|
|
$stmt = $db->prepare($sql); |
|
|
|
$res = $stmt->execute(); |
|
|
|
|
|
|
|
$response->getBody()->write("<h1>CUSTOMERS LIST </h1>"); |
|
|
|
$response->getBody()->write('<hr/>'); |
|
|
|
$response->getBody()->write("<table>"); |
|
|
|
while ($row = $res->fetchArray(SQLITE3_ASSOC)) { |
|
|
|
// maak hier een deftige tabel van |
|
|
|
$response->getBody()->write("<tr><td>" . " " . " <a href=\"/orders/" . $row['id'] . "\">" . $row["id"] . "</a> " . " " . $row['firstname'] . " " . $row['lastname'] . " " . $row['street'] . " " . $row['street2'] . " " . $row['zipcode'] . " " . $row['city'] . " " . $row['country'] . "</td></tr>"); |
|
|
|
} |
|
|
|
$response->getBody()->write("</table>"); |
|
|
|
|
|
|
|
return $response; |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$app->run(); |