<?php
namespace Futurelink\Main\Controllers;
use Futurelink\Main\Models\OrdersModel;
class HomeController extends AbstractController {
public function defaultMethod() {
$today = date('Y-m-d');
$month = date('m');
$orders = new OrdersModel();
$this->data['todayOrders'] = $orders->getOrdersByDate("'$today'");
$this->data['montOrders'] = $orders->getOrdersByDate("'$month'");
$this->data['todayClosedOrders'] = $orders->getOrdersByDateClosed("'$today'");
$this->view();
}
}
<?php
namespace Futurelink\Main\Models;
use PDO;
use PDOException;
class AbstractModel {
public $connection;
public $query;
public $sql;
public $error;
public function __construct() {
$dsn = "mysql:host=localhost;dbname=lva2;";
$options = array(
\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
);
try {
$this->connection = new PDO($dsn, "root", "", $options);
$this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e) {
$this->error = $e->getMessage();
}
}
public function select($table, $column)
{
$this->sql = "SELECT {$column} FROM `{$table}`";
return $this;
}
public function whereFilter($column, $compare, $data)
{
if ($data == 'off') {
$this->sql .= " WHERE `$column` >= 0 ";
} else {
$this->sql .= " WHERE $column $compare $data ";
}
return $this;
}
public function query()
{
// echo $this->sql;
$this->query = $this->connection->prepare(query: $this->sql);
return $this;
}
public function executeQuery()
{
// echo $this->sql;
if ($this->query->execute()) {
return 1;
} else {
return 'error';
}
}
public function getAll()
{
$this->query();
$this->executeQuery();
$rows = $this->query->fetchAll(PDO::FETCH_ASSOC);
return $rows;
}
}
<?php
namespace Futurelink\Main\Models;
class OrdersModel extends AbstractModel {
public function getOrdersByDate($date)
{
return $this->select("orders", "count(orderId) as ordersNum")->whereFilter("openDate", "=", $date)->getAll();
}
public function getOrdersByDateClosed($date)
{
return $this->select("orders", "count(orderId) as ordersNum")->whereFilter("closeDate", "=", $date)->getAll();
}
}