246 lines
12 KiB
Twig
246 lines
12 KiB
Twig
{% extends 'superadmin/layout.twig' %}
|
||
|
||
{% block content %}
|
||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||
<h1>Организация: {{ organization.name }}</h1>
|
||
<a href="{{ base_url('/superadmin/organizations') }}" class="btn btn-outline-secondary">
|
||
<i class="fa-solid fa-arrow-left"></i> Назад к списку
|
||
</a>
|
||
</div>
|
||
|
||
{% for alert in get_alerts() %}
|
||
<div class="alert alert-{{ alert.type }}">{{ alert.message }}</div>
|
||
{% endfor %}
|
||
|
||
<div class="row">
|
||
<div class="col-md-8">
|
||
<div class="card mb-4">
|
||
<div class="card-header">
|
||
<h5 class="card-title mb-0">Подписки на модули</h5>
|
||
</div>
|
||
<div class="card-body">
|
||
{% if subscriptions is empty %}
|
||
<p class="text-muted text-center py-4">У организации нет активных подписок</p>
|
||
{% else %}
|
||
<div class="table-responsive">
|
||
<table class="table table-hover">
|
||
<thead>
|
||
<tr>
|
||
<th>Модуль</th>
|
||
<th>Статус</th>
|
||
<th>Истекает</th>
|
||
<th>Создана</th>
|
||
<th>Действия</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{% for sub in subscriptions %}
|
||
{% set module = allModules[sub.module_code] %}
|
||
<tr>
|
||
<td>
|
||
<strong>{{ module.name|default(sub.module_code) }}</strong>
|
||
<div class="text-muted small">{{ module.description|default('') }}</div>
|
||
</td>
|
||
<td>
|
||
{% if sub.status == 'active' %}
|
||
<span class="badge bg-success">Активна</span>
|
||
{% elseif sub.status == 'trial' %}
|
||
<span class="badge bg-info">Триал</span>
|
||
{% elseif sub.status == 'expired' %}
|
||
<span class="badge bg-danger">Истекла</span>
|
||
{% else %}
|
||
<span class="badge bg-warning">{{ sub.status }}</span>
|
||
{% endif %}
|
||
</td>
|
||
<td>
|
||
{% if sub.expires_at %}
|
||
{{ sub.expires_at|date('d.m.Y H:i') }}
|
||
{% else %}
|
||
<span class="text-muted">Бессрочно</span>
|
||
{% endif %}
|
||
</td>
|
||
<td>{{ sub.created_at|date('d.m.Y H:i') }}</td>
|
||
<td>
|
||
<a href="{{ base_url('/superadmin/organizations/' ~ organization.id ~ '/removeSubscription/' ~ sub.id) }}"
|
||
class="btn btn-sm btn-outline-danger"
|
||
onclick="return confirm('Удалить подписку на модуль {{ module.name|default(sub.module_code) }}?')"
|
||
title="Удалить подписку">
|
||
<i class="fa-solid fa-trash"></i>
|
||
</a>
|
||
</td>
|
||
</tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
{% endif %}
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card">
|
||
<div class="card-header">
|
||
<h5 class="card-title mb-0">Участники организации</h5>
|
||
</div>
|
||
<div class="card-body">
|
||
{% if users is empty %}
|
||
<p class="text-muted text-center py-4">Участников пока нет</p>
|
||
{% else %}
|
||
<div class="table-responsive">
|
||
<table class="table table-hover">
|
||
<thead>
|
||
<tr>
|
||
<th>Пользователь</th>
|
||
<th>Email</th>
|
||
<th>Роль</th>
|
||
<th>Статус</th>
|
||
<th>Дата добавления</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{% for user in users %}
|
||
<tr>
|
||
<td>{{ user.name|default('—') }}</td>
|
||
<td>{{ user.email }}</td>
|
||
<td>
|
||
<span class="badge {{ user.role == 'owner' ? 'bg-danger' : (user.role == 'admin' ? 'bg-warning' : 'bg-info') }}">
|
||
{{ user.role }}
|
||
</span>
|
||
</td>
|
||
<td>
|
||
{% if user.status == 'active' %}
|
||
<span class="badge bg-success">Активен</span>
|
||
{% elseif user.status == 'blocked' %}
|
||
<span class="badge bg-danger">Заблокирован</span>
|
||
{% else %}
|
||
<span class="badge bg-warning">{{ user.status }}</span>
|
||
{% endif %}
|
||
</td>
|
||
<td>{{ user.created_at|date('d.m.Y') }}</td>
|
||
</tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
{% endif %}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="col-md-4">
|
||
<div class="card mb-4">
|
||
<div class="card-header">
|
||
<h5 class="card-title mb-0">Добавить подписку</h5>
|
||
</div>
|
||
<div class="card-body">
|
||
<form action="{{ base_url('/superadmin/organizations/' ~ organization.id ~ '/add-subscription') }}" method="post">
|
||
{{ csrf_field()|raw }}
|
||
|
||
<div class="mb-3">
|
||
<label class="form-label">Модуль</label>
|
||
<select name="module_code" class="form-select" required>
|
||
<option value="">Выберите модуль...</option>
|
||
{% for code, module in allModules %}
|
||
{% set hasSub = false %}
|
||
{% for sub in subscriptions %}
|
||
{% if sub.module_code == code %}
|
||
{% set hasSub = true %}
|
||
{% endif %}
|
||
{% endfor %}
|
||
<option value="{{ code }}" {{ hasSub ? 'disabled style="background-color: #f8f9fa;"' : '' }}>
|
||
{{ module.name }} - {{ module.price_monthly }} руб/мес {{ hasSub ? '(уже есть)' : '' }}
|
||
</option>
|
||
{% endfor %}
|
||
</select>
|
||
</div>
|
||
|
||
<div class="mb-3">
|
||
<label class="form-label">Срок действия (дней)</label>
|
||
<input type="number" name="duration_days" class="form-control" value="30" min="0">
|
||
<div class="form-text">0 - бессрочно</div>
|
||
</div>
|
||
|
||
<div class="mb-3">
|
||
<label class="form-label">Статус</label>
|
||
<select name="status" class="form-select">
|
||
<option value="active">Активна</option>
|
||
<option value="trial">Триал</option>
|
||
<option value="expired">Истекла</option>
|
||
<option value="cancelled">Отменена</option>
|
||
</select>
|
||
</div>
|
||
|
||
<button type="submit" class="btn btn-primary w-100">
|
||
<i class="fa-solid fa-plus"></i> Добавить подписку
|
||
</button>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card mb-4">
|
||
<div class="card-header">
|
||
<h5 class="card-title mb-0">Информация</h5>
|
||
</div>
|
||
<div class="card-body">
|
||
<table class="table table-sm">
|
||
<tr>
|
||
<td>ID</td>
|
||
<td class="text-end">{{ organization.id }}</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Тип</td>
|
||
<td class="text-end">
|
||
{% if organization.type == 'business' %}
|
||
<span class="badge bg-info">Бизнес</span>
|
||
{% else %}
|
||
<span class="badge bg-warning">Личное</span>
|
||
{% endif %}
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Статус</td>
|
||
<td class="text-end">
|
||
{% if organization.status == 'active' %}
|
||
<span class="badge bg-success">Активна</span>
|
||
{% elseif organization.status == 'blocked' %}
|
||
<span class="badge bg-danger">Заблокирована</span>
|
||
{% else %}
|
||
<span class="badge bg-warning">{{ organization.status }}</span>
|
||
{% endif %}
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Создана</td>
|
||
<td class="text-end">{{ organization.created_at|date('d.m.Y H:i') }}</td>
|
||
</tr>
|
||
<tr>
|
||
<td>Участников</td>
|
||
<td class="text-end">{{ users|length }}</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="d-flex flex-column gap-2">
|
||
{% if organization.status == 'active' %}
|
||
<a href="{{ base_url('/superadmin/organizations/block/' ~ organization.id) }}"
|
||
class="btn btn-warning"
|
||
onclick="return confirm('Заблокировать организацию?')">
|
||
<i class="fa-solid fa-ban"></i> Заблокировать
|
||
</a>
|
||
{% else %}
|
||
<a href="{{ base_url('/superadmin/organizations/unblock/' ~ organization.id) }}"
|
||
class="btn btn-success"
|
||
onclick="return confirm('Разблокировать организацию?')">
|
||
<i class="fa-solid fa-check"></i> Разблокировать
|
||
</a>
|
||
{% endif %}
|
||
<a href="{{ base_url('/superadmin/organizations/delete/' ~ organization.id) }}"
|
||
class="btn btn-danger"
|
||
onclick="return confirm('Удалить организацию? Это действие нельзя отменить!')">
|
||
<i class="fa-solid fa-trash"></i> Удалить организацию
|
||
</a>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
{% endblock %}
|