Browse Source

Merge branch 'controller'

master
DESKTOP-Q2SHMM6\ernes 2 years ago
parent
commit
39cb54d777

+ 24
- 166
public/index.php View File

@@ -1,12 +1,16 @@
<?php

namespace Store;
namespace Shop;

use Psr\Http\Message\ResponseInterface as Response;
use Psr\Http\Message\ServerRequestInterface as Request;
use Psr\Container\ContainerInterface;
use Slim\Factory\AppFactory;
use DI\Container;
use Store\DB\myDB;
use Shop\DB\myDB;
use Shop\View\Twig;
use Shop\DB\Order;
use Shop\Model\Order as OrderModel;

require __DIR__ . '/../vendor/autoload.php';

@@ -14,179 +18,33 @@ $container = new Container();
AppFactory::setContainer($container);
$app = AppFactory::create();

// $container->set('db', function() {
// $db = new myDB();
// return $db;
// });

$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']);
};
$container->set('twig', function () {
$twig = new Twig('../templates');
return $twig;
});

// 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>");
$container->set(
'db',
function () {
$db = new myDB();
return $db;
}
);

$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);
$app->get("/orders/{client}/create", \Shop\Controller\ClientCreate::class . ':createGet');
$app->post("/orders/{client}/create", \Shop\Controller\ClientCreate::class . ':createPost');

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();
// Route with optional params, see https://www.slimframework.com/docs/v4/objects/routing.html#how-to-create-routes section Optional segments

$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>");
$app->get('/orders', \Shop\Controller\Orders::class . ':orders');
$app->get('/orders/{client}', \Shop\Controller\Orders::class . ':ordersArgs');

return $response;
});
$app->get("/order/{id}/create", \Shop\Controller\OrderCreate::class . ':createGet');
$app->post("/order/{id}/create", \Shop\Controller\OrderCreate::class . ':createPost');

$app->get('/order/{id}', \Shop\Controller\OrderID::class . ':orderID');

$app->get('/customers', \Shop\Controller\Clients::class . ':clients');

$app->run();

+ 73
- 0
src/Controller/ClientCreate.php View File

@@ -0,0 +1,73 @@
<?php

namespace Shop\Controller;

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Container\ContainerInterface;
use Shop\DB\Order;

class ClientCreate
{
protected $container;
protected $twig;
protected $vars;

public function __construct(ContainerInterface $container) {
$this->container = $container;
}

public function createGet(ServerRequestInterface $request, ResponseInterface $response, array $args) {
$container = $this->container;
$twig = $container->get('twig');

$db = new Order($this->container);
$client = $db->getClient($args['client']);


$vars = ["client" => $client, "args" => $args['client']];

$a = $twig->render('clientcreate.html.twig', $vars);
$response->getBody()->write($a);
return $response;


}

public function createPost(ServerRequestInterface $request, ResponseInterface $response, array $args) {
$container = $this->container;
$twig = $container->get('twig');

$ref = $request->getParsedBody()['reference'];
$db2 = $this->container->get('db');
$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']);
}
}

// 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);
// $db2 = new Order($this->container);
// $res2 = $db2->getClient($args['client']);
// $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']);
// };

+ 36
- 0
src/Controller/Clients.php View File

@@ -0,0 +1,36 @@
<?php

namespace Shop\Controller;

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Container\ContainerInterface;
use Shop\DB\Clients as ClientList;

class Clients
{
protected $container;
protected $twig;
protected $vars;

public function __construct(ContainerInterface $container)
{
$this->container = $container;
}

public function clients(ServerRequestInterface $request, ResponseInterface $response, array $args)
{
$container = $this->container;
$twig = $container->get('twig');

$db = new ClientList($this->container);
$clients = $db->getClients();

$vars = ["clients" => $clients];

$a = $twig->render('clients.html.twig', $vars);
$response->getBody()->write($a);
return $response;

}
}

+ 45
- 0
src/Controller/OrderCreate.php View File

@@ -0,0 +1,45 @@
<?php

namespace Shop\Controller;

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Container\ContainerInterface;
use Shop\DB\Order;

class OrderCreate
{
protected $container;

public function __construct(ContainerInterface $container){
$this->container = $container;
}

public function createGet(ServerRequestInterface $request, ResponseInterface $response, array $args)
{
$container = $this->container;
$twig = $container->get('twig');

$db = new Order($container);
$order = $db->getOrderDetail($args['id']);

$vars = ["order" => $order, "args" => $args['id']];
$a = $twig->render('ordercreate.html.twig', $vars);
$response->getBody()->write($a);
return $response;
}

public function createPost(ServerRequestInterface $request, ResponseInterface $response, array $args)
{
$container = $this->container;
$twig = $container->get('twig');

$db = new Order($container);
$productid = $request->getParsedBody()['id'];
$qty = $request->getParsedBody()['qty'];
$order = $db->getProductDetails($args['id'], $productid, $qty);

return $response->withHeader('Location', '/order/' . $args['id'] . '/create');
}
}

+ 36
- 0
src/Controller/OrderID.php View File

@@ -0,0 +1,36 @@
<?php

namespace Shop\Controller;

use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Container\ContainerInterface;
use Shop\DB\Order;

class OrderID
{
protected $container;
protected $twig;

public function __construct(ContainerInterface $container)
{
$this->container = $container;
}

public function orderID(ServerRequestInterface $request, ResponseInterface $response, array $args)
{
$container = $this->container;
$twig = $container->get('twig');

$db = new Order($this->container);
$orderLines = $db->getOrderLines($args['id']);
$orderDetails = $db->getOrderDetail($args['id']);

$vars = ["orderlines" => $orderLines, "orderdetails" => $orderDetails, "custid" => $args['id']];

$a = $twig->render('orderID.html.twig', $vars);
$response->getBody()->write($a);
return $response;
}

}

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

+ 39
- 0
src/DB/Clients.php View File

@@ -0,0 +1,39 @@
<?php

namespace Shop\DB;

use Shop\DB\myDB;
use Shop\Model\Clients as ClientModel;

class Clients extends myDB
{
protected $container;
protected $clients = [];

public function __construct($container)
{
$this->container = $container;
}

public function getClients()
{
$stmt = $this->container->get('db')->prepare("SELECT * FROM clients;");
$res = $stmt->execute();
while($result = $res->fetchArray(SQLITE3_ASSOC)) {
$client = new ClientModel($this->container);
$client->setId($result['id']);
$client->setFirstname($result['firstname']);
$client->setLastname($result['lastname']);
$client->setCompany($result['company']);
$client->setVatnumber($result['vatnumber']);
$client->setStreet($result['street']);
$client->setStreet2($result['street2']);
$client->setZipcode($result['zipcode']);
$client->setCity($result['city']);
$client->setState($result['state']);
$client->setCountry($result['country']);
$this->clients[] = $client;
}
return $this->clients;
}
}

+ 98
- 0
src/DB/Order.php View File

@@ -0,0 +1,98 @@
<?php

namespace Shop\DB;

use Shop\Model\Order as OrderModel;
use Shop\Model\OrderCreate as OrderCreate;
use Shop\DB\myDB;

class Order
{
protected $container;
protected $orderlines = [];
protected $details = [];
protected $clients = [];
protected $product = [];

public function __construct($container) {
$this->container = $container;
}

public function getOrderLines($id)
{
$db = $this->container->get('db');
$sql = "SELECT * FROM order_lines o LEFT JOIN products p on o.product_id = p.id where o.order_id = :id;";
$stmt = $db->prepare($sql);
$stmt->bindValue(':id', $id, SQLITE3_INTEGER);
$res = $stmt->execute();
while ($result = $res->fetchArray(SQLITE3_ASSOC)) {
$orderLine = new OrderModel($this->container);
$orderLine->setId($result['id']);
$orderLine->setName($result['name']);
$orderLine->setItemnumber($result['itemnumber']);
$orderLine->setQty($result['qty']);
$orderLine->setSubtotal($result['subtotal']);
$orderLine->setVat($result['vat']);
$orderLine->setTotal($result['total']);
$this->orderlines[] = $orderLine;
}
return $this->orderlines;
}

public function getOrderDetail($id) {
$db = $this->container->get('db');
$stmt = $db->prepare("SELECT * FROM orders WHERE id = :id");
$stmt->bindValue(':id', $id, SQLITE3_INTEGER);
$res = $stmt->execute();
while ($result = $res->fetchArray(SQLITE3_ASSOC)) {
$detail = new OrderModel($this->container);
$detail->setReference($result['reference']);
$this->details[] = $detail;
}
return $this->details;
}

public function getProductDetails($id, $productid, $qty) {

$db = $this->container->get('db');
$sqlproduct = "select * from products where id = :id;";
$stmtproduct = $db->prepare($sqlproduct);
$stmtproduct->bindValue(':id', $productid, SQLITE3_INTEGER);
$resproduct = $stmtproduct->execute();
while ($product = $resproduct->fetchArray(SQLITE3_ASSOC)) {
$order = new OrderModel($this->container);
$order->setUnitprice($product['unitprice']);
$order->setVatperc($product['vatperc']);
$this->product[] = $order;
}
$order_id = $id;
$unitprice = $product['unitprice'];
$vatperc = $product['vatperc'];

$subtotal = $qty * $unitprice;
$vat = $subtotal * $vatperc / 100;
$total = $subtotal + $vat;

$sql = "insert into order_lines (order_id, product_id, qty, subtotal, vat, total) values ($order_id, $productid, $qty, $subtotal, $vat, $total)";
$db->exec($sql);

$sql = "update orders set total = total + $total, subtotal = subtotal + $subtotal, vat = vat + $vat where id = $order_id";
$db->exec($sql);
}

public function getClient($id)
{
$db = $this->container->get('db');
$sql = "SELECT * FROM clients WHERE id = :id;";
$stmt = $db->prepare($sql);
$stmt->bindValue(':id', $id, SQLITE3_INTEGER);
$res = $stmt->execute();
while ($result = $res->fetchArray(SQLITE3_ASSOC)) {
$client = new OrderCreate($this->container);
$client->setFirstname($result['firstname']);
$client->setLastname($result['lastname']);
$this->clients[] = $client;
}
return $this->clients;
}
}

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

+ 1
- 1
src/DB/myDB.php View File

@@ -1,6 +1,6 @@
<?php

namespace Store\DB;
namespace Shop\DB;

use SQLite3;


+ 114
- 0
src/Model/Clients.php View File

@@ -0,0 +1,114 @@
<?php

namespace Shop\Model;

use Shop\DB\myDB;

class Clients
{
protected $id;
protected $firstname;
protected $lastname;
protected $company;
protected $vatnumber;
protected $street;
protected $street2;
protected $zipcode;
protected $city;
protected $state;
protected $country;
protected $container;

public function __construct($container) {
$this->container = $container;
}

public function setId($value) {
$this->id = $value;
}

public function getId() {
return $this->id;
}

public function setFirstname($value) {
$this->firstname = $value;
}
public function getFirstname() {
return $this->firstname;
}

public function setLastname($value) {
$this->lastname = $value;
}

public function getLastname() {
return $this->lastname;
}

public function setCompany($value) {
$this->company = $value;
}

public function getCompany() {
return $this->company;
}

public function setVatnumber($value) {
$this->vatnumber = $value;
}

public function getVatnumber() {
return $this->vatnumber;
}

public function setStreet($value) {
$this->street = $value;
}

public function getStreet() {
return $this->street;
}

public function setStreet2($value) {
$this->street2 = $value;
}

public function getStreet2() {
return $this->street2;
}

public function setZipcode($value) {
$this->zipcode = $value;
}

public function getZipcode() {
return $this->zipcode;
}

public function setCity($value) {
$this->city = $value;
}

public function getCity() {
return $this->city;
}

public function setState($value) {
$this->state = $value;
}

public function getState() {
return $this->state;
}
public function setCountry($value) {
$this->country = $value;
}

public function getCountry() {
return $this->country;
}

}

+ 74
- 0
src/Model/Order.php View File

@@ -0,0 +1,74 @@
<?php

namespace Shop\Model;

use Shop\DB\Order as DBOrder;

class Order
{

protected $container;
protected $reference;
protected $id;
protected $itemnumber;
protected $name;
protected $qty;
protected $subtotal;
protected $vat;
protected $total;
protected $unitprice;
protected $vatperc;

public function __container($container) {
$this->container = $container;
}

public function setReference($value)
{
$this->reference = $value;
}

public function setId($value)
{
$this->id = $value;
}

public function setItemnumber($value)
{
$this->itemnumber = $value;
}

public function setName($value)
{
$this->name = $value;
}

public function setQty($value)
{
$this->qty = $value;
}

public function setSubtotal($value)
{
$this->subtotal = $value;
}

public function setVat($value)
{
$this->vat = $value;
}

public function setTotal($value)
{
$this->total = $value;
}

public function setUnitprice($value) {
$this->unitprice = $value;
}

public function setVatperc($value) {
$this->vatperc = $value;
}

}

+ 41
- 0
src/Model/OrderCreate.php View File

@@ -0,0 +1,41 @@
<?php

namespace Shop\Model;

class OrderCreate
{
protected $container;
protected $firstname;
protected $lastname;

protected $reference;

public function __construct($container)
{
$this->container = $container;
}

public function setFirstname($value) {
$this->firstname = $value;
}

public function getFirstname() {
return $this->firstname;
}

public function setLastname($value) {
$this->lastname = $value;
}

public function getLastname() {
return $this->lastname;
}

public function setReference($value) {
$this->reference = $value;
}

public function getReference() {
return $this->reference;
}
}

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

+ 44
- 0
src/View/Twig.php View File

@@ -0,0 +1,44 @@
<?php

namespace Shop\View;

use Twig\Loader\FilesystemLoader;
use Twig\Environment;

class Twig
{

protected $twig;
protected $variables;

public function __construct($tmpl_folder)
{
$loader = new FilesystemLoader($tmpl_folder);
$this->twig = new Environment($loader, []);
$this->variables = [];
}

protected function load($tmpl)
{
return $this->twig->load($tmpl);
}

// add block variables to the global variable bag
// public function addBlockVariable($block, $data)
// {
// $current = $this->variables[$block];
// if ($current) {
// $new = array_merge($current, $data);
// } else {
// $new = $data;
// }
// $this->variables[$block] = $new;
// }

public function render($tmpl, $vars)
{
$template = $this->load($tmpl);
$variables = array_merge($this->variables, $vars);
return $template->render($variables);
}
}

+ 5
- 0
templates/base.html.twig View File

@@ -0,0 +1,5 @@
<html>
<body>
<div id="main">{% block main %}{% endblock %}</div>
</body>
</html>

+ 10
- 0
templates/clientcreate.html.twig View File

@@ -0,0 +1,10 @@
{% extends "base.html.twig" %} {% block main %}

<h1>Create order for {{ client.firstname }} {{ client.lastname }}</h1>
<hr />
<form action="/orders/{{ args }}/create" method="post">
<label for="id">Reference: </label>
<input type="text" name="reference" />
<input type="submit" />
</form>
{% endblock %}

+ 37
- 0
templates/clients.html.twig View File

@@ -0,0 +1,37 @@
{% extends "base.html.twig" %} {% block main %}

<h1>CUSTOMER LIST</h1>
<hr />
<table>
<tr>
<th>id</th>
<th>First Name</th>
<th>Last Name</th>
<th>Company</th>
<th>VAT Number</th>
<th>Street</th>
<th>Street 2</th>
<th>ZIP Code</th>
<th>City</th>
<th>State</th>
<th>Country</th>
</tr>
{% for clients in clients %}
<tr>
<td>
<a href="/orders/{{ clients.id }}">{{ clients.id }}</a>
</td>
<td>{{ clients.firstname }}</td>
<td>{{ clients.lastname }}</td>
<td>{{ clients.company }}</td>
<td>{{ clients.vatnumber }}</td>
<td>{{ clients.street }}</td>
<td>{{ clients.street2 }}</td>
<td>{{ clients.zipcode }}</td>
<td>{{ clients.city }}</td>
<td>{{ clients.state }}</td>
<td>{{ clients.country }}</td>
</tr>
{% endfor %}
</table>
{% endblock %}

+ 29
- 0
templates/orderID.html.twig View File

@@ -0,0 +1,29 @@
{% extends "base.html.twig" %} {% block main %}
<a href="/order/{{ custid }}/create">Add orderline</a>
<h1>ORDER DETAILS FOR ORDER {{ orderdetails.reference }}</h1>
<hr />
<table>
<tr>
<th>id</th>
<th>Itemnumber</th>
<th>Name</th>
<th>Quantity</th>
<th>Subtotal</th>
<th>VAT</th>
<th>Total</th>
</tr>
{% for orderlines in orderlines %}
<tr>
<td>{{ orderlines.id }}</td>
<td>{{ orderlines.itemnumber }}</td>
<td>{{ orderlines.name }}</td>
<td>{{ orderlines.qty }}</td>
<td>{{ orderlines.subtotal }}</td>
<td>{{ orderlines.vat }}</td>
<td>{{ orderlines.total }}</td>
</tr>
{% endfor %}
</table>
<a href="/customers">Back to customer list</a>
<a href="/orders">Back to order list</a>
{% endblock %}

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

@@ -0,0 +1,16 @@
<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