Browse Source

C:/Program Files/Git/orders optional route

controller
DESKTOP-Q2SHMM6\ernes 2 years ago
parent
commit
43e71f250c

+ 2
- 40
public/index.php View File

@@ -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');

+ 49
- 0
src/Controller/Orders.php View File

@@ -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;
}
}

+ 60
- 0
src/DB/Orders.php View File

@@ -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;
}
}

+ 50
- 0
src/Model/Orders.php View File

@@ -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;
}
}

+ 16
- 15
templates/ordercreate.html.twig View File

@@ -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>

+ 13
- 0
templates/orders.html.twig View File

@@ -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 %}

+ 13
- 0
templates/ordersargs.html.twig View File

@@ -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 %}

Loading…
Cancel
Save