271 lines
14 KiB
Twig
Executable File
271 lines
14 KiB
Twig
Executable File
{% extends "layouts/dashboard.twig" %}
|
|
|
|
{% block title %}{{ __('dashboard.title') }} - {{ platformName }}{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
|
|
<h1 class="h2">{{ __('dashboard.title') }}</h1>
|
|
<div class="btn-toolbar mb-2 mb-md-0">
|
|
<div class="btn-group me-2">
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{% if seo_pending %}
|
|
<div class="alert alert-warning alert-dismissible fade show" role="alert">
|
|
<strong><i class="bi bi-exclamation-triangle-fill"></i> {{ __('dashboard.seo_warning_title') }}</strong> {{ __('dashboard.seo_warning_message') }}
|
|
<a href="{{ url('admin/system/install-seo') }}" class="btn btn-warning btn-sm ms-2">{{ __('dashboard.seo_install_repair_button') }}</a>
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if cache_cleared %}
|
|
<div class="alert alert-success alert-dismissible fade show" role="alert">
|
|
<strong>{{ __('dashboard.cache_cleared_title') }}</strong> {{ __('dashboard.cache_cleared_message', {'files': deleted_count, 'opcache': opcache_cleared ? __('dashboard.yes') : __('dashboard.no')}) }}
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if seo_pending %}
|
|
<div class="alert alert-warning alert-dismissible fade show" role="alert">
|
|
<strong><i class="bi bi-exclamation-triangle-fill"></i> {{ __('dashboard.seo_warning_title') }}</strong> {{ __('dashboard.seo_missing_message') }}
|
|
<a href="{{ url('admin/system/install-seo') }}" class="btn btn-warning btn-sm ms-2">{{ __('dashboard.seo_install_button') }}</a>
|
|
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
|
</div>
|
|
{% endif %}
|
|
|
|
<!-- Syspanel Ad Section -->
|
|
<div class="row mb-4">
|
|
<div class="col-12">
|
|
<div class="card border-0 shadow-lg overflow-hidden" style="border-radius: 24px; background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%); transition: transform 0.3s ease;">
|
|
<div class="card-body p-0">
|
|
<div class="row g-0 align-items-center">
|
|
<div class="col-lg-7 p-4 p-md-5">
|
|
<div class="d-inline-flex align-items-center px-3 py-1 rounded-pill mb-4" style="background: rgba(59, 130, 246, 0.1); border: 1px solid rgba(59, 130, 246, 0.2);">
|
|
<span class="text-primary fw-bold small"><i class="bi bi-rocket-takeoff-fill me-2"></i> Syspanel Enterprise</span>
|
|
</div>
|
|
<h2 class="display-4 fw-bold text-white mb-4">Conheça também os outros <span style="background: linear-gradient(135deg, #60a5fa 0%, #a855f7 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent;">serviços Syspanel</span></h2>
|
|
<p class="lead text-light opacity-75 mb-4 fs-5">
|
|
A solução definitiva para empresas que buscam excelência operacional, automação inteligente e crescimento escalável. Tudo o que você precisa em uma única plataforma.
|
|
</p>
|
|
<div class="row g-4 mb-5 text-light">
|
|
<div class="col-md-6">
|
|
<div class="d-flex align-items-start gap-3">
|
|
<div class="rounded-circle bg-primary bg-opacity-10 p-2">
|
|
<i class="bi bi-speedometer2 text-primary fs-4"></i>
|
|
</div>
|
|
<div>
|
|
<h6 class="fw-bold mb-1">Performance Ultra-Rápida</h6>
|
|
<p class="small opacity-75 mb-0">Decisões em tempo real com dados precisos.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<div class="d-flex align-items-start gap-3">
|
|
<div class="rounded-circle bg-primary bg-opacity-10 p-2">
|
|
<i class="bi bi-shield-check text-primary fs-4"></i>
|
|
</div>
|
|
<div>
|
|
<h6 class="fw-bold mb-1">Segurança Avançada</h6>
|
|
<p class="small opacity-75 mb-0">Proteção de dados de nível corporativo.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="d-flex flex-wrap gap-3">
|
|
<a href="https://home.syspanel.com.br" target="_blank" class="btn btn-primary btn-lg px-5 py-3 fw-bold shadow-sm" style="border-radius: 16px; background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%); border: none;">
|
|
Começar Agora <i class="bi bi-arrow-right ms-2"></i>
|
|
</a>
|
|
<a href="https://home.syspanel.com.br/contato" target="_blank" class="btn btn-outline-light btn-lg px-5 py-3 fw-bold" style="border-radius: 16px;">
|
|
Falar com Especialista
|
|
</a>
|
|
</div>
|
|
</div>
|
|
<div class="col-lg-5 d-none d-lg-block position-relative">
|
|
<div class="h-100" style="min-height: 500px; background: url('https://images.unsplash.com/photo-1551288049-bebda4e38f71?auto=format&fit=crop&q=80&w=1000') center/cover;">
|
|
<div class="position-absolute top-0 start-0 w-100 h-100" style="background: linear-gradient(to right, #0f172a, transparent);"></div>
|
|
<div class="position-absolute bottom-0 start-0 p-5 w-100">
|
|
<div class="glass-card p-4 rounded-4" style="background: rgba(255, 255, 255, 0.05); backdrop-filter: blur(12px); border: 1px solid rgba(255, 255, 255, 0.1);">
|
|
<div class="d-flex align-items-center gap-4">
|
|
<div class="p-3 bg-white bg-opacity-10 rounded-3">
|
|
<i class="bi bi-graph-up text-white fs-3"></i>
|
|
</div>
|
|
<div>
|
|
<div class="text-white fw-bold fs-5">+250%</div>
|
|
<div class="text-light small opacity-75">Aumento em produtividade média</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Statistics Cards -->
|
|
<div class="row">
|
|
{% if user.role == 'super_admin' %}
|
|
<div class="col-xl-3 col-md-6 mb-4">
|
|
<div class="card bg-primary text-white mb-4">
|
|
<div class="card-body">
|
|
<div class="row no-gutters align-items-center">
|
|
<div class="col mr-2">
|
|
<div class="small text-white-50 text-uppercase mb-1">
|
|
{{ __('dashboard.total_companies') }}</div>
|
|
<div class="h5 mb-0 font-weight-bold text-white">{{ stats.total_companies }}</div>
|
|
</div>
|
|
<div class="col-auto">
|
|
<i class="bi bi-building fs-2 text-white-50"></i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-xl-3 col-md-6 mb-4">
|
|
<div class="card bg-success text-white mb-4">
|
|
<div class="card-body">
|
|
<div class="row no-gutters align-items-center">
|
|
<div class="col mr-2">
|
|
<div class="small text-white-50 text-uppercase mb-1">
|
|
{{ __('dashboard.active_companies') }}</div>
|
|
<div class="h5 mb-0 font-weight-bold text-white">{{ stats.active_companies }}</div>
|
|
</div>
|
|
<div class="col-auto">
|
|
<i class="bi bi-check-circle-fill fs-2 text-white-50"></i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-xl-3 col-md-6 mb-4">
|
|
<div class="card bg-info text-white mb-4">
|
|
<div class="card-body">
|
|
<div class="row no-gutters align-items-center">
|
|
<div class="col mr-2">
|
|
<div class="small text-white-50 text-uppercase mb-1">
|
|
{{ __('dashboard.total_users') }}</div>
|
|
<div class="h5 mb-0 font-weight-bold text-white">{{ stats.total_users }}</div>
|
|
</div>
|
|
<div class="col-auto">
|
|
<i class="bi bi-people-fill fs-2 text-white-50"></i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-xl-3 col-md-6 mb-4">
|
|
<div class="card bg-warning text-white mb-4">
|
|
<div class="card-body">
|
|
<div class="row no-gutters align-items-center">
|
|
<div class="col mr-2">
|
|
<div class="small text-white-50 text-uppercase mb-1">
|
|
{{ __('dashboard.active_users') }}</div>
|
|
<div class="h5 mb-0 font-weight-bold text-white">{{ stats.active_users }}</div>
|
|
</div>
|
|
<div class="col-auto">
|
|
<i class="bi bi-person-check fs-2 text-white-50"></i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
</div>
|
|
|
|
<!-- Widgets Section -->
|
|
{% if widgets|length > 0 %}
|
|
<div class="row">
|
|
{% for widget in widgets %}
|
|
<div class="col-lg-6 mb-4">
|
|
{{ widget|raw }}
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
{% endif %}
|
|
|
|
<!-- Recent Activity -->
|
|
<div class="card shadow mb-4">
|
|
<div class="card-header py-3">
|
|
<h6 class="m-0 font-weight-bold text-primary">{{ __('dashboard.recent_activity') }}</h6>
|
|
</div>
|
|
<div class="card-body">
|
|
{% if recent_activity|length > 0 %}
|
|
<div class="table-responsive">
|
|
<table class="table table-bordered" width="100%" cellspacing="0">
|
|
<thead>
|
|
<tr>
|
|
<th>{{ __('dashboard.activity.user') }}</th>
|
|
<th>{{ __('dashboard.activity.action') }}</th>
|
|
<th>{{ __('dashboard.activity.resource') }}</th>
|
|
<th>{{ __('dashboard.activity.date') }}</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{% for activity in recent_activity %}
|
|
<tr>
|
|
<td>{{ activity.user_name }}</td>
|
|
<td>
|
|
<span class="badge badge-{{ activity.action_color|default('secondary') }}">
|
|
{{ __('dashboard.activity.' ~ activity.action) }}
|
|
</span>
|
|
</td>
|
|
<td>{{ activity.resource_type }} #{{ activity.resource_id }}</td>
|
|
<td>{{ activity.created_at|date('d/m/Y H:i') }}</td>
|
|
</tr>
|
|
{% endfor %}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
{% else %}
|
|
<p class="text-muted">{{ __('dashboard.no_recent_activity') }}</p>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Welcome Message -->
|
|
<div class="row">
|
|
<div class="col-lg-12">
|
|
<div class="card shadow mb-4">
|
|
<div class="card-header py-3">
|
|
<h6 class="m-0 font-weight-bold text-primary">{{ __('dashboard.welcome', {'platformName': platformName}) }}</h6>
|
|
</div>
|
|
<div class="card-body">
|
|
<p>{{ __('dashboard.welcome_message', {'name': user.name}) }}</p>
|
|
|
|
{% if user.role == 'super_admin' %}
|
|
<div class="alert alert-info">
|
|
<i class="bi bi-info-circle"></i>
|
|
{{ __('dashboard.super_admin_info') }}
|
|
<a href="{{ url('admin/modules/install') }}" class="btn btn-sm btn-primary ms-2">
|
|
<i class="bi bi-upload"></i> {{ __('dashboard.install_module') }}
|
|
</a>
|
|
</div>
|
|
{% endif %}
|
|
|
|
{% if user.role == 'admin' or user.role == 'user' %}
|
|
<div class="alert alert-success">
|
|
<i class="bi bi-shield-check"></i>
|
|
{{ user.role == 'admin' ? __('dashboard.admin_info') : __('dashboard.user_info') }}
|
|
</div>
|
|
{% endif %}
|
|
|
|
<div class="mt-3">
|
|
<a href="{{ url('profile') }}" class="btn btn-primary btn-sm">
|
|
<i class="bi bi-person"></i> {{ __('dashboard.edit_profile') }}
|
|
</a>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endblock %} |