Newer
Older
teacher-diary / src / main / resources / templates / group / view.html
@malexple malexple 20 days ago 5 KB add groups
<!DOCTYPE html>
<html lang="ru" xmlns:th="http://www.thymeleaf.org"
      th:replace="~{layout/main :: html(pageTitle=${group.name}, activeMenu='groups', content=~{::content}, scripts=~{})}">
<body>
<th:block th:fragment="content">
    <div th:if="${success}" class="alert alert-success" th:text="${success}"></div>
    <div th:if="${error}" class="alert alert-danger" th:text="${error}"></div>

    <div class="row">
        <div class="col-lg-8">
            <!-- Информация о группе -->
            <div class="card mb-4">
                <div class="card-header d-flex justify-content-between align-items-center">
                    <h5 class="mb-0">Информация</h5>
                    <a th:href="@{/groups/{id}/edit(id=${group.id})}" class="btn btn-sm btn-outline-primary">
                        <i class="bi bi-pencil"></i> Редактировать
                    </a>
                </div>
                <div class="card-body">
                    <div class="row">
                        <div class="col-md-6 mb-3">
                            <label class="text-muted small">Название</label>
                            <p class="mb-0 fw-medium" th:text="${group.name}"></p>
                        </div>
                        <div class="col-md-6 mb-3">
                            <label class="text-muted small">Предмет</label>
                            <p class="mb-0">
                                <span class="badge bg-primary" th:text="${group.subject?.name ?: '—'}"></span>
                            </p>
                        </div>
                        <div class="col-md-6 mb-3">
                            <label class="text-muted small">Цена за занятие</label>
                            <p class="mb-0" th:text="${group.pricePerLesson != null} ? ${#numbers.formatDecimal(group.pricePerLesson, 0, 0)} + ' ₽' : '—'"></p>
                        </div>
                        <div class="col-md-6 mb-3">
                            <label class="text-muted small">Учеников в группе</label>
                            <p class="mb-0" th:text="${group.students.size()}"></p>
                        </div>
                    </div>
                    <div th:if="${group.description}">
                        <label class="text-muted small">Описание</label>
                        <p class="mb-0" th:text="${group.description}"></p>
                    </div>
                </div>
            </div>

            <!-- Ученики группы -->
            <div class="card">
                <div class="card-header">
                    <h5 class="mb-0">Ученики группы</h5>
                </div>
                <div class="card-body" th:if="${group.students.isEmpty()}">
                    <p class="text-muted mb-0">В группе пока нет учеников</p>
                </div>
                <ul class="list-group list-group-flush" th:if="${!group.students.isEmpty()}">
                    <li class="list-group-item d-flex justify-content-between align-items-center" th:each="student : ${group.students}">
                        <div>
                            <a th:href="@{/students/{id}(id=${student.id})}" th:text="${student.fullName}"></a>
                            <small class="text-muted ms-2" th:if="${student.phone}" th:text="${student.phone}"></small>
                        </div>
                        <form th:action="@{/groups/{gid}/remove-student/{sid}(gid=${group.id}, sid=${student.id})}" method="post">
                            <button type="submit" class="btn btn-sm btn-outline-danger" onclick="return confirm('Удалить ученика из группы?')">
                                <i class="bi bi-x-lg"></i>
                            </button>
                        </form>
                    </li>
                </ul>
            </div>
        </div>

        <div class="col-lg-4">
            <!-- Добавить ученика -->
            <div class="card mb-4">
                <div class="card-header">
                    <h6 class="mb-0">Добавить ученика</h6>
                </div>
                <div class="card-body">
                    <form th:action="@{/groups/{id}/add-student(id=${group.id})}" method="post" th:if="${!availableStudents.isEmpty()}">
                        <div class="mb-3">
                            <select name="studentId" class="form-select" required>
                                <option value="">Выберите ученика</option>
                                <option th:each="s : ${availableStudents}" th:value="${s.id}" th:text="${s.fullName}"></option>
                            </select>
                        </div>
                        <button type="submit" class="btn btn-primary w-100">Добавить</button>
                    </form>
                    <div th:if="${availableStudents.isEmpty()}">
                        <p class="text-muted mb-2">Сначала добавьте учеников</p>
                        <a th:href="@{/students/new}" class="btn btn-outline-primary btn-sm">Добавить ученика</a>
                    </div>
                </div>
            </div>

            <!-- Удаление -->
            <div class="card border-danger">
                <div class="card-body">
                    <h6 class="text-danger">Удалить группу</h6>
                    <p class="small text-muted mb-3">Это действие нельзя отменить</p>
                    <form th:action="@{/groups/{id}/delete(id=${group.id})}" method="post">
                        <button type="submit" class="btn btn-danger w-100" onclick="return confirm('Удалить группу?')">
                            <i class="bi bi-trash me-1"></i> Удалить
                        </button>
                    </form>
                </div>
            </div>
        </div>
    </div>
</th:block>
</body>
</html>