First Commit

This commit is contained in:
marco
2026-09-01 10:46:29 -03:00
commit bf96b77e9c
10000 changed files with 3508600 additions and 0 deletions
+160
View File
@@ -0,0 +1,160 @@
<?php
namespace Modules\Modelo\Controllers;
use App\Controllers\BaseAdminController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Modules\Modelo\Models\Modelo;
use Illuminate\Support\Str;
class ModeloController extends BaseAdminController
{
/**
* List all Modelos for the current company
*/
public function index(Request $request): Response
{
$user = $this->getCurrentUser();
if (!$user || !$user->hasPermission('modelo.view')) {
return new Response($this->view->render('components/alerts.twig', [
'type' => 'danger',
'message' => 'Access denied.'
]), 403);
}
$modelos = Modelo::orderBy('modelos_order', 'asc')->get();
return $this->renderAdminView('@modelo/admin/index.twig', [
'page_title' => 'Gerenciamento de Modelo',
'modelos' => $modelos
]);
}
/**
* Show create form
*/
public function create(Request $request): Response
{
$user = $this->getCurrentUser();
if (!$user || !$user->hasPermission('modelo.manage')) {
return new Response('Access denied', 403);
}
return $this->renderAdminView('@modelo/admin/form.twig', [
'page_title' => 'Novo Modelo',
'action' => 'create'
]);
}
/**
* Store new Modelo
*/
public function store(Request $request): Response
{
$user = $this->getCurrentUser();
if (!$user || !$user->hasPermission('modelo.manage')) {
return new Response('Access denied', 403);
}
$data = $request->request->all();
$modelo = new Modelo();
// Handle potential null bus_id for Super Admins
$busId = $user->users_bus_id;
if (empty($busId)) {
$busId = $_SESSION['current_company_id'] ?? 1;
}
$modelo->modelos_bus_id = $busId;
$modelo->modelos_title = $data['title'];
$modelo->modelos_slug = !empty($data['slug']) ? Str::slug($data['slug']) : Str::slug($data['title']);
$modelo->modelos_content = $data['content'];
$modelo->modelos_order = (int) ($data['order'] ?? 0);
$modelo->modelos_active = isset($data['active']);
$modelo->modelos_visibility = $data['visibility'] ?? 'public';
$modelo->save();
return new RedirectResponse(url('admin/modelo?success=created'));
}
/**
* Show edit form
*/
public function edit(Request $request, $id): Response
{
$user = $this->getCurrentUser();
if (!$user || !$user->hasPermission('modelo.manage')) {
return new Response('Access denied', 403);
}
$modelo = Modelo::find($id);
if (!$modelo) {
return new Response('Modelo not found', 404);
}
return $this->renderAdminView('@modelo/admin/form.twig', [
'page_title' => 'Editar Modelo',
'modelo' => $modelo,
'action' => 'edit'
]);
}
/**
* Update Modelo
*/
public function update(Request $request, $id): Response
{
$user = $this->getCurrentUser();
if (!$user || !$user->hasPermission('modelo.manage')) {
return new Response('Access denied', 403);
}
$modelo = Modelo::find($id);
if (!$modelo) {
return new Response('Modelo not found', 404);
}
$data = $request->request->all();
$modelo->modelos_title = $data['title'];
$modelo->modelos_slug = !empty($data['slug']) ? Str::slug($data['slug']) : Str::slug($data['title']);
$modelo->modelos_content = $data['content'];
$modelo->modelos_order = (int) ($data['order'] ?? 0);
$modelo->modelos_active = isset($data['active']);
$modelo->modelos_visibility = $data['visibility'] ?? 'public';
$modelo->save();
return new RedirectResponse(url('admin/modelo?success=updated'));
}
/**
* Delete Modelo
*/
public function delete(Request $request, $id): Response
{
$user = $this->getCurrentUser();
if (!$user || !$user->hasPermission('modelo.manage')) {
return new Response('Access denied', 403);
}
$modelo = Modelo::find($id);
if ($modelo) {
$modelo->delete();
}
return new RedirectResponse(url('admin/modelo?success=deleted'));
}
/**
* User Manual
*/
public function manual(Request $request): Response
{
return $this->renderAdminView('@modelo/admin/manual.twig', [
'title' => 'Manual do Usuário - Módulo Modelo'
]);
}
}
+71
View File
@@ -0,0 +1,71 @@
<?php
namespace Modules\Modelo\Controllers;
use App\Controllers\BaseController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Modules\Modelo\Models\Modelo;
class PublicController extends BaseController
{
/**
* Show public Modelos for Company 1
*/
public function index(Request $request): Response
{
// Define a constant to bypass the company scope if needed
if (!defined('PUBLIC_MODELO_ACCESS')) {
define('PUBLIC_MODELO_ACCESS', true);
}
$query = Modelo::where('modelos_active', true);
// Check visibility logic
$canViewPrivate = false;
if (isset($_SESSION['user_id'])) {
$canViewPrivate = true;
}
if (!$canViewPrivate) {
$query->where('modelos_visibility', 'public');
}
$modelos = $query->orderBy('modelos_order', 'asc')->get();
return $this->renderView('@modelo/public/index.twig', [
'page_title' => 'Nossos Modelos',
'modelos' => $modelos
]);
}
/**
* Show a single Modelo by slug
*/
public function show(Request $request, string $slug): Response
{
if (!defined('PUBLIC_MODELO_ACCESS')) {
define('PUBLIC_MODELO_ACCESS', true);
}
$modelo = Modelo::where('modelos_slug', $slug)
->where('modelos_active', true)
->first();
if (!$modelo) {
return new Response('Modelo não encontrado', 404);
}
// Replace placeholders
$content = $modelo->modelos_content;
$content = str_replace('[site_name]', $_SESSION['bus_name'] ?? 'SysCMS', $content);
$content = str_replace('[current_date]', date('d/m/Y'), $content);
$content = str_replace('[contact_email]', $_SESSION['bus_email'] ?? 'contato@syscms.com', $content);
return $this->renderView('@modelo/public/show.twig', [
'page_title' => $modelo->modelos_title,
'modelo' => $modelo,
'content' => $content
]);
}
}