Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions src/Controllers/UserController.php
Original file line number Diff line number Diff line change
@@ -1,39 +1,46 @@
<?php

declare(strict_types=1);

namespace Up\Controllers;

use Core\Http\Request;
use Exception;
use Up\Services\Repository\OrderService;
use Up\Services\Repository\UserService;

class UserController extends BaseController
{
/**
* @throws Exception
*/
public function userAction():string
public function userAction(): string
{
session_start();
if (isset($_SESSION['UserEmail']))
{
$user = UserService::getUserByEmail($_SESSION['UserEmail']);
$orders = OrderService::getOrderList($_SESSION['UserEmail']);

$params = [
'userEmail' => $user->email,
'user' => $user,
'userFullName' => $user->name . ' ' . $user->surname,
'orders' => $orders,
];

return $this->render('account', $params);
}

header('Location: /login/');
}

public function updateInfoAction(): void
{
session_start();
$request = Request::getBody();
$arrayKey = array_key_first($request);
$updateField = mb_substr($arrayKey,3);
$updateField = mb_substr($arrayKey, 3);
$funcName = 'updateUser' . $updateField;
UserService::$funcName();
header('Location: /account/');
Expand Down
33 changes: 25 additions & 8 deletions src/Services/Repository/OrderService.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ public static function addOrder(): ?array
{
$errors[] = 'Error adding a product/order link: ' . DbConnection::get()->error;
}

return !empty($errors) ? $errors : null;
}
catch (Exception $e)
Expand All @@ -66,25 +67,41 @@ public static function addOrder(): ?array
/**
* @throws Exception
*/
public static function getOrderList(): array
public static function getOrderList($userEmail = null): array
{
$query = "SELECT O.`ID`, O.`DATE_CREATE`, O.`PRICE`,"
. " U.`NAME`, U.`SURNAME`, U.`EMAIL`, U.`ADDRESS`, P.`TITLE` "
. " FROM `ORDER` O INNER JOIN `USER` U ON O.`USER_ID` = U.`ID`"
. " INNER JOIN `PRODUCT_ORDER` PR ON O.`ID` = PR.`ORDER_ID`"
. "INNER JOIN `PRODUCT` P ON PR.PRODUCT_ID = P.ID";

$result = SecurityService::safeSelectQuery($query);

if ($userEmail !== null)
{
$query .= " WHERE U.EMAIL=?";
$params = [$userEmail];
$result = SecurityService::safeSelectQuery($query, $params);
}
else
{
$result = SecurityService::safeSelectQuery($query);
}

$orders = [];

while ($row = mysqli_fetch_assoc($result))
{
$orders[] = new Order((int)$row['ID'], $row['DATE_CREATE'],
(float)$row['PRICE'], $row['NAME'],
$row['SURNAME'], $row['EMAIL'],
$row['ADDRESS'], $row['TITLE']);
$orders[] = new Order(
(int)$row['ID'],
$row['DATE_CREATE'],
(float)$row['PRICE'],
$row['NAME'],
$row['SURNAME'],
$row['EMAIL'],
$row['ADDRESS'],
$row['TITLE']
);
}

return $orders;
}

Expand All @@ -110,7 +127,6 @@ public static function addOrderUnauthorised(): ?array
'DATE_CREATE' => date('Y-m-d H:i:s'),
];


if (!SecurityService::safeInsertQuery('`ORDER`', $orderData))
{
$errors[] = 'Error adding an order: ' . DbConnection::get()->error;
Expand All @@ -127,6 +143,7 @@ public static function addOrderUnauthorised(): ?array
{
$errors[] = 'Error adding a product/order link: ' . DbConnection::get()->error;
}

return !empty($errors) ? $errors : null;
}
catch (Exception $e)
Expand Down
76 changes: 11 additions & 65 deletions src/Views/default/components/account-orders.php
Original file line number Diff line number Diff line change
@@ -1,91 +1,37 @@
<?php

/**
* @var Up\Models\Order[] $orders
* */
?>

<div class="title__container">
<h1 class="account__title">Order History</h1>
</div>
<div class="user__ordersContainer">
<?php foreach ($orders as $order):?>
<div class="userOrder">
<ul class="user__ordersInfoList">
<li class="user__ordersInfoItem">
<h4 class="user__ordersInfoTitle">order code</h4>
<p class="user__ordersInfoSubtitle">#8967856</p>
<p class="user__ordersInfoSubtitle">#<?=$order->id?></p>
</li>
<li class="user__ordersInfoItem">
<h4 class="user__ordersInfoTitle">Order status</h4>
<p class="user__ordersInfoSubtitle">status 200 =)</p>
<h4 class="user__ordersInfoTitle">Product</h4>
<p class="user__ordersInfoSubtitle"><?=$order->productTitle?></p>
</li>
<li class="user__ordersInfoItem">
<h4 class="user__ordersInfoTitle">Placed on</h4>
<p class="user__ordersInfoSubtitle">2023/08/20</p>
<p class="user__ordersInfoSubtitle"><?=$order->dataCreate?></p>
</li>
<li class="user__ordersInfoItem">
<h4 class="user__ordersInfoTitle">Total</h4>
<p class="user__ordersInfoSubtitle">$10,998.00</p>
<p class="user__ordersInfoSubtitle">$<?=$order->price?></p>
</li>
<li class="user__ordersInfoItem">
<h4 class="user__ordersInfoTitle">Sent to</h4>
<p class="user__ordersInfoSubtitle">Jimmy Smith</p>
</li>
</ul>
<ul class="user__ordersImagesList">
<li class="user__ordersImagesItem">
<img src="/assets/images/products/laptop/macOS.png" alt="your orders picture" class="account__ordersImage">
</li>
<li class="user__ordersImagesItem">
<img src="/assets/images/products/audio/airpods2.png" alt="your orders picture" class="account__ordersImage">
</li>
<li class="user__ordersImagesItem">
<img src="/assets/images/products/phones/iphone14Pro.png" alt="your orders picture" class="account__ordersImage">
</li>
<li class="user__ordersImagesItem">
<img src="/assets/images/products/tablets/ipadPro12.png" alt="your orders picture" class="account__ordersImage">
</li>
<li class="user__ordersImagesItem">
<img src="/assets/images/products/watches/applewatchBlue.png" alt="your orders picture" class="account__ordersImage">
</li>
</ul>
</div>
<div class="userOrder">
<ul class="user__ordersInfoList">
<li class="user__ordersInfoItem">
<h4 class="user__ordersInfoTitle">order code</h4>
<p class="user__ordersInfoSubtitle">#8967856</p>
</li>
<li class="user__ordersInfoItem">
<h4 class="user__ordersInfoTitle">Order status</h4>
<p class="user__ordersInfoSubtitle">status 200 =)</p>
</li>
<li class="user__ordersInfoItem">
<h4 class="user__ordersInfoTitle">Placed on</h4>
<p class="user__ordersInfoSubtitle">2023/08/20</p>
</li>
<li class="user__ordersInfoItem">
<h4 class="user__ordersInfoTitle">Total</h4>
<p class="user__ordersInfoSubtitle">$10,998.00</p>
</li>
<li class="user__ordersInfoItem">
<h4 class="user__ordersInfoTitle">Sent to</h4>
<p class="user__ordersInfoSubtitle">Jimmy Smith</p>
</li>
</ul>
<ul class="user__ordersImagesList">
<li class="user__ordersImagesItem">
<img src="/assets/images/products/laptop/macOS.png" alt="your orders picture" class="account__ordersImage">
</li>
<li class="user__ordersImagesItem">
<img src="/assets/images/products/audio/airpods2.png" alt="your orders picture" class="account__ordersImage">
</li>
<li class="user__ordersImagesItem">
<img src="/assets/images/products/phones/iphone14Pro.png" alt="your orders picture" class="account__ordersImage">
</li>
<li class="user__ordersImagesItem">
<img src="/assets/images/products/tablets/ipadPro12.png" alt="your orders picture" class="account__ordersImage">
</li>
<li class="user__ordersImagesItem">
<img src="/assets/images/products/watches/applewatchBlue.png" alt="your orders picture" class="account__ordersImage">
<p class="user__ordersInfoSubtitle"><?=$order->userName . ' ' . $order->userSurname?></p>
</li>
</ul>
</div>
<?php endforeach;?>
</div>
5 changes: 3 additions & 2 deletions src/Views/default/pages/account.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
/**
* @var $userFullName
* @var $userEmail
* @var \Up\Models\Product $user
* @var \Up\Models\User $user
* @var \Up\Models\Order $orders
*/
?>
<div class="account" id="user">
Expand Down Expand Up @@ -33,7 +34,7 @@ class="account__img">
<?= $this->renderComponent('account-profile', ['user' => $user, 'userEmail' => $userEmail]) ?>
</main>
<main class="account__main" id="accountOrderContainer" data-user-cont="1">
<?= $this->renderComponent('account-orders', []) ?>
<?= $this->renderComponent('account-orders', ['orders' => $orders]) ?>
</main>
</div>
<?= $this->renderComponent('account-modals', ['user' => $user]) ?>
Expand Down