@@ -36,47 +36,9 @@ $app->get("/orders/{client}/create", \Shop\Controller\ClientCreate::class . ':cr | |||
$app->post("/orders/{client}/create", \Shop\Controller\ClientCreate::class . ':createPost'); | |||
// 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->get('/orders', \Shop\Controller\Orders::class . ':orders'); | |||
$app->get('/orders/{client}', \Shop\Controller\Orders::class . ':ordersArgs'); | |||
$app->get("/order/{id}/create", \Shop\Controller\OrderCreate::class . ':createGet'); | |||
$app->post("/order/{id}/create", \Shop\Controller\OrderCreate::class . ':createPost'); |
@@ -0,0 +1,49 @@ | |||
<?php | |||
namespace Shop\Controller; | |||
use Psr\Http\Message\ResponseInterface; | |||
use Psr\Http\Message\ServerRequestInterface; | |||
use Psr\Container\ContainerInterface; | |||
use Shop\DB\Orders as OrderDB; | |||
class Orders | |||
{ | |||
protected $container; | |||
public function __construct(ContainerInterface $container) | |||
{ | |||
$this->container = $container; | |||
} | |||
public function orders(ServerRequestInterface $request, ResponseInterface $response, array $args) | |||
{ | |||
$container = $this->container; | |||
$twig = $container->get('twig'); | |||
$db = new OrderDB($this->container); | |||
$orders = $db->getOrders(); | |||
$vars = ["orders" => $orders]; | |||
$a = $twig->render('orders.html.twig', $vars); | |||
$response->getBody()->write($a); | |||
return $response; | |||
} | |||
public function ordersArgs(ServerRequestInterface $request, ResponseInterface $response, array $args) | |||
{ | |||
$container = $this->container; | |||
$twig = $container->get('twig'); | |||
$db = new OrderDB($this->container); | |||
$orders = $db->getOrdersArgs($args['client']); | |||
$vars = ["orders" => $orders]; | |||
$a = $twig->render('ordersargs.html.twig', $vars); | |||
$response->getBody()->write($a); | |||
return $response; | |||
} | |||
} |
@@ -0,0 +1,60 @@ | |||
<?php | |||
namespace Shop\DB; | |||
use Shop\Model\Orders as OrdersModel; | |||
class Orders | |||
{ | |||
protected $container; | |||
protected $orderArr = []; | |||
protected $clientArr = []; | |||
protected $totalArr; | |||
public function __construct($container) | |||
{ | |||
$this->container = $container; | |||
} | |||
public function getOrders() { | |||
$db = $this->container->get('db'); | |||
$sql = "SELECT o.* FROM orders o LEFT JOIN clients c on o.customer_id = c.id;"; | |||
$stmt = $db->prepare($sql); | |||
$res = $stmt->execute(); | |||
while($result = $res->fetchArray(SQLITE3_ASSOC)) { | |||
$order = new OrdersModel($this->container); | |||
$order->setId($result['name']); | |||
$order->setReference($result['reference']); | |||
$order->setSubtotal($result['subtotal']); | |||
$order->setVat($result['vat']); | |||
$order->setTotal($result['total']); | |||
$this->orderArr[] = $order; | |||
} | |||
return $this->orderArr; | |||
} | |||
public function getOrdersArgs($id) { | |||
$db = $this->container->get('db'); | |||
$stmt2 = $db->prepare("SELECT * FROM clients WHERE id = :id;"); | |||
$stmt2->bindValue(':id', $id, SQLITE3_INTEGER); | |||
$res2 = $stmt2->execute(); | |||
while($result = $res2->fetchArray(SQLITE3_ASSOC)) { | |||
$order = new OrdersModel($this->container); | |||
$order->setFirstname($result['firstname']); | |||
$order->setLastname($result['lastname']); | |||
$this->clientArr[] = $order; | |||
} | |||
$sql = "SELECT o.* FROM orders o LEFT JOIN clients c on o.customer_id = c.id;"; | |||
$stmt = $db->prepare($sql); | |||
$res = $stmt->execute(); | |||
while($result = $res->fetchArray(SQLITE3_ASSOC)) { | |||
$order->setId($result['name']); | |||
$order->setReference($result['reference']); | |||
$order->setSubtotal($result['subtotal']); | |||
$order->setVat($result['vat']); | |||
$order->setTotal($result['total']); | |||
$this->orderArr[] = $order; | |||
} | |||
$this->totalArr = array_merge($this->clientArr, $this->orderArr); | |||
return $this->totalArr; | |||
} | |||
} |
@@ -0,0 +1,50 @@ | |||
<?php | |||
namespace Shop\Model; | |||
use Shop\DB\Orders as OrdersDB; | |||
class Orders | |||
{ | |||
protected $container; | |||
protected $id; | |||
protected $reference; | |||
protected $subtotal; | |||
protected $vat; | |||
protected $total; | |||
protected $firstname; | |||
protected $lastname; | |||
public function __construct($container) | |||
{ | |||
$this->container = $container; | |||
} | |||
public function setId($value) { | |||
$this->id = $value; | |||
} | |||
public function setReference($value) { | |||
$this->reference = $value; | |||
} | |||
public function setSubtotal($value) { | |||
$this->subtotal = $value; | |||
} | |||
public function setVat($value) { | |||
$this->vat = $value; | |||
} | |||
public function setTotal($value) { | |||
$this->total = $value; | |||
} | |||
public function setFirstname($value) { | |||
$this->firstname = $value; | |||
} | |||
public function setLastname($value) { | |||
$this->lastname = $value; | |||
} | |||
} |
@@ -1,15 +1,16 @@ | |||
{% extends "base.html.twig" %} {% block main %} | |||
<h1>Create orderline for {{ order.reference }}</h1> | |||
<hr /> | |||
<form action="/order/{{ args }}/create" method="post"> | |||
<label for="id">product: </label> | |||
<input type="text" name="id" /> | |||
<label for="qty">qty: </label> | |||
<input type="text" name="qty" /> | |||
<input type="submit" /> | |||
</form> | |||
<hr /> | |||
<a href="/customers">Back to customer list</a> | |||
<a href="/orders">Back to order list</a> | |||
{% endblock %} | |||
<html> | |||
<body> | |||
<h1>Create orderline for {{ order.reference }}</h1> | |||
<hr /> | |||
<form action="/order/{{ args }}/create" method="post"> | |||
<label for="id">product: </label> | |||
<input type="text" name="id" /> | |||
<label for="qty">qty: </label> | |||
<input type="text" name="qty" /> | |||
<input type="submit" /> | |||
</form> | |||
<hr /> | |||
<a href="/customers">Back to customer list</a> | |||
<a href="/orders">Back to order list</a> | |||
</body> | |||
</html> |
@@ -0,0 +1,13 @@ | |||
{% extends "base.html.twig" %} {% block main %} | |||
<h1>ORDERS LIST FOR ALL CLIENTS</h1> | |||
<hr /> | |||
<table> | |||
{% for orders in orders %} | |||
<tr> | |||
<td><a href=\"/order/{{orders.id}}">{{orders.reference}}</a> {{orders.subtotal}} {{orders.vat}} {{orders.total}}</td> | |||
</tr> | |||
{% endfor %} | |||
</table> | |||
{% endblock %} |
@@ -0,0 +1,13 @@ | |||
{% extends "base.html.twig" %} {% block main %} | |||
<h1>ORDERS LIST FOR {{orders.firstname}} {{orders.lastname}}</h1> | |||
<hr /> | |||
<table> | |||
{% for orders in orders %} | |||
<tr> | |||
<td><a href=\"/order/{{orders.id}}">{{orders.reference}}</a> {{orders.subtotal}} {{orders.vat}} {{orders.total}}</td> | |||
</tr> | |||
{% endfor %} | |||
</table> | |||
{% endblock %} |