first commit
This commit is contained in:
90
RS_system/Views/Permiso/Create.cshtml
Normal file
90
RS_system/Views/Permiso/Create.cshtml
Normal file
@@ -0,0 +1,90 @@
|
||||
@model Rs_system.Models.Permiso
|
||||
|
||||
@{
|
||||
ViewData["Title"] = "Nueva Opción de Menú";
|
||||
}
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||||
<div>
|
||||
<h4 class="mb-1">Nueva Opción de Menú</h4>
|
||||
<p class="text-muted mb-0">Crear un nuevo permiso o menú</p>
|
||||
</div>
|
||||
<a asp-action="Index" class="btn btn-outline-secondary">
|
||||
<i class="bi bi-arrow-left me-1"></i> Volver
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card-custom">
|
||||
<form asp-action="Create">
|
||||
<div asp-validation-summary="ModelOnly" class="text-danger mb-3"></div>
|
||||
|
||||
<div class="row g-3">
|
||||
<div class="col-md-6">
|
||||
<label asp-for="ModuloId" class="form-label">Módulo (Sección)</label>
|
||||
<select asp-for="ModuloId" class="form-select"
|
||||
asp-items="@(new SelectList(ViewBag.Modulos, "Id", "Nombre"))">
|
||||
<option value="">-- Seleccione un Módulo --</option>
|
||||
</select>
|
||||
<span asp-validation-for="ModuloId" class="text-danger small"></span>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label asp-for="Codigo" class="form-label">Código Único (Controlador)</label>
|
||||
<input asp-for="Codigo" class="form-control" placeholder="Ej: Expediente" />
|
||||
<span asp-validation-for="Codigo" class="text-danger small"></span>
|
||||
</div>
|
||||
|
||||
<div class="col-md-8">
|
||||
<label asp-for="Nombre" class="form-label">Nombre en Menú</label>
|
||||
<input asp-for="Nombre" class="form-control" placeholder="Ej: Expedientes" />
|
||||
<span asp-validation-for="Nombre" class="text-danger small"></span>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<label asp-for="Orden" class="form-label">Orden</label>
|
||||
<input asp-for="Orden" class="form-control" type="number" />
|
||||
<span asp-validation-for="Orden" class="text-danger small"></span>
|
||||
</div>
|
||||
|
||||
<div class="col-md-8">
|
||||
<label asp-for="Url" class="form-label">Ruta (URL)</label>
|
||||
<input asp-for="Url" class="form-control" placeholder="Ej: /Expediente/Index" />
|
||||
<span asp-validation-for="Url" class="text-danger small"></span>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<label asp-for="Icono" class="form-label">Icono (Bootstrap Icons)</label>
|
||||
<input asp-for="Icono" class="form-control" placeholder="Ej: bi-folder" />
|
||||
<span asp-validation-for="Icono" class="text-danger small"></span>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<div class="form-check form-switch">
|
||||
<input class="form-check-input" type="checkbox" asp-for="EsMenu">
|
||||
<label class="form-check-label" asp-for="EsMenu">Mostrar en el menú lateral</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<label asp-for="Descripcion" class="form-label">Descripción</label>
|
||||
<textarea asp-for="Descripcion" class="form-control" rows="2"></textarea>
|
||||
<span asp-validation-for="Descripcion" class="text-danger small"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-4 text-end">
|
||||
<a asp-action="Index" class="btn btn-outline-secondary me-2">Cancelar</a>
|
||||
<button type="submit" class="btn btn-primary-custom px-4">
|
||||
<i class="bi bi-save me-2"></i> Guardar Opción
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
91
RS_system/Views/Permiso/Edit.cshtml
Normal file
91
RS_system/Views/Permiso/Edit.cshtml
Normal file
@@ -0,0 +1,91 @@
|
||||
@model Rs_system.Models.Permiso
|
||||
|
||||
@{
|
||||
ViewData["Title"] = "Editar Opción de Menú";
|
||||
}
|
||||
|
||||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||||
<div>
|
||||
<h4 class="mb-1">Editar Opción de Menú</h4>
|
||||
<p class="text-muted mb-0">Modificar permiso existente</p>
|
||||
</div>
|
||||
<a asp-action="Index" class="btn btn-outline-secondary">
|
||||
<i class="bi bi-arrow-left me-1"></i> Volver
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-8">
|
||||
<div class="card-custom">
|
||||
<form asp-action="Edit">
|
||||
<input type="hidden" asp-for="Id" />
|
||||
<div asp-validation-summary="ModelOnly" class="text-danger mb-3"></div>
|
||||
|
||||
<div class="row g-3">
|
||||
<div class="col-md-6">
|
||||
<label asp-for="ModuloId" class="form-label">Módulo (Sección)</label>
|
||||
<select asp-for="ModuloId" class="form-select"
|
||||
asp-items="@(new SelectList(ViewBag.Modulos, "Id", "Nombre"))">
|
||||
<option value="">-- Seleccione un Módulo --</option>
|
||||
</select>
|
||||
<span asp-validation-for="ModuloId" class="text-danger small"></span>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label asp-for="Codigo" class="form-label">Código Único</label>
|
||||
<input asp-for="Codigo" class="form-control" readonly />
|
||||
<span asp-validation-for="Codigo" class="text-danger small"></span>
|
||||
</div>
|
||||
|
||||
<div class="col-md-8">
|
||||
<label asp-for="Nombre" class="form-label">Nombre en Menú</label>
|
||||
<input asp-for="Nombre" class="form-control" />
|
||||
<span asp-validation-for="Nombre" class="text-danger small"></span>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<label asp-for="Orden" class="form-label">Orden</label>
|
||||
<input asp-for="Orden" class="form-control" type="number" />
|
||||
<span asp-validation-for="Orden" class="text-danger small"></span>
|
||||
</div>
|
||||
|
||||
<div class="col-md-8">
|
||||
<label asp-for="Url" class="form-label">Ruta (URL)</label>
|
||||
<input asp-for="Url" class="form-control" />
|
||||
<span asp-validation-for="Url" class="text-danger small"></span>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<label asp-for="Icono" class="form-label">Icono</label>
|
||||
<input asp-for="Icono" class="form-control" />
|
||||
<span asp-validation-for="Icono" class="text-danger small"></span>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<div class="form-check form-switch">
|
||||
<input class="form-check-input" type="checkbox" asp-for="EsMenu">
|
||||
<label class="form-check-label" asp-for="EsMenu">Mostrar en el menú lateral</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-12">
|
||||
<label asp-for="Descripcion" class="form-label">Descripción</label>
|
||||
<textarea asp-for="Descripcion" class="form-control" rows="2"></textarea>
|
||||
<span asp-validation-for="Descripcion" class="text-danger small"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-4 text-end">
|
||||
<a asp-action="Index" class="btn btn-outline-secondary me-2">Cancelar</a>
|
||||
<button type="submit" class="btn btn-primary-custom px-4">
|
||||
<i class="bi bi-save me-2"></i> Guardar Cambios
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@section Scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
96
RS_system/Views/Permiso/Index.cshtml
Normal file
96
RS_system/Views/Permiso/Index.cshtml
Normal file
@@ -0,0 +1,96 @@
|
||||
@model IEnumerable<Rs_system.Models.Permiso>
|
||||
|
||||
@{
|
||||
ViewData["Title"] = "Gestión de Menú y Permisos";
|
||||
}
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||||
<div>
|
||||
<h4 class="mb-1">Gestión de Menú y Permisos</h4>
|
||||
<p class="text-muted mb-0">Administración de opciones del sistema</p>
|
||||
</div>
|
||||
<a asp-action="Create" class="btn btn-primary-custom">
|
||||
<i class="bi bi-plus-lg me-1"></i> Nueva Opción
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@if (TempData["ErrorMessage"] != null)
|
||||
{
|
||||
<div class="alert alert-danger alert-dismissible fade show" role="alert">
|
||||
<i class="bi bi-exclamation-triangle-fill me-2"></i> @TempData["ErrorMessage"]
|
||||
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="card-custom">
|
||||
<div class="table-responsive">
|
||||
<table class="table-custom">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Módulo</th>
|
||||
<th>Orden</th>
|
||||
<th>Nombre</th>
|
||||
<th>Ruta (URL)</th>
|
||||
<th>Icono</th>
|
||||
<th class="text-center">Es Menú</th>
|
||||
<th class="text-center">Acciones</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var item in Model)
|
||||
{
|
||||
<tr>
|
||||
<td>
|
||||
<span class="badge bg-info text-dark">
|
||||
<i class="bi @item.Modulo?.Icono me-1"></i>
|
||||
@(item.Modulo?.Nombre ?? "Sin Módulo")
|
||||
</span>
|
||||
</td>
|
||||
<td><span class="badge bg-secondary">@item.Orden</span></td>
|
||||
<td class="fw-bold">@item.Nombre</td>
|
||||
<td class="font-monospace small">@item.Url</td>
|
||||
<td><i class="bi @item.Icono me-2"></i>@item.Icono</td>
|
||||
<td class="text-center">
|
||||
@if (item.EsMenu)
|
||||
{
|
||||
<span class="text-success"><i class="bi bi-check-circle-fill"></i></span>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="text-muted"><i class="bi bi-x-circle"></i></span>
|
||||
}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<div class="btn-group btn-group-sm">
|
||||
<a asp-action="Edit" asp-route-id="@item.Id" class="btn btn-outline-primary" title="Editar">
|
||||
<i class="bi bi-pencil"></i>
|
||||
</a>
|
||||
<button type="button" class="btn btn-outline-danger" title="Eliminar"
|
||||
onclick="confirmDelete(@item.Id, '@item.Nombre')">
|
||||
<i class="bi bi-trash"></i>
|
||||
</button>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form id="deleteForm" asp-action="Delete" method="post" style="display:none;">
|
||||
<input type="hidden" name="id" id="deleteId" />
|
||||
</form>
|
||||
|
||||
@section Scripts {
|
||||
<script>
|
||||
function confirmDelete(id, name) {
|
||||
if (confirm(`¿Está seguro de que desea eliminar "${name}"?`)) {
|
||||
document.getElementById('deleteId').value = id;
|
||||
document.getElementById('deleteForm').submit();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
}
|
||||
Reference in New Issue
Block a user