161 lines
4.7 KiB
PHP
Executable File
161 lines
4.7 KiB
PHP
Executable File
<?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'
|
|
]);
|
|
}
|
|
}
|