<?php
session_start();
require_once 'server.php';
require_once 'cart_functions.php';
// Проверка авторизации
if (!isset($_SESSION['user_id'])) {
header('Location: index.php');
exit;
}
// Получаем актуальные данные пользователя из базы данных
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$_SESSION['user_id']]);
$user = $stmt->fetch();
if (!$user) {
session_destroy();
header('Location: index.php');
exit;
}
// Получаем историю запросов пользователя
$stmt = $pdo->prepare("SELECT * FROM questions WHERE id_user = ? ORDER BY created_at DESC");
$stmt->execute([$_SESSION['user_id']]);
$questions = $stmt->fetchAll();
// Получаем историю заказов пользователя
$stmt = $pdo->prepare("
SELECT o.*, COUNT(oi.id) as items_count
FROM orders o
LEFT JOIN order_items oi ON o.id = oi.order_id
WHERE o.user_id = ?
GROUP BY o.id
ORDER BY o.order_date DESC
");
$stmt->execute([$_SESSION['user_id']]);
$orders = $stmt->fetchAll();
// Для каждого заказа получаем товары
foreach ($orders as &$order) {
$stmt = $pdo->prepare("
SELECT oi.*, p.name, p.image
FROM order_items oi
JOIN products p ON oi.product_id = p.id
WHERE oi.order_id = ?
");
$stmt->execute([$order['id']]);
$order['items'] = $stmt->fetchAll();
}
unset($order); // Убираем ссылку
$_SESSION['user'] = $user;
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Гестион - Личный кабинет</title>
<link rel="stylesheet" href="css/styles.css">
<style>
/* Стили для истории заказов */
.orders-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
gap: 20px;
margin-top: 20px;
}
.order-card {
background: white;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
padding: 20px;
border-left: 4px solid #2a5885;
}
.order-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
flex-wrap: wrap;
}
.order-title {
margin: 0;
color: #2a5885;
}
.order-date {
color: #666;
font-size: 14px;
}
.order-status {
padding: 3px 8px;
border-radius: 4px;
font-size: 14px;
font-weight: bold;
margin-top: 5px;
}
.order-status.pending {
background: #fff3e0;
color: #e65100;
}
.order-status.completed {
background: #e8f5e9;
color: #2e7d32;
}
.order-items {
margin: 10px 0;
}
.order-item {
display: flex;
align-items: center;
padding: 8px 0;
border-bottom: 1px solid #f0f0f0;
}
.order-item-image {
width: 50px;
height: 50px;
margin-right: 10px;
}
.order-item-image img {
width: 100%;
height: 100%;
object-fit: cover;
border-radius: 4px;
}
.order-item-details {
flex: 1;
}
.order-item-name {
font-weight: 500;
}
.order-item-price {
min-width: 80px;
text-align: right;
}
.order-footer {
margin-top: 15px;
padding-top: 10px;
border-top: 1px solid #eee;
}
.order-total {
text-align: right;
font-weight: bold;
}
.no-orders {
text-align: center;
padding: 20px;
background: #f9f9f9;
border-radius: 8px;
grid-column: 1 / -1;
}
/* Адаптивность */
@media (max-width: 768px) {
.orders-grid {
grid-template-columns: 1fr;
}
}
</style>
</head>
<body>
<!-- Шапка сайта -->
<header>
<div class="header-container">
<div class="header-text">
<h1>Гестион</h1>
<p>Добро пожаловать на сайт юридической компании "Гестион"!</p>
</div>
<div class="auth-section">
<?php
if (isset($_SESSION['login_error'])) {
echo '<div class="error-message">'.$_SESSION['login_error'].'</div>';
unset($_SESSION['login_error']);
}
if (isset($_SESSION['user'])) {
echo '<div class="user-info">';
echo '<div class="user-info-text">';
echo '<div>Вы вошли как:</div>';
echo '<a href="profile.php" class="username-link">'.htmlspecialchars($_SESSION['user']['username']).'</a>';
echo '</div>';
echo '<a href="logout.php" class="logout-link">Выйти</a>';
echo '</div>';
} else {
echo '<div class="login-form">';
echo '<form action="login.php" method="post">';
echo '<div class="form-grid">';
echo '<label for="username">Логин:</label>';
echo '<input type="text" id="username" name="login_username" required>';
echo '<label for="password">Пароль:</label>';
echo '<input type="password" id="password" name="login_password" required>';
echo '<button type="submit">Войти</button>';
echo '<button type="button" onclick="location.href=\'registration.php\'">Регистрация</button>';
echo '</div>';
echo '</form>';
echo '</div>';
}
?>
</div>
</div>
<hr>
</header>
<!-- Меню -->
<nav>
<ul>
<li><a href="index.php">Главная</a></li>
<li><a href="catalog.php">Каталог</a></li>
<li><a href="contacts.php">Контакты</a></li>
<li><a href="profile.php">Личный кабинет</a></li>
<li><a href="cart.php" class="cart-link">Корзина</a></li>
</ul>
</nav>
<!-- Основной контент -->
<main>
<h2 style="text-align: center; width: 100%;">Личный кабинет</h2>
<div class="profile-info">
<img src="images/profile.jpg" alt="Портрет пользователя" class="profile-portrait">
<h3>Данные пользователя</h3>
<?php if (!empty($user['full_name'])): ?>
<p><strong>ФИО:</strong> <?= htmlspecialchars($user['full_name']) ?></p>
<?php endif; ?>
<p><strong>Email:</strong> <?= htmlspecialchars($user['email']) ?></p>
<p><strong>Логин:</strong> <?= htmlspecialchars($user['username']) ?></p>
<?php if (!empty($user['created_at'])): ?>
<p><strong>Дата регистрации:</strong> <?= htmlspecialchars($user['created_at']) ?></p>
<?php endif; ?>
</div>
<h3 style="text-align: center; margin-top: 40px;">История ваших заказов</h3>
<div class="orders-grid">
<?php if (empty($orders)): ?>
<div class="no-orders">У вас пока нет завершенных заказов</div>
<?php else: ?>
<?php foreach ($orders as $order): ?>
<div class="order-card">
<div class="order-header">
<h3 class="order-title">Заказ #<?= $order['id'] ?></h3>
<div>
<span class="order-date"><?= date('d.m.Y H:i', strtotime($order['order_date'])) ?></span>
<span class="order-status <?= $order['status'] ?>">
<?= $order['status'] === 'pending' ? 'В обработке' : 'Завершен' ?>
</span>
</div>
</div>
<div class="order-items">
<?php foreach ($order['items'] as $item): ?>
<div class="order-item">
<div class="order-item-image">
<img src="<?= htmlspecialchars($item['image']) ?>" alt="<?= htmlspecialchars($item['name']) ?>">
</div>
<div class="order-item-details">
<div class="order-item-name"><?= htmlspecialchars($item['name']) ?></div>
<div><?= $item['quantity'] ?> × <?= number_format($item['price'], 2) ?> ₽</div>
</div>
<div class="order-item-price">
<?= number_format($item['price'] * $item['quantity'], 2) ?> ₽
</div>
</div>
<?php endforeach; ?>
</div>
<div class="order-footer">
<div class="order-total">
<strong>Итого:</strong> <?= number_format($order['total_amount'], 2) ?> ₽
</div>
</div>
</div>
<?php endforeach; ?>
<?php endif; ?>
</div>
<!-- История запросов -->
<h3 style="text-align: center; margin-top: 40px;">История ваших обращений</h3>
<div class="requests-grid">
<?php if (empty($questions)): ?>
<div class="no-requests">У вас пока нет отправленных обращений</div>
<?php else: ?>
<?php foreach ($questions as $question): ?>
<div class="request-card">
<div class="request-header">
<h3 class="request-title"><?= htmlspecialchars($question['topic']) ?></h3>
<span class="request-date"><?= date('d.m.Y H:i', strtotime($question['created_at'])) ?></span>
</div>
<div class="request-meta">
<span class="request-meta-item">
<i>📞</i> <?= htmlspecialchars($question['telephone']) ?>
</span>
<?php if (!empty($question['department'])): ?>
<span class="request-meta-item">
<i>🏢</i> Отдел:
<span class="department-badge">
<?php
$departments = [
'legal' => 'Юридический',
'finance' => 'Финансовый',
'support' => 'Техподдержка'
];
echo htmlspecialchars($departments[$question['department']] ?? $question['department']);
?>
</span>
</span>
<?php endif; ?>
<?php if (!empty($question['request_type'])): ?>
<span class="request-meta-item">
<i>📋</i> Тип:
<?php
$types = [
'consultation' => 'Консультация',
'complaint' => 'Жалоба',
'feedback' => 'Отзыв'
];
echo htmlspecialchars($types[$question['request_type']] ?? $question['request_type']);
?>
</span>
<?php endif; ?>
</div>
<div class="request-content">
<?= nl2br(htmlspecialchars($question['text'])) ?>
</div>
<?php if (!empty($question['interests'])): ?>
<div class="interests-section">
<h4>Интересуемые услуги:</h4>
<div class="interests-list">
<?php
$interests = explode(',', $question['interests']);
$interestNames = [
'corporate' => 'Корпоративное право',
'tax' => 'Налоговое право',
'family' => 'Семейное право',
'real_estate' => 'Недвижимость'
];
foreach ($interests as $interest):
if (!empty($interest)): ?>
<span class="interest-badge">
<?= htmlspecialchars($interestNames[$interest] ?? $interest) ?>
</span>
<?php endif;
endforeach;
?>
</div>
</div>
<?php endif; ?>
</div>
<?php endforeach; ?>
<?php endif; ?>
</div>
</main>
<footer>
<hr>
<p>© 2023 Гестион. Все права защищены.</p>
<p><a href="privacy_policy.html" target="_blank" style="color: white;" download>Политика конфиденциальности</a></p>
</footer>
</body>
</html>