F2 avanzada
This commit is contained in:
@@ -67,7 +67,7 @@ namespace vita_asistente.Controllers
|
||||
|
||||
// GET: /Account/Login
|
||||
[HttpGet]
|
||||
public IActionResult Login(string returnUrl = null)
|
||||
public IActionResult Login(string? returnUrl = null)
|
||||
{
|
||||
ViewData["ReturnUrl"] = returnUrl;
|
||||
return View();
|
||||
@@ -76,7 +76,7 @@ namespace vita_asistente.Controllers
|
||||
// POST: /Account/Login
|
||||
[HttpPost]
|
||||
[ValidateAntiForgeryToken]
|
||||
public async Task<IActionResult> Login(LoginViewModel model, string returnUrl = null)
|
||||
public async Task<IActionResult> Login(LoginViewModel model, string? returnUrl = null)
|
||||
{
|
||||
ViewData["ReturnUrl"] = returnUrl;
|
||||
|
||||
@@ -90,7 +90,7 @@ namespace vita_asistente.Controllers
|
||||
|
||||
if (result.Succeeded)
|
||||
{
|
||||
return RedirectToLocal(returnUrl);
|
||||
return RedirectToLocal(!string.IsNullOrEmpty(returnUrl) ? returnUrl : string.Empty);
|
||||
}
|
||||
if (result.RequiresTwoFactor)
|
||||
{
|
||||
@@ -143,7 +143,7 @@ namespace vita_asistente.Controllers
|
||||
|
||||
// GET: /Account/LoginWith2fa (opcional)
|
||||
[HttpGet]
|
||||
public IActionResult LoginWith2fa(bool rememberMe, string returnUrl = null)
|
||||
public IActionResult LoginWith2fa(bool rememberMe, string? returnUrl = null)
|
||||
{
|
||||
// Implementar si se usa 2FA
|
||||
return View();
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using vita_asistente.Data;
|
||||
using vita_asistente.Data.Models;
|
||||
|
||||
namespace vita_asistente.Controllers
|
||||
{
|
||||
[Authorize]
|
||||
public class PacientesController : Controller
|
||||
{
|
||||
private readonly ApplicationDbContext _context;
|
||||
|
||||
public PacientesController(ApplicationDbContext context)
|
||||
{
|
||||
_context = context;
|
||||
}
|
||||
|
||||
// GET: Pacientes
|
||||
public async Task<IActionResult> Index(string nombreBusqueda)
|
||||
{
|
||||
var pacientes = _context.Pacientes.AsNoTracking();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(nombreBusqueda))
|
||||
{
|
||||
pacientes = pacientes.Where(p =>
|
||||
(p.Nombre + " " + p.Apellido).Contains(nombreBusqueda.Trim()) ||
|
||||
p.Documento.Contains(nombreBusqueda.Trim()));
|
||||
}
|
||||
|
||||
ViewBag.NombreBusqueda = nombreBusqueda;
|
||||
return View(await pacientes.OrderByDescending(p => p.FechaRegistro).ToListAsync());
|
||||
}
|
||||
|
||||
// GET: Pacientes/Details/5
|
||||
public async Task<IActionResult> Details(string id)
|
||||
{
|
||||
if (id == null) return NotFound();
|
||||
var paciente = await _context.Pacientes.FindAsync(id);
|
||||
if (paciente == null) return NotFound();
|
||||
return View(paciente);
|
||||
}
|
||||
|
||||
// POST: Pacientes/Activate/5
|
||||
[HttpPost]
|
||||
[Authorize(Roles = "Admin")]
|
||||
[ValidateAntiForgeryToken]
|
||||
public async Task<IActionResult> Activate(string id)
|
||||
{
|
||||
var paciente = await _context.Pacientes.FindAsync(id);
|
||||
if (paciente == null) return NotFound();
|
||||
|
||||
paciente.IsActive = true;
|
||||
_context.Pacientes.Update(paciente);
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
return RedirectToAction(nameof(Index));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -117,7 +117,7 @@ namespace vita_asistente.Controllers
|
||||
// Pero primero verificamos si tiene usuarios asignados
|
||||
using var scope = HttpContext.RequestServices.CreateScope();
|
||||
var userManager = scope.ServiceProvider.GetRequiredService<UserManager<ApplicationUser>>();
|
||||
var usersInRole = await userManager.GetUsersInRoleAsync(role.Name);
|
||||
var usersInRole = await userManager.GetUsersInRoleAsync(role.Name ?? string.Empty);
|
||||
|
||||
if (usersInRole.Any())
|
||||
{
|
||||
@@ -157,7 +157,7 @@ namespace vita_asistente.Controllers
|
||||
// Verificar que no tenga usuarios asignados
|
||||
using var scope = HttpContext.RequestServices.CreateScope();
|
||||
var userManager = scope.ServiceProvider.GetRequiredService<UserManager<ApplicationUser>>();
|
||||
var usersInRole = await userManager.GetUsersInRoleAsync(role.Name);
|
||||
var usersInRole = await userManager.GetUsersInRoleAsync(role.Name ?? string.Empty);
|
||||
|
||||
if (usersInRole.Any())
|
||||
{
|
||||
|
||||
@@ -167,8 +167,8 @@ namespace vita_asistente.Controllers
|
||||
RolesDisponibles = todosLosRoles.Select(r => new RoleCheckbox
|
||||
{
|
||||
RoleId = r.Id,
|
||||
RoleName = r.Name,
|
||||
IsSelected = rolesDelUsuario.Contains(r.Name)
|
||||
RoleName = r.Name ?? string.Empty,
|
||||
IsSelected = rolesDelUsuario.Contains(r.Name ?? string.Empty)
|
||||
}).ToList()
|
||||
};
|
||||
return View(model);
|
||||
@@ -183,7 +183,7 @@ namespace vita_asistente.Controllers
|
||||
if (usuario == null) return NotFound();
|
||||
|
||||
var rolesDelUsuario = await _userManager.GetRolesAsync(usuario);
|
||||
var rolesSeleccionados = model.RolesDisponibles.Where(r => r.IsSelected).Select(r => r.RoleName).ToList();
|
||||
var rolesSeleccionados = model.RolesDisponibles.Where(r => r.IsSelected).Where(r => !string.IsNullOrEmpty(r.RoleName)).Select(r => r.RoleName).ToList();
|
||||
|
||||
// Remover roles que ya no están seleccionados
|
||||
var rolesAEliminar = rolesDelUsuario.Except(rolesSeleccionados).ToList();
|
||||
@@ -206,15 +206,15 @@ namespace vita_asistente.Controllers
|
||||
// ViewModels para la gestión de roles (dentro del mismo archivo por simplicidad)
|
||||
public class ManageRolesViewModel
|
||||
{
|
||||
public string UsuarioId { get; set; }
|
||||
public string UsuarioNombre { get; set; }
|
||||
public List<RoleCheckbox> RolesDisponibles { get; set; }
|
||||
public required string UsuarioId { get; set; }
|
||||
public required string UsuarioNombre { get; set; }
|
||||
public required List<RoleCheckbox> RolesDisponibles { get; set; }
|
||||
}
|
||||
|
||||
public class RoleCheckbox
|
||||
public class RoleCheckbox
|
||||
{
|
||||
public string RoleId { get; set; }
|
||||
public string RoleName { get; set; }
|
||||
public required string RoleId { get; set; }
|
||||
public required string RoleName { get; set; }
|
||||
public bool IsSelected { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using vita_asistente.Data.Models;
|
||||
using vita_asistente.Models;
|
||||
|
||||
namespace vita_asistente.Data
|
||||
@@ -10,5 +11,18 @@ namespace vita_asistente.Data
|
||||
: base(options)
|
||||
{
|
||||
}
|
||||
|
||||
// DbSet for Paciente model
|
||||
public DbSet<Paciente> Pacientes { get; set; }
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder builder)
|
||||
{
|
||||
base.OnModelCreating(builder);
|
||||
|
||||
builder.Entity<ApplicationUser>().ToTable("AspNetUsers");
|
||||
builder.Entity<Paciente>()
|
||||
.ToTable("Pacientes")
|
||||
.HasBaseType<ApplicationUser>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using vita_asistente.Models;
|
||||
|
||||
namespace vita_asistente.Data.Models
|
||||
{
|
||||
public class Paciente : ApplicationUser
|
||||
{
|
||||
[StringLength(100)]
|
||||
public string NombreContactoEmergencia { get; set; } = string.Empty;
|
||||
|
||||
[StringLength(50)]
|
||||
public string TelefonoContactoEmergencia { get; set; } = string.Empty;
|
||||
|
||||
[StringLength(50)]
|
||||
public string TipoSangre { get; set; } = string.Empty;
|
||||
|
||||
public bool TieneAlergiasMedicamentosas { get; set; }
|
||||
|
||||
[StringLength(500)]
|
||||
public string AlergiasDescripcion { get; set; } = string.Empty;
|
||||
|
||||
public DateTime FechaRegistro { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Indicates whether the patient account is active and can log in
|
||||
/// </summary>
|
||||
public bool IsActive { get; set; } = true; // Default to active
|
||||
}
|
||||
}
|
||||
+45
-1
@@ -12,7 +12,7 @@ using vita_asistente.Data;
|
||||
namespace vita_asistente.Migrations
|
||||
{
|
||||
[DbContext(typeof(ApplicationDbContext))]
|
||||
[Migration("20260810173940_InitialCreate")]
|
||||
[Migration("20260811005032_InitialCreate")]
|
||||
partial class InitialCreate
|
||||
{
|
||||
/// <inheritdoc />
|
||||
@@ -239,6 +239,41 @@ namespace vita_asistente.Migrations
|
||||
.HasDatabaseName("UserNameIndex");
|
||||
|
||||
b.ToTable("AspNetUsers", (string)null);
|
||||
|
||||
b.UseTptMappingStrategy();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("vita_asistente.Data.Models.Paciente", b =>
|
||||
{
|
||||
b.HasBaseType("vita_asistente.Models.ApplicationUser");
|
||||
|
||||
b.Property<string>("AlergiasDescripcion")
|
||||
.IsRequired()
|
||||
.HasMaxLength(500)
|
||||
.HasColumnType("varchar(500)");
|
||||
|
||||
b.Property<DateTime>("FechaRegistro")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<string>("NombreContactoEmergencia")
|
||||
.IsRequired()
|
||||
.HasMaxLength(100)
|
||||
.HasColumnType("varchar(100)");
|
||||
|
||||
b.Property<string>("TelefonoContactoEmergencia")
|
||||
.IsRequired()
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)");
|
||||
|
||||
b.Property<bool>("TieneAlergiasMedicamentosas")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<string>("TipoSangre")
|
||||
.IsRequired()
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)");
|
||||
|
||||
b.ToTable("Pacientes", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
|
||||
@@ -291,6 +326,15 @@ namespace vita_asistente.Migrations
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("vita_asistente.Data.Models.Paciente", b =>
|
||||
{
|
||||
b.HasOne("vita_asistente.Models.ApplicationUser", null)
|
||||
.WithOne()
|
||||
.HasForeignKey("vita_asistente.Data.Models.Paciente", "Id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
+32
@@ -206,6 +206,35 @@ namespace vita_asistente.Migrations
|
||||
})
|
||||
.Annotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "Pacientes",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<string>(type: "varchar(255)", nullable: false)
|
||||
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||
NombreContactoEmergencia = table.Column<string>(type: "varchar(100)", maxLength: 100, nullable: false)
|
||||
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||
TelefonoContactoEmergencia = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
|
||||
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||
TipoSangre = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
|
||||
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||
TieneAlergiasMedicamentosas = table.Column<bool>(type: "tinyint(1)", nullable: false),
|
||||
AlergiasDescripcion = table.Column<string>(type: "varchar(500)", maxLength: 500, nullable: false)
|
||||
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||
FechaRegistro = table.Column<DateTime>(type: "datetime(6)", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_Pacientes", x => x.Id);
|
||||
table.ForeignKey(
|
||||
name: "FK_Pacientes_AspNetUsers_Id",
|
||||
column: x => x.Id,
|
||||
principalTable: "AspNetUsers",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
})
|
||||
.Annotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_AspNetRoleClaims_RoleId",
|
||||
table: "AspNetRoleClaims",
|
||||
@@ -262,6 +291,9 @@ namespace vita_asistente.Migrations
|
||||
migrationBuilder.DropTable(
|
||||
name: "AspNetUserTokens");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "Pacientes");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "AspNetRoles");
|
||||
|
||||
@@ -0,0 +1,344 @@
|
||||
// <auto-generated />
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Metadata;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
using vita_asistente.Data;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace vita_asistente.Migrations
|
||||
{
|
||||
[DbContext(typeof(ApplicationDbContext))]
|
||||
[Migration("20260811012627_AddIsActiveColumnToPacientes")]
|
||||
partial class AddIsActiveColumnToPacientes
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "8.0.29")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 64);
|
||||
|
||||
MySqlModelBuilderExtensions.AutoIncrementColumns(modelBuilder);
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRole", b =>
|
||||
{
|
||||
b.Property<string>("Id")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("ConcurrencyStamp")
|
||||
.IsConcurrencyToken()
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("varchar(256)");
|
||||
|
||||
b.Property<string>("NormalizedName")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("varchar(256)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("NormalizedName")
|
||||
.IsUnique()
|
||||
.HasDatabaseName("RoleNameIndex");
|
||||
|
||||
b.ToTable("AspNetRoles", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<string>("ClaimType")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("ClaimValue")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("RoleId")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("RoleId");
|
||||
|
||||
b.ToTable("AspNetRoleClaims", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
MySqlPropertyBuilderExtensions.UseMySqlIdentityColumn(b.Property<int>("Id"));
|
||||
|
||||
b.Property<string>("ClaimType")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("ClaimValue")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("UserId")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("UserId");
|
||||
|
||||
b.ToTable("AspNetUserClaims", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
|
||||
{
|
||||
b.Property<string>("LoginProvider")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("ProviderKey")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("ProviderDisplayName")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("UserId")
|
||||
.IsRequired()
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.HasKey("LoginProvider", "ProviderKey");
|
||||
|
||||
b.HasIndex("UserId");
|
||||
|
||||
b.ToTable("AspNetUserLogins", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
|
||||
{
|
||||
b.Property<string>("UserId")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("RoleId")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.HasKey("UserId", "RoleId");
|
||||
|
||||
b.HasIndex("RoleId");
|
||||
|
||||
b.ToTable("AspNetUserRoles", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
|
||||
{
|
||||
b.Property<string>("UserId")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("LoginProvider")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<string>("Value")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.HasKey("UserId", "LoginProvider", "Name");
|
||||
|
||||
b.ToTable("AspNetUserTokens", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("vita_asistente.Models.ApplicationUser", b =>
|
||||
{
|
||||
b.Property<string>("Id")
|
||||
.HasColumnType("varchar(255)");
|
||||
|
||||
b.Property<int>("AccessFailedCount")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("Apellido")
|
||||
.IsRequired()
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("ConcurrencyStamp")
|
||||
.IsConcurrencyToken()
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("Direccion")
|
||||
.IsRequired()
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("Documento")
|
||||
.IsRequired()
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("Email")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("varchar(256)");
|
||||
|
||||
b.Property<bool>("EmailConfirmed")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<bool>("LockoutEnabled")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<DateTimeOffset?>("LockoutEnd")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<string>("Nombre")
|
||||
.IsRequired()
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("NormalizedEmail")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("varchar(256)");
|
||||
|
||||
b.Property<string>("NormalizedUserName")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("varchar(256)");
|
||||
|
||||
b.Property<string>("PasswordHash")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("PhoneNumber")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<bool>("PhoneNumberConfirmed")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<string>("RolPrincipal")
|
||||
.IsRequired()
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<string>("SecurityStamp")
|
||||
.HasColumnType("longtext");
|
||||
|
||||
b.Property<bool>("TwoFactorEnabled")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<string>("UserName")
|
||||
.HasMaxLength(256)
|
||||
.HasColumnType("varchar(256)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("NormalizedEmail")
|
||||
.HasDatabaseName("EmailIndex");
|
||||
|
||||
b.HasIndex("NormalizedUserName")
|
||||
.IsUnique()
|
||||
.HasDatabaseName("UserNameIndex");
|
||||
|
||||
b.ToTable("AspNetUsers", (string)null);
|
||||
|
||||
b.UseTptMappingStrategy();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("vita_asistente.Data.Models.Paciente", b =>
|
||||
{
|
||||
b.HasBaseType("vita_asistente.Models.ApplicationUser");
|
||||
|
||||
b.Property<string>("AlergiasDescripcion")
|
||||
.IsRequired()
|
||||
.HasMaxLength(500)
|
||||
.HasColumnType("varchar(500)");
|
||||
|
||||
b.Property<DateTime>("FechaRegistro")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<bool>("IsActive")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<string>("NombreContactoEmergencia")
|
||||
.IsRequired()
|
||||
.HasMaxLength(100)
|
||||
.HasColumnType("varchar(100)");
|
||||
|
||||
b.Property<string>("TelefonoContactoEmergencia")
|
||||
.IsRequired()
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)");
|
||||
|
||||
b.Property<bool>("TieneAlergiasMedicamentosas")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<string>("TipoSangre")
|
||||
.IsRequired()
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)");
|
||||
|
||||
b.ToTable("Pacientes", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
|
||||
{
|
||||
b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("RoleId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserClaim<string>", b =>
|
||||
{
|
||||
b.HasOne("vita_asistente.Models.ApplicationUser", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("UserId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserLogin<string>", b =>
|
||||
{
|
||||
b.HasOne("vita_asistente.Models.ApplicationUser", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("UserId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserRole<string>", b =>
|
||||
{
|
||||
b.HasOne("Microsoft.AspNetCore.Identity.IdentityRole", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("RoleId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("vita_asistente.Models.ApplicationUser", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("UserId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityUserToken<string>", b =>
|
||||
{
|
||||
b.HasOne("vita_asistente.Models.ApplicationUser", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("UserId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("vita_asistente.Data.Models.Paciente", b =>
|
||||
{
|
||||
b.HasOne("vita_asistente.Models.ApplicationUser", null)
|
||||
.WithOne()
|
||||
.HasForeignKey("vita_asistente.Data.Models.Paciente", "Id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace vita_asistente.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class AddIsActiveColumnToPacientes : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AddColumn<bool>(
|
||||
name: "IsActive",
|
||||
table: "Pacientes",
|
||||
type: "tinyint(1)",
|
||||
nullable: false,
|
||||
defaultValue: false);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropColumn(
|
||||
name: "IsActive",
|
||||
table: "Pacientes");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -236,6 +236,44 @@ namespace vita_asistente.Migrations
|
||||
.HasDatabaseName("UserNameIndex");
|
||||
|
||||
b.ToTable("AspNetUsers", (string)null);
|
||||
|
||||
b.UseTptMappingStrategy();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("vita_asistente.Data.Models.Paciente", b =>
|
||||
{
|
||||
b.HasBaseType("vita_asistente.Models.ApplicationUser");
|
||||
|
||||
b.Property<string>("AlergiasDescripcion")
|
||||
.IsRequired()
|
||||
.HasMaxLength(500)
|
||||
.HasColumnType("varchar(500)");
|
||||
|
||||
b.Property<DateTime>("FechaRegistro")
|
||||
.HasColumnType("datetime(6)");
|
||||
|
||||
b.Property<bool>("IsActive")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<string>("NombreContactoEmergencia")
|
||||
.IsRequired()
|
||||
.HasMaxLength(100)
|
||||
.HasColumnType("varchar(100)");
|
||||
|
||||
b.Property<string>("TelefonoContactoEmergencia")
|
||||
.IsRequired()
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)");
|
||||
|
||||
b.Property<bool>("TieneAlergiasMedicamentosas")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<string>("TipoSangre")
|
||||
.IsRequired()
|
||||
.HasMaxLength(50)
|
||||
.HasColumnType("varchar(50)");
|
||||
|
||||
b.ToTable("Pacientes", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("Microsoft.AspNetCore.Identity.IdentityRoleClaim<string>", b =>
|
||||
@@ -288,6 +326,15 @@ namespace vita_asistente.Migrations
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity("vita_asistente.Data.Models.Paciente", b =>
|
||||
{
|
||||
b.HasOne("vita_asistente.Models.ApplicationUser", null)
|
||||
.WithOne()
|
||||
.HasForeignKey("vita_asistente.Data.Models.Paciente", "Id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,12 +7,12 @@ namespace vita_asistente.ViewModels
|
||||
[Required]
|
||||
[EmailAddress]
|
||||
[Display(Name = "Correo electrónico")]
|
||||
public string Email { get; set; }
|
||||
public required string Email { get; set; }
|
||||
|
||||
[Required]
|
||||
[DataType(DataType.Password)]
|
||||
[Display(Name = "Contraseña")]
|
||||
public string Password { get; set; }
|
||||
public required string Password { get; set; }
|
||||
|
||||
[Display(Name = "Recordarme")]
|
||||
public bool RememberMe { get; set; }
|
||||
|
||||
@@ -6,37 +6,37 @@ namespace vita_asistente.ViewModels
|
||||
{
|
||||
[Required]
|
||||
[Display(Name = "Nombre")]
|
||||
public string Nombre { get; set; }
|
||||
public required string Nombre { get; set; }
|
||||
|
||||
[Required]
|
||||
[Display(Name = "Apellido")]
|
||||
public string Apellido { get; set; }
|
||||
public required string Apellido { get; set; }
|
||||
|
||||
[Required]
|
||||
[Display(Name = "Documento")]
|
||||
public string Documento { get; set; }
|
||||
public required string Documento { get; set; }
|
||||
|
||||
[Required]
|
||||
[Display(Name = "Dirección")]
|
||||
public string Direccion { get; set; }
|
||||
public required string Direccion { get; set; }
|
||||
|
||||
[Required]
|
||||
[Display(Name = "Teléfono")]
|
||||
public string Telefono { get; set; } // puedes usar PhoneNumber de Identity también
|
||||
public required string Telefono { get; set; } // puedes usar PhoneNumber de Identity también
|
||||
|
||||
[Required]
|
||||
[EmailAddress]
|
||||
[Display(Name = "Correo electrónico")]
|
||||
public string Email { get; set; }
|
||||
public required string Email { get; set; }
|
||||
|
||||
[Required]
|
||||
[DataType(DataType.Password)]
|
||||
[Display(Name = "Contraseña")]
|
||||
public string Password { get; set; }
|
||||
public required string Password { get; set; }
|
||||
|
||||
[DataType(DataType.Password)]
|
||||
[Display(Name = "Confirmar contraseña")]
|
||||
[Compare("Password", ErrorMessage = "Las contraseñas no coinciden")]
|
||||
public string ConfirmPassword { get; set; }
|
||||
public required string ConfirmPassword { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,88 @@
|
||||
@model List<vita_asistente.Data.Models.Paciente>
|
||||
|
||||
@{
|
||||
ViewData["Title"] = "Pacientes";
|
||||
Layout = "_Layout";
|
||||
}
|
||||
|
||||
<div class="container mt-4">
|
||||
<h2>Lista de Pacientes</h2>
|
||||
|
||||
@if (User.IsInRole("Admin"))
|
||||
{
|
||||
<a asp-action="Create" class="btn btn-success mb-3">Nuevo Paciente</a>
|
||||
}
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<form asp-action="Index" method="get" class="row g-3 mb-4">
|
||||
<div class="col-md-5">
|
||||
<label for="nombreBusqueda" class="form-label">Nombre o Documento</label>
|
||||
<input type="text" class="form-control" id="nombreBusqueda" name="nombreBusqueda"
|
||||
placeholder="Buscar por nombre o documento..." value="@ViewBag.NombreBusqueda">
|
||||
</div>
|
||||
<div class="col-md-2 d-flex align-items-end">
|
||||
<button type="submit" class="btn btn-primary me-3">Buscar</button>
|
||||
@if (!string.IsNullOrEmpty(ViewBag.NombreBusqueda))
|
||||
{
|
||||
<a asp-action="Index" class="btn btn-outline-secondary">Limpiar</a>
|
||||
}
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<table class="table table-striped">
|
||||
<thead class="table-dark">
|
||||
<tr>
|
||||
<th>Documento</th>
|
||||
<th>Nombre Completo</th>
|
||||
<th>Email</th>
|
||||
<th>Fecha Registro</th>
|
||||
<th>Estado</th>
|
||||
<th>Acciones</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach (var paciente in Model)
|
||||
{
|
||||
<tr>
|
||||
<td>@Html.DisplayFor(modelItem => paciente.Documento)</td>
|
||||
<td>@Html.DisplayFor(modelItem => paciente.Nombre) @Html.DisplayFor(modelItem => paciente.Apellido)</td>
|
||||
<td>@Html.DisplayFor(modelItem => paciente.Email)</td>
|
||||
<td>@Html.DisplayFor(modelItem => paciente.FechaRegistro.ToShortDateString())</td>
|
||||
<td>
|
||||
@if (paciente.IsActive)
|
||||
{
|
||||
<span class="badge bg-success">Activo</span>
|
||||
}
|
||||
else
|
||||
{
|
||||
<span class="badge bg-danger">Inactivo</span>
|
||||
}
|
||||
</td>
|
||||
<td>
|
||||
@if (User.IsInRole("Admin") || (User.Identity != null && User.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier")?.Value == paciente.Id))
|
||||
{
|
||||
<a asp-action="Details" asp-route-id="@paciente.Id" class="btn btn-sm btn-info">Ver</a>
|
||||
@if (User.IsInRole("Admin"))
|
||||
{
|
||||
<a asp-action="Edit" asp-route-id="@paciente.Id" class="btn btn-sm btn-warning ms-1">Editar</a>
|
||||
@if (!paciente.IsActive)
|
||||
{
|
||||
<form asp-action="Activate" asp-route-id="@paciente.Id" class="d-inline">
|
||||
<button type="submit" class="btn btn-sm btn-success ms-1" onclick="return confirm('¿Activar este paciente?');">Activar</button>
|
||||
</form>
|
||||
}
|
||||
else
|
||||
{
|
||||
<a asp-action="Delete" asp-route-id="@paciente.Id" class="btn btn-sm btn-danger ms-1">Desactivar</a>
|
||||
}
|
||||
}
|
||||
}
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,3 +1,4 @@
|
||||
@using Microsoft.AspNetCore.Identity
|
||||
@model IdentityRole
|
||||
|
||||
@{
|
||||
@@ -16,3 +17,20 @@
|
||||
<a asp-action="Index" class="btn btn-secondary">Cancelar</a>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@{
|
||||
ViewData["Title"] = "Deshabilitar rol";
|
||||
}
|
||||
|
||||
<h1>Deshabilitar rol: @Model.Name</h1>
|
||||
|
||||
<p>¿Está seguro que desea deshabilitar este rol? Esto afectará a los usuarios con este rol.</p>
|
||||
|
||||
<form asp-action="DisableConfirmed" method="post">
|
||||
<input type="hidden" name="id" value="@Model.Id" />
|
||||
@Html.AntiForgeryToken()
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-warning">Deshabilitar rol</button>
|
||||
<a asp-action="Index" class="btn btn-secondary">Cancelar</a>
|
||||
</div>
|
||||
</form>
|
||||
@@ -1,3 +1,4 @@
|
||||
@using Microsoft.AspNetCore.Identity
|
||||
@model IdentityRole
|
||||
|
||||
@{
|
||||
@@ -22,3 +23,26 @@
|
||||
section scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
|
||||
@{
|
||||
ViewData["Title"] = "Editar rol";
|
||||
}
|
||||
|
||||
<h1>Editar rol: @Model.Name</h1>
|
||||
|
||||
<form asp-action="Edit">
|
||||
<input type="hidden" asp-for="Id" />
|
||||
<div class="form-group">
|
||||
<label asp-for="Name" class="control-label"></label>
|
||||
<input asp-for="Name" class="form-control" />
|
||||
<span asp-validation-for="Name" class="text-danger"></span>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input type="submit" value="Guardar cambios" class="btn btn-primary" />
|
||||
<a asp-action="Index" class="btn btn-secondary">Cancelar</a>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
section scripts {
|
||||
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
|
||||
}
|
||||
@@ -2,7 +2,30 @@
|
||||
@model IEnumerable<IdentityRole>
|
||||
|
||||
<h1>Roles</h1>
|
||||
<p><a asp-action="Create" class="btn btn-primary">Crear nuevo rol</a></p>
|
||||
|
||||
<!-- Modal de creación -->
|
||||
<div class="modal fade" id="createModal" tabindex="-1" aria-labelledby="createModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<form asp-action="Create" method="post">
|
||||
@Html.AntiForgeryToken()
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="createModalLabel">Crear nuevo rol</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<input name="roleName" class="form-control" placeholder="Nombre del rol" required />
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancelar</button>
|
||||
<button type="submit" class="btn btn-primary">Guardar cambios</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<p><a href="#" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#createModal">Crear nuevo rol</a></p>
|
||||
<table class="table">
|
||||
<thead><tr><th>Nombre</th><th>Acciones</th></tr></thead>
|
||||
<tbody>
|
||||
@@ -13,19 +36,19 @@
|
||||
<td>
|
||||
<a href="#" class="btn btn-info btn-sm" data-bs-toggle="modal" data-bs-target="#editModal-@role.Id">Editar</a>
|
||||
|
||||
<!-- Modal de edición -->
|
||||
<!-- Modal de edición -->
|
||||
<div class="modal fade" id="editModal-@role.Id" tabindex="-1" aria-labelledby="editModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<form asp-action="Edit" method="post">
|
||||
<input type="hidden" name="id" value="@role.Id" />
|
||||
@HttpContext.RequestServices.GetService typeof(Antiforgery.IAntiforgery)
|
||||
@Html.AntiForgeryToken()
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="editModalLabel">Editar rol: @role.Name</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<input asp-for="Name" class="form-control" placeholder="Nuevo nombre del rol" />
|
||||
<input name="Name" value="@role.Name" class="form-control" placeholder="Nuevo nombre del rol" />
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cerrar</button>
|
||||
|
||||
+51
-57
@@ -1,5 +1,9 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
@{
|
||||
var controller = ViewContext.RouteData.Values["controller"]?.ToString();
|
||||
}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="es">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
@@ -9,64 +13,54 @@
|
||||
<link rel="stylesheet" href="~/vita_asistente.styles.css" asp-append-version="true" />
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
|
||||
<div class="container-fluid">
|
||||
<a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">vita_asistente</a>
|
||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
|
||||
aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
|
||||
@if (User.IsInRole("Admin"))
|
||||
{
|
||||
<li class="nav-item dropdown">
|
||||
<a class="nav-link dropdown-toggle" href="#" id="adminDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
Administración
|
||||
</a>
|
||||
<ul class="dropdown-menu" aria-labelledby="adminDropdown">
|
||||
<li><a class="dropdown-item" asp-controller="Usuarios" asp-action="Index">Usuarios</a></li>
|
||||
<li><a class="dropdown-item" asp-controller="Roles" asp-action="Index">Roles</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
}
|
||||
<ul class="navbar-nav ms-auto">
|
||||
@if (User.Identity.IsAuthenticated)
|
||||
{
|
||||
<li class="nav-item">
|
||||
<span class="navbar-text">Hola, @User.Identity.Name!</span>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<form asp-controller="Account" asp-action="Logout" method="post" class="form-inline">
|
||||
<button type="submit" class="nav-link btn btn-link text-dark">Cerrar sesión</button>
|
||||
</form>
|
||||
</li>
|
||||
}
|
||||
else
|
||||
{
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-dark" asp-controller="Account" asp-action="Register">Registrarse</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link text-dark" asp-controller="Account" asp-action="Login">Iniciar sesión</a>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
<div class="app-wrapper">
|
||||
<aside class="sidebar">
|
||||
<a class="sidebar-brand" asp-area="" asp-controller="Home" asp-action="Index">vita_asistente</a>
|
||||
<nav class="sidebar-nav">
|
||||
<a class="nav-link @(controller == "Home" ? "active" : "")" asp-controller="Home" asp-action="Index">Inicio</a>
|
||||
|
||||
@if (User.IsInRole("Admin"))
|
||||
{
|
||||
<h6 class="sidebar-heading">Administración</h6>
|
||||
<a class="nav-link @(controller == "Usuarios" ? "active" : "")" asp-controller="Usuarios" asp-action="Index">Usuarios</a>
|
||||
<a class="nav-link @(controller == "Roles" ? "active" : "")" asp-controller="Roles" asp-action="Index">Roles</a>
|
||||
<a class="nav-link @(controller == "Pacientes" ? "active" : "")" asp-controller="Pacientes" asp-action="Index">Pacientes</a>
|
||||
}
|
||||
|
||||
@if (User.Identity?.IsAuthenticated ?? false)
|
||||
{
|
||||
<h6 class="sidebar-heading">Cuenta</h6>
|
||||
<a class="nav-link" asp-controller="Account" asp-action="Logout">Cerrar sesión</a>
|
||||
}
|
||||
else
|
||||
{
|
||||
<h6 class="sidebar-heading">Cuenta</h6>
|
||||
<a class="nav-link" asp-controller="Account" asp-action="Register">Registrarse</a>
|
||||
<a class="nav-link" asp-controller="Account" asp-action="Login">Iniciar sesión</a>
|
||||
}
|
||||
</nav>
|
||||
</aside>
|
||||
|
||||
<div class="main-content">
|
||||
<header class="topbar">
|
||||
@if (User.Identity?.IsAuthenticated ?? false)
|
||||
{
|
||||
<span class="navbar-text">Hola, @(User.Identity?.Name ?? "Usuario")!</span>
|
||||
}
|
||||
</header>
|
||||
|
||||
<main role="main" class="pb-3">
|
||||
@RenderBody()
|
||||
</main>
|
||||
|
||||
<footer class="border-top footer text-muted">
|
||||
<div class="container">
|
||||
© 2026 - vita_asistente - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacidad</a>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
<div class="container">
|
||||
<main role="main" class="pb-3">
|
||||
@RenderBody()
|
||||
</main>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<footer class="border-top footer text-muted">
|
||||
<div class="container">
|
||||
© 2026 - vita_asistente - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
|
||||
</div>
|
||||
</footer>
|
||||
<script src="~/lib/jquery/dist/jquery.min.js"></script>
|
||||
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="~/js/site.js" asp-append-version="true"></script>
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
@using Microsoft.AspNetCore.Authorization
|
||||
@using Microsoft.AspNetCore.Identity
|
||||
@inject SignInManager<ApplicationUser> SignInManager
|
||||
@inject UserManager<ApplicationUser> UserManager
|
||||
|
||||
<nav class="sidebar">
|
||||
<div class="sidebar-header d-flex align-items-center justify-content-between mb-4 px-3">
|
||||
<a class="text-decoration-none" asp-controller="Home" asp-action="Index">
|
||||
<span class="h5 fw-bold text-dark">VitaAsistente</span>
|
||||
</a>
|
||||
<button id="sidebarToggle" class="btn btn-sm p-0 ms-auto d-md-none" aria-label="Toggle sidebar">
|
||||
<i class="bi bi-list"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@if (SignInManager.IsSignedIn(User))
|
||||
{
|
||||
<div class="sidebar-user-info mb-4 px-3 pb-2 border-bottom d-flex align-items-center">
|
||||
<div class="flex-grow-1 text-truncate">
|
||||
<small class="text-muted">Hola,</small>
|
||||
<span class="d-block small fw-medium" title="@User.Identity?.Name ?? "Usuario"">@User.Identity?.Name ?? "Usuario"</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (User.IsInRole("Admin"))
|
||||
{
|
||||
<div class="sidebar-section pb-2 px-3">
|
||||
<h4 class="section-title mb-2">Administración</h4>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" asp-controller="Usuarios" asp-action="Index">
|
||||
<span class="me-2">👥</span> Gestión de Usuarios
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" asp-controller="Roles" asp-action="Index">
|
||||
<span class="me-2">📋</span> Gestión de Roles
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
}
|
||||
|
||||
@if (User.IsInRole("Admin") || User.IsInRole("Usuario"))
|
||||
{
|
||||
<div class="sidebar-section pb-2 px-3">
|
||||
<h4 class="section-title mb-2">Módulos Principales</h4>
|
||||
<ul class="nav flex-column">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" asp-controller="Home" asp-action="Index">
|
||||
<span class="me-2">🏠</span> Dashboard
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="p-4 text-center">
|
||||
<div class="mb-3">
|
||||
<i class="bi bi-person-circle" style="font-size: 2.5rem;"></i>
|
||||
</div>
|
||||
<a href="/" class="btn btn-sm btn-outline-primary">Volver al inicio</a>
|
||||
</div>
|
||||
}
|
||||
|
||||
<form asp-controller="Account" asp-action="Logout" method="post" class="sidebar-footer p-3 border-top">
|
||||
@Html.AntiForgeryToken()
|
||||
@if (SignInManager.IsSignedIn(User))
|
||||
{
|
||||
<button type="submit" class="btn btn-sm btn-outline-danger w-100">Cerrar Sesión</button>
|
||||
}
|
||||
</form>
|
||||
</nav>
|
||||
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
const sidebar = document.querySelector('.sidebar');
|
||||
const toggleButton = document.getElementById('sidebarToggle');
|
||||
|
||||
if (toggleButton && sidebar) {
|
||||
toggleButton.addEventListener('click', function() {
|
||||
sidebar.classList.toggle('collapsed');
|
||||
// Update button icon based on state
|
||||
const icon = toggleButton.querySelector('i');
|
||||
if (sidebar.classList.contains('collapsed')) {
|
||||
icon.className = 'bi bi-arrow-bar-right';
|
||||
} else {
|
||||
icon.className = 'bi bi-list';
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
</script>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
||||
{"GlobalPropertiesHash":"GOyYWGOmw2NuuVhp3tgpB/kw0XHSM1IZUmhItjXblmY=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"R7Rea/YQmcweqCbKffD9oUelggfpJQX85r65aYZsas0=","InputHashes":["RG7XWyUAviwxT7s7woy6mwrL/lb9kKaPHUZvJMBFzGQ=","sZk\u002BV7ywaxNJgwRE7cE7Hibt2qSdapA41/3b9UckIHQ=","wN\u002B6sU2WZBc4bJ\u002B7khSCkY4vayA4Jqrvpg913EeA9Ao=","hcbEX5wQXO7dZhO76Y/kLBldebvlWME732popbbEK4c=","FOA0og0bz7xxjI6FQUxXQt3OCeJ2bLYdqSUhoaFZJVM=","CtHssyrjZuXbFnCsg/Franori6EpIlyoyOO\u002BHJLUEzQ=","\u002B7orKp27fOxYH9\u002BLlTGZgBYToFGMLXynWDyr4Qp51TM=","XpoVGqHhsNmlmX/noSBP9h7opG25qiPqLHch\u002BXNQXAs=","VCycsFqTp\u002BRrQnRNd5LfNczQS4iEjpk99tWzotQbn1E=","AFojQcC7k2ydpiRHmOwvOd1dy1NwRofC7d58w2rmFME=","msG2BJNYahkfAeIGvlFtmUIvfi9LZYldZMs11JZTXMA=","17ULrvhzxhNOTwogVU6FEhenBi/kTipscM3Ov8gYSOk=","eWgmVTDJOjmhe8ejMSeIVzUYFnKk0quLHWUM5biPtUA=","YfJ0oK8j3WLqchRv3VwFlG8RrV0t\u002BYZ9KwvzKvN3b3U=","2b0ELLNbgEOaNaTEKqFCAwVFJpCjbeWuL7QDg45HQ\u002BQ=","7M4mraPdoBIVghR\u002BDDmtxDxAGvyiCW0w0Fa0Veeg\u002BJo=","ONSQHcz6MWjSUfu7ABZZBT6W\u002BfjIaXTvv6EdGwnGQX4=","Y15\u002BXM/VeJZHFMTHX2gOFrNXbKxt\u002Bdp3e3DikA117Vw=","ola1HFIuPFF5W\u002BWZ5iAwAcXZlGOYDpzJVPOJ0eZEG10=","Rz1qYEcy/7ETbVXMcSBqLI9GATo3MIRrqexeEFiMUY8=","eUTJYFbNdwVaL8JqNf19J3\u002BF23o7885AQxP6SXsfeWM=","Dhk2NwBbDfM2YU848LiWcIQeGdnoe/IFLpskGBaNZIc=","zvVdQ/HsTypZOzrQyV2RczwBjmxM7zUb3i93Tw7hZQ0=","xQn/oAuEAx9E/9xtXF3FmtKaxHBuuUu2WgNG9kfxu/A=","SjaCgIQT0Jx2cF24fkf5S3NHdR5pYGG4lQ11yBSKCIM=","2zw5oqhxosyvhjGECMEImzj99UMnO1hUHxGGLPxSkB4=","M0LCjiOI7TqJ9Njmar50/uvb/LDEJWRTh9J9tb8fodg=","Su1SMb8/HCN4qjL8s2w9C6sjwGtsWIzO/GIsO5Uhwbk=","Ol9gXhTvFMYo4KxVbf5OT2l7HiViRpK7stctnaXZigc=","3jaP2zi5MNIBhUJMvrzilmI3HY/Ao1JO/8d9ndYeSNo=","3SYR8yp/8aPqzlk9cCGkIFyRev4nMWxpYk8/\u002BFzc2MM=","unTMqSndIVD2Q82OOVv\u002BP6/4zwR2/LDk7njzNBI3\u002BEQ=","fHb3ZjPUD23Pwg6/bjEK9ZY6EX6DBaDXonSjXVl7AYE=","eKwjYk2zE\u002B2TTCQ/05Kviko//\u002BzhusOufTnaKebCQYc=","YEcN1Li2w3PQ5xFAILQfEN5ArWW4zYo1TnHhcgs45WY=","RVZR933agSfevE/gnmkTc1JZmEu5yi/hiRBh0rrAeyk=","scvW2iIZC32bgJ/RwSYPxvj3tnYh0DqX4J5als5SJpc=","jnmHPvAA\u002BnJOm9lEcDNEYrNpX74b1X26lSVb5Ti6VtU=","9MlRP8Uk14cS75RY2t0Pmx2kzNxk74K7wqLdvJsAnhw=","9hYee0YUplDQS3688ZgTWCWYEHEqmpkl3s\u002BDv1CNIaY=","7GaH1LWkvZVlGwd8KWu\u002Br4OAq/JDNlnZDBm7TUEDqYQ=","zUczkDj/GrsLhneNOa\u002BbJDVJFhbj01u901JOncDU3lY=","QXseDsczZisD\u002BVabnNl1/WbLJpTFx9KyYCGldUlD8Gw=","DX8oXpcqB1NjPTRi4sHWGul6yBGIcqdUrLYrdMASJUU=","Lx33F\u002BqvnGnw1kBYfJmiRqTSXbZkvmuf4gjsO\u002BK3uLU=","2d6zXj0AgUrMK/y\u002BWqb8LBEX5JTaev3972UIOW0Tg7U=","wbsrV5dCmltklCFPDVpZp0I\u002BlytYPDMEcla/pAZfefw=","YQSCbn9SqF9IBpkSUnEXTlCFi2/z4LgntidD4BrqrLc=","RG1fv5qx0sXG73vJ/XRab8r1/clvDsSxyOlh\u002BsYySXo=","OleENIUTsBYnmj9yppIvDXJygkAGZ2VeJjN/FVgdaQ8=","qfD541WeYOyPj6UjeTT9ALNgg1WTJoB\u002B6bHCEE9v1\u002B4=","bOODK8suWY0Dca1YomASTiCjx47Twhey1JnbMgplafo=","Jw/pVZ5ZuT6RLBBcRotTM1SHKZuaLYx2siLr8PBcjMA=","TC6r3M4wzXuO1b/sfyioLV597YK39YzOgXZdoZwB3F8=","I/RrNp5PXY1\u002B5oq2lpzq2FP2WW8R/Z6T1NcD6oRawM8=","9CKOOhMCVvHN\u002Bf/vIOg5Z/lp1v0kA8G\u002BCI5rJyndZLs=","QKg1cU\u002Bh3FL2MQJPQDiHmq53A83xoIaXpnKMN6tiRr8=","73ja2p/my\u002BPGBmOLm36G3YCalBzOlUxk2spum0YIzxg=","lmbypiyXqlXg7hG092wPLrExnQDmpEPq4M\u002BeeaWZDQE=","ig0Ll56p1CW0s\u002Bjh8Sl83f6VL9eWEvQMa64SzigT5VE="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||
{"GlobalPropertiesHash":"GOyYWGOmw2NuuVhp3tgpB/kw0XHSM1IZUmhItjXblmY=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"R7Rea/YQmcweqCbKffD9oUelggfpJQX85r65aYZsas0=","InputHashes":["7rvGSdx2fSpmeMt4jtYwa/cK4eZasB5DvEa1lUS7vKg=","sZk\u002BV7ywaxNJgwRE7cE7Hibt2qSdapA41/3b9UckIHQ=","wN\u002B6sU2WZBc4bJ\u002B7khSCkY4vayA4Jqrvpg913EeA9Ao=","hcbEX5wQXO7dZhO76Y/kLBldebvlWME732popbbEK4c=","FOA0og0bz7xxjI6FQUxXQt3OCeJ2bLYdqSUhoaFZJVM=","CtHssyrjZuXbFnCsg/Franori6EpIlyoyOO\u002BHJLUEzQ=","\u002B7orKp27fOxYH9\u002BLlTGZgBYToFGMLXynWDyr4Qp51TM=","XpoVGqHhsNmlmX/noSBP9h7opG25qiPqLHch\u002BXNQXAs=","VCycsFqTp\u002BRrQnRNd5LfNczQS4iEjpk99tWzotQbn1E=","AFojQcC7k2ydpiRHmOwvOd1dy1NwRofC7d58w2rmFME=","msG2BJNYahkfAeIGvlFtmUIvfi9LZYldZMs11JZTXMA=","17ULrvhzxhNOTwogVU6FEhenBi/kTipscM3Ov8gYSOk=","eWgmVTDJOjmhe8ejMSeIVzUYFnKk0quLHWUM5biPtUA=","YfJ0oK8j3WLqchRv3VwFlG8RrV0t\u002BYZ9KwvzKvN3b3U=","2b0ELLNbgEOaNaTEKqFCAwVFJpCjbeWuL7QDg45HQ\u002BQ=","7M4mraPdoBIVghR\u002BDDmtxDxAGvyiCW0w0Fa0Veeg\u002BJo=","ONSQHcz6MWjSUfu7ABZZBT6W\u002BfjIaXTvv6EdGwnGQX4=","Y15\u002BXM/VeJZHFMTHX2gOFrNXbKxt\u002Bdp3e3DikA117Vw=","ola1HFIuPFF5W\u002BWZ5iAwAcXZlGOYDpzJVPOJ0eZEG10=","Rz1qYEcy/7ETbVXMcSBqLI9GATo3MIRrqexeEFiMUY8=","eUTJYFbNdwVaL8JqNf19J3\u002BF23o7885AQxP6SXsfeWM=","Dhk2NwBbDfM2YU848LiWcIQeGdnoe/IFLpskGBaNZIc=","zvVdQ/HsTypZOzrQyV2RczwBjmxM7zUb3i93Tw7hZQ0=","xQn/oAuEAx9E/9xtXF3FmtKaxHBuuUu2WgNG9kfxu/A=","SjaCgIQT0Jx2cF24fkf5S3NHdR5pYGG4lQ11yBSKCIM=","2zw5oqhxosyvhjGECMEImzj99UMnO1hUHxGGLPxSkB4=","M0LCjiOI7TqJ9Njmar50/uvb/LDEJWRTh9J9tb8fodg=","Su1SMb8/HCN4qjL8s2w9C6sjwGtsWIzO/GIsO5Uhwbk=","Ol9gXhTvFMYo4KxVbf5OT2l7HiViRpK7stctnaXZigc=","3jaP2zi5MNIBhUJMvrzilmI3HY/Ao1JO/8d9ndYeSNo=","3SYR8yp/8aPqzlk9cCGkIFyRev4nMWxpYk8/\u002BFzc2MM=","unTMqSndIVD2Q82OOVv\u002BP6/4zwR2/LDk7njzNBI3\u002BEQ=","fHb3ZjPUD23Pwg6/bjEK9ZY6EX6DBaDXonSjXVl7AYE=","eKwjYk2zE\u002B2TTCQ/05Kviko//\u002BzhusOufTnaKebCQYc=","YEcN1Li2w3PQ5xFAILQfEN5ArWW4zYo1TnHhcgs45WY=","RVZR933agSfevE/gnmkTc1JZmEu5yi/hiRBh0rrAeyk=","scvW2iIZC32bgJ/RwSYPxvj3tnYh0DqX4J5als5SJpc=","jnmHPvAA\u002BnJOm9lEcDNEYrNpX74b1X26lSVb5Ti6VtU=","9MlRP8Uk14cS75RY2t0Pmx2kzNxk74K7wqLdvJsAnhw=","9hYee0YUplDQS3688ZgTWCWYEHEqmpkl3s\u002BDv1CNIaY=","7GaH1LWkvZVlGwd8KWu\u002Br4OAq/JDNlnZDBm7TUEDqYQ=","zUczkDj/GrsLhneNOa\u002BbJDVJFhbj01u901JOncDU3lY=","QXseDsczZisD\u002BVabnNl1/WbLJpTFx9KyYCGldUlD8Gw=","DX8oXpcqB1NjPTRi4sHWGul6yBGIcqdUrLYrdMASJUU=","Lx33F\u002BqvnGnw1kBYfJmiRqTSXbZkvmuf4gjsO\u002BK3uLU=","2d6zXj0AgUrMK/y\u002BWqb8LBEX5JTaev3972UIOW0Tg7U=","wbsrV5dCmltklCFPDVpZp0I\u002BlytYPDMEcla/pAZfefw=","YQSCbn9SqF9IBpkSUnEXTlCFi2/z4LgntidD4BrqrLc=","RG1fv5qx0sXG73vJ/XRab8r1/clvDsSxyOlh\u002BsYySXo=","OleENIUTsBYnmj9yppIvDXJygkAGZ2VeJjN/FVgdaQ8=","qfD541WeYOyPj6UjeTT9ALNgg1WTJoB\u002B6bHCEE9v1\u002B4=","bOODK8suWY0Dca1YomASTiCjx47Twhey1JnbMgplafo=","Jw/pVZ5ZuT6RLBBcRotTM1SHKZuaLYx2siLr8PBcjMA=","TC6r3M4wzXuO1b/sfyioLV597YK39YzOgXZdoZwB3F8=","I/RrNp5PXY1\u002B5oq2lpzq2FP2WW8R/Z6T1NcD6oRawM8=","9CKOOhMCVvHN\u002Bf/vIOg5Z/lp1v0kA8G\u002BCI5rJyndZLs=","QKg1cU\u002Bh3FL2MQJPQDiHmq53A83xoIaXpnKMN6tiRr8=","73ja2p/my\u002BPGBmOLm36G3YCalBzOlUxk2spum0YIzxg=","lmbypiyXqlXg7hG092wPLrExnQDmpEPq4M\u002BeeaWZDQE=","ig0Ll56p1CW0s\u002Bjh8Sl83f6VL9eWEvQMa64SzigT5VE=","fQx6tZGL8eT2p4PD3deQayyXi1mBx5dRW0U8gtf6DMM="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||
@@ -1 +1 @@
|
||||
{"GlobalPropertiesHash":"dTHwDiTQ4hJYdmKO9xqu9ZCVKoaec0XI9AxL+YTrrxc=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["BpImrEMo52w6bqrejlV7vSb82az\u002BZyHdvkc5K26Y7eE=","a5UsKPhkI9FkpAiNA1ymkUo7ug72D30zrmd5jJuyLb4=","VXCSduCoRGoZ5eOSfAj51GsGnNVvq7A5qKF5D/N7Vx0=","lYOz00m47sCm26fa1A/DFVKnjqVzxu9nwMLP8IuW7xo=","6bA4Xmr8qmrZ2r4ukqX9rM6kVzUrIeI94cM9zBObY3M=","l099lCYtMtQryAqb9VTCRIBp0Jcbpf4BalfsulUoFzQ=","V6/Mi3mlMBego46prUANQbdZ1JC0JZHHdYiXWq2\u002Bl0Y=","tl0jSwp2oIQnMenRmm6Mbm313bzgl9pBwBPGlB4uOPo=","tbh14xDAb77jsCKNNZjBojrK8V\u002BuRrCt8pXuAbtqkIo=","GxKlsEe\u002BPorb4Q9gASZJViO4cZfx6jUCEBQjth\u002BbKyQ=","BujRH2INcYzLBulIqjiKKoWj4\u002BbBT0vuhWVB9V7qy9Q=","EepEENuPyTp00hVBGTVzBoVinVly6PiqjQii1osa6kM=","5HcjLmCBtQj/w6XbXf8\u002BCvPC21ftmG5huW5hAakQj2I=","pREL0QA5WROOeeZwRBgJ9om8ccir8XjyYPvQGVlEOqw=","uTfRVeFsnFdQrds7/R5pdtDmoRt4CgIt0nZfMajU8Ok=","kOjALiJp3ssJnC9/\u002BufurmbWP5mGTftoFnUlCEDvu1Y=","OVuwBaCI8R1LKgQ7MpbBQW1MLJdJ5YTckKjK0e\u002BBB/0=","iJvX3JMtNzW09/txMzwAkKxEZoDub7KMH169RwIXBPs=","Jx7VvNisirl41n21YXz5RZ7YC3p\u002BduhgL9Fl4hAQXnU=","uQn60G4s3oNGwLqstU1/neNzshVCswoyOWLl1Fj05Tg=","XHFdkx1NMsJcQH4i0fivlz4h7J3Cn7en7webWTH/bmo=","U67CgipeJ7PfwasvH\u002Bfqt7SBewDnpnt99z8DKoXQzNA=","mseMwc\u002BhG\u002BU8usO5dRA2P\u002BpOMd5PWhffhlwmduKXCJk=","Gq2CAmOPKxxarQPAX2MqPfSN6pt/LIZWFWEa8tBng0I=","HYsHOl/AYyjvk1kiJz18194UGfuAbW0SnMf4TCopcw4=","rwehZlDMvo1sryVYAsPJaHmrJ2rPhqvgKQD6Z1O\u002B3Uc=","XeKKeCm2D4KUJaU5sqmJQdUk7\u002B8A\u002BLzMpqzubv2aoOM=","/zzWV7B7mzbQrZfS96I5FnN7LBmNW5EbLXpSn\u002B9WW/M=","z5U4weixRLkjNozy8VE0T7duu5LEz2RPAmLbFfytYGY=","/N/rp0KUV9X4nDd0kU44g9GSMRdkLmQ9YbtXm/pS5dA=","Ohkm3vqgAWGBAAI4WLyDTwmqAP/wOdKFE42zO9dfl0Q=","eNSJVvFwOiBiNSPF24v6tmv/8/FN9UzPYVoi8Qn8bEo=","0UQKTStUtl3P2puWo1DKykq\u002BjjwDwKRon3olDS6tvHU=","6Q3AeoSqI7vpqdDDUNOSnQ4FYwL5EUR6rTOt9Sf1Rz0=","1rt5\u002B0050W7zo/TZnQe\u002BZec8SBN47eRtlHMUPbm9BU8=","8SGo\u002BxEjiy6wtpY2qoLQAVpU2SnQo7iN34B5T4AlURg=","x79AODv3QZ5w9i3xqovT9BbAXxxd6JZxhVAy6o4ajzs=","cKjDw3B8lc9k/tvqcaER\u002B3ndMwrGQHrDYWSdOY4faV8=","p8dvjfGnu7pGuvblA3vxKLKx29xYbQIUIWysdq2dmUo=","BG1wzq2\u002BUnva6Gj660f/4QSvh7Y\u002B4BkZ/wY9RL4Gw1E=","EMBCFam7ihuahYKSXkchvO5Oq1G6WATBlbGZb/1Wvgw=","qmvGIjcCX8r6TSFwIn5\u002BLEqxe0r6TyWX6Dh7IZuXPyc=","lN17WNch1WB21wDcx8isw\u002B9LESsxbL5ZLcwkcguFwDw=","xFTE\u002BmS9ms48MwKeAOZlAcjQcW2SFEb1HqUl40vv6\u002BA=","I7cNmUMe4LNDvkoc59Tb/PSRJVZAmfnrfaLGIkazUE8=","mVV74WiMoMIt7VWKgRMp3Ffhsn6zMwDlhI11UroeBuY=","1be6J4hFUF43o4ugBHafnfNfQTkZ3vWGedt\u002BdP8sPo4=","vuftYVY\u002Bo7U2Nxhh6XMNpilZIm3ZsptViz7\u002BanqA3Hc=","imfvoQHzb8LfDXM7qRYlx7axOpksQyHig/s\u002BmIcfxpk=","nJpGXEZYduduKpUXiNd6keeqmPvaEgvDoDFQWsGCzcw=","STogQT7rnxvTzdXO1jKjFvHAJyiRDy1pcjGg\u002Bz2lLbU=","y0yeF4H9Zqn1\u002BRsgkxQlXguGWbRQmGSTY1Z1BC0FCuQ=","K/Thn9wvK/PAKEKSQqsu\u002BKF/gsoXvfT2yWOkYV9irEY=","vhLVcon4oX9c1uw5NqDO\u002Bbmp7U8Wut5qBvibR3av0rA=","QKHrAtLbmxUoOsZrHwyNH/IyH86zNvOqxWSlN3FyucA=","6wCEa/kwBVkKvxfkUIFAxzHXWu4/p/R5/WtLkSHmLHc=","G07nmbZoVpM0XTP8Lz65k3KltLdOeLXLxcbihltgpGQ=","1hKIH5KS3ipyc1\u002BCQ\u002BxwaZMNvI1OZnLX8eArQaOVzAE=","J\u002BTkoAeMyxDzquSGJ3s6/xjqRpSmQj3hnQ/nQ3ZMT2w=","6RMMCAIDMT6w6ebgi/Bdd1UPJ1TWHh5v/RLyuInLByM=","XdM7cHaWP0hnWT6hjmmAQZrH5muzSfxofZZMReavdhE=","Y6FuXJmG4asZZywv8eq2Ki3M3DHBabgHxixPNEPtsg0=","ocP7tLQvAC3JoF1EP3jOXtv3\u002Bd0qM3kdE0/8cY\u002BVC18=","CH9QcGeTGE6F7iss5IMJIdGAfaixRCv52kGorH\u002Br7UQ=","T1FmR6BuWj8NdQOpYSYpkD9zKCBLg9Fq2Txyqzbv0ow=","7pE8sSLDf7aqo6DjV5RYq1M\u002BISPAIo7BW6XwwSh6O1w=","yALO4iHkRJn2NKox\u002B\u002B4OZBqzhGPkvrA2bOX0emXGiac=","9JrQ3zBPaGik8svNVNuioqNGKWNvShwz32tj7Oyf9wM=","j0EJHazrwSEUHAPSEiUUhdwXrZ4ben27F7iH5Hnje/M=","JiuGUyztERDBSvF/6GDip3jqDWJzkWH6IdRYkvi5bw0=","bfM6e\u002BYucNXsBEQIq6EkXf6mNT\u002BPp63/xGN1rdjLZiQ=","7rNiQh7D0WAW\u002BBIalpkA6TbN/zPYEJsqZgWhr/HPCVs=","5CJDU5WOqZlcGfMhyrjY8yklCO49EP8N2oJgZCPtCvA=","PwMpWOwh/ebKXLFaIW93w/Nmg9sgkp21\u002BkJjs5VxJFY=","JPhvOaP4s5GzcXST3QvJD8qP\u002B/4XR1TCfIiP4loGLb8=","NVCP0V7YVnf5urwl2ofENh5w6TJfZ2MUUgzQ389SA1w=","VfTAU/4gffsId\u002B7V4v5FnVYVwig5FKCwrdNkRzRwGU0=","Y7eqVxFX7a20bQsQuQshHeV5QtkyeSYASzhM4PXTo30=","yOVmWadteUwj\u002BNmQpObPtaDAt52hoJ\u002Bl\u002BNzJVK7MBAU=","9cTrEyIQdmDa25ocL8Eyud7FcyZQ0KIMjdK17iVzX2k=","LpesthIqevfUpWNrijFwa6P4yw9y1fjCvhDIJi1HNSY=","7KbCVRYfzTj0uAmCgvUKF\u002B90LeMurRZZC0\u002BbZdNLQgg=","Yixqc1XRFIJzTzMVIDHsDQ6xJExHcrnledpmuK51aKg=","829a\u002BDQvI6dHkKDNA93VIjPgJhUHsPn\u002BBTPY8rp9WgM="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||
{"GlobalPropertiesHash":"dTHwDiTQ4hJYdmKO9xqu9ZCVKoaec0XI9AxL+YTrrxc=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["n5uFp7neWGmBSroF9wz6UeHPFKI4V7XWOIo8ljHWf9Y=","Kpaz0Q/JtnOuEMA9H8djKgxs1wkq4Io9PxjHSosNMQE=","a5UsKPhkI9FkpAiNA1ymkUo7ug72D30zrmd5jJuyLb4=","VXCSduCoRGoZ5eOSfAj51GsGnNVvq7A5qKF5D/N7Vx0=","lYOz00m47sCm26fa1A/DFVKnjqVzxu9nwMLP8IuW7xo=","6bA4Xmr8qmrZ2r4ukqX9rM6kVzUrIeI94cM9zBObY3M=","l099lCYtMtQryAqb9VTCRIBp0Jcbpf4BalfsulUoFzQ=","V6/Mi3mlMBego46prUANQbdZ1JC0JZHHdYiXWq2\u002Bl0Y=","tl0jSwp2oIQnMenRmm6Mbm313bzgl9pBwBPGlB4uOPo=","tbh14xDAb77jsCKNNZjBojrK8V\u002BuRrCt8pXuAbtqkIo=","GxKlsEe\u002BPorb4Q9gASZJViO4cZfx6jUCEBQjth\u002BbKyQ=","BujRH2INcYzLBulIqjiKKoWj4\u002BbBT0vuhWVB9V7qy9Q=","EepEENuPyTp00hVBGTVzBoVinVly6PiqjQii1osa6kM=","5HcjLmCBtQj/w6XbXf8\u002BCvPC21ftmG5huW5hAakQj2I=","pREL0QA5WROOeeZwRBgJ9om8ccir8XjyYPvQGVlEOqw=","uTfRVeFsnFdQrds7/R5pdtDmoRt4CgIt0nZfMajU8Ok=","kOjALiJp3ssJnC9/\u002BufurmbWP5mGTftoFnUlCEDvu1Y=","OVuwBaCI8R1LKgQ7MpbBQW1MLJdJ5YTckKjK0e\u002BBB/0=","iJvX3JMtNzW09/txMzwAkKxEZoDub7KMH169RwIXBPs=","Jx7VvNisirl41n21YXz5RZ7YC3p\u002BduhgL9Fl4hAQXnU=","uQn60G4s3oNGwLqstU1/neNzshVCswoyOWLl1Fj05Tg=","XHFdkx1NMsJcQH4i0fivlz4h7J3Cn7en7webWTH/bmo=","U67CgipeJ7PfwasvH\u002Bfqt7SBewDnpnt99z8DKoXQzNA=","mseMwc\u002BhG\u002BU8usO5dRA2P\u002BpOMd5PWhffhlwmduKXCJk=","Gq2CAmOPKxxarQPAX2MqPfSN6pt/LIZWFWEa8tBng0I=","HYsHOl/AYyjvk1kiJz18194UGfuAbW0SnMf4TCopcw4=","rwehZlDMvo1sryVYAsPJaHmrJ2rPhqvgKQD6Z1O\u002B3Uc=","XeKKeCm2D4KUJaU5sqmJQdUk7\u002B8A\u002BLzMpqzubv2aoOM=","/zzWV7B7mzbQrZfS96I5FnN7LBmNW5EbLXpSn\u002B9WW/M=","z5U4weixRLkjNozy8VE0T7duu5LEz2RPAmLbFfytYGY=","/N/rp0KUV9X4nDd0kU44g9GSMRdkLmQ9YbtXm/pS5dA=","Ohkm3vqgAWGBAAI4WLyDTwmqAP/wOdKFE42zO9dfl0Q=","eNSJVvFwOiBiNSPF24v6tmv/8/FN9UzPYVoi8Qn8bEo=","0UQKTStUtl3P2puWo1DKykq\u002BjjwDwKRon3olDS6tvHU=","6Q3AeoSqI7vpqdDDUNOSnQ4FYwL5EUR6rTOt9Sf1Rz0=","1rt5\u002B0050W7zo/TZnQe\u002BZec8SBN47eRtlHMUPbm9BU8=","8SGo\u002BxEjiy6wtpY2qoLQAVpU2SnQo7iN34B5T4AlURg=","x79AODv3QZ5w9i3xqovT9BbAXxxd6JZxhVAy6o4ajzs=","cKjDw3B8lc9k/tvqcaER\u002B3ndMwrGQHrDYWSdOY4faV8=","p8dvjfGnu7pGuvblA3vxKLKx29xYbQIUIWysdq2dmUo=","BG1wzq2\u002BUnva6Gj660f/4QSvh7Y\u002B4BkZ/wY9RL4Gw1E=","EMBCFam7ihuahYKSXkchvO5Oq1G6WATBlbGZb/1Wvgw=","qmvGIjcCX8r6TSFwIn5\u002BLEqxe0r6TyWX6Dh7IZuXPyc=","lN17WNch1WB21wDcx8isw\u002B9LESsxbL5ZLcwkcguFwDw=","xFTE\u002BmS9ms48MwKeAOZlAcjQcW2SFEb1HqUl40vv6\u002BA=","I7cNmUMe4LNDvkoc59Tb/PSRJVZAmfnrfaLGIkazUE8=","mVV74WiMoMIt7VWKgRMp3Ffhsn6zMwDlhI11UroeBuY=","1be6J4hFUF43o4ugBHafnfNfQTkZ3vWGedt\u002BdP8sPo4=","vuftYVY\u002Bo7U2Nxhh6XMNpilZIm3ZsptViz7\u002BanqA3Hc=","imfvoQHzb8LfDXM7qRYlx7axOpksQyHig/s\u002BmIcfxpk=","nJpGXEZYduduKpUXiNd6keeqmPvaEgvDoDFQWsGCzcw=","STogQT7rnxvTzdXO1jKjFvHAJyiRDy1pcjGg\u002Bz2lLbU=","y0yeF4H9Zqn1\u002BRsgkxQlXguGWbRQmGSTY1Z1BC0FCuQ=","K/Thn9wvK/PAKEKSQqsu\u002BKF/gsoXvfT2yWOkYV9irEY=","vhLVcon4oX9c1uw5NqDO\u002Bbmp7U8Wut5qBvibR3av0rA=","QKHrAtLbmxUoOsZrHwyNH/IyH86zNvOqxWSlN3FyucA=","6wCEa/kwBVkKvxfkUIFAxzHXWu4/p/R5/WtLkSHmLHc=","G07nmbZoVpM0XTP8Lz65k3KltLdOeLXLxcbihltgpGQ=","1hKIH5KS3ipyc1\u002BCQ\u002BxwaZMNvI1OZnLX8eArQaOVzAE=","J\u002BTkoAeMyxDzquSGJ3s6/xjqRpSmQj3hnQ/nQ3ZMT2w=","6RMMCAIDMT6w6ebgi/Bdd1UPJ1TWHh5v/RLyuInLByM=","XdM7cHaWP0hnWT6hjmmAQZrH5muzSfxofZZMReavdhE=","Y6FuXJmG4asZZywv8eq2Ki3M3DHBabgHxixPNEPtsg0=","ocP7tLQvAC3JoF1EP3jOXtv3\u002Bd0qM3kdE0/8cY\u002BVC18=","CH9QcGeTGE6F7iss5IMJIdGAfaixRCv52kGorH\u002Br7UQ=","T1FmR6BuWj8NdQOpYSYpkD9zKCBLg9Fq2Txyqzbv0ow=","7pE8sSLDf7aqo6DjV5RYq1M\u002BISPAIo7BW6XwwSh6O1w=","s/i8LJ/e4qIDjEUPgs\u002BEm1BiSxoFaFW\u002BiNsciJ46Se0=","MCboMATobp0xAPy7uFlGMDj90uup3KgbQZQ4S\u002BTB6\u002BI=","\u002BD1KwIkkIKqP68kYi7AiSant9WsyQ\u002BekMikmB3EJxN0=","4argFkGnAwNxETMHSxzvQ2PmNY8KuPT3oq95msw6X64=","9JrQ3zBPaGik8svNVNuioqNGKWNvShwz32tj7Oyf9wM=","Qky4FjUO3SqTt8S6AxWoOxZFPezRDX6fyc\u002ByS1296HI=","8R6VzxQRmFMk\u002BXn\u002BwUYqnwsYuSmmYxUXOD2Wepgf4Z0=","JiuGUyztERDBSvF/6GDip3jqDWJzkWH6IdRYkvi5bw0=","bfM6e\u002BYucNXsBEQIq6EkXf6mNT\u002BPp63/xGN1rdjLZiQ=","7rNiQh7D0WAW\u002BBIalpkA6TbN/zPYEJsqZgWhr/HPCVs=","5CJDU5WOqZlcGfMhyrjY8yklCO49EP8N2oJgZCPtCvA=","PwMpWOwh/ebKXLFaIW93w/Nmg9sgkp21\u002BkJjs5VxJFY=","JPhvOaP4s5GzcXST3QvJD8qP\u002B/4XR1TCfIiP4loGLb8=","NVCP0V7YVnf5urwl2ofENh5w6TJfZ2MUUgzQ389SA1w=","VfTAU/4gffsId\u002B7V4v5FnVYVwig5FKCwrdNkRzRwGU0=","Y7eqVxFX7a20bQsQuQshHeV5QtkyeSYASzhM4PXTo30=","yOVmWadteUwj\u002BNmQpObPtaDAt52hoJ\u002Bl\u002BNzJVK7MBAU=","9cTrEyIQdmDa25ocL8Eyud7FcyZQ0KIMjdK17iVzX2k=","a/zdACF21w3ntvbFDoozP8VBvuUGVu51eJccri6\u002Bzyk=","7KbCVRYfzTj0uAmCgvUKF\u002B90LeMurRZZC0\u002BbZdNLQgg=","pT3uRUBLB8sRCYZfqQZMjGIYxN7tF6VWx7nczEtejvo=","MKQHw6j1aupPEmjQyQaJ7hEIlQyS5vUgYQ19ncmXeSg=","Yixqc1XRFIJzTzMVIDHsDQ6xJExHcrnledpmuK51aKg=","ftbSxYFJXTxUMNOMv2m/NBw9kW6scWQGv\u002BoKf/zzGMY="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||
@@ -1 +1 @@
|
||||
{"GlobalPropertiesHash":"b3AVK0PfgHEjkHEQ+ecR24BVpHFQ4S+w6p/xGRP0mXU=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["BpImrEMo52w6bqrejlV7vSb82az\u002BZyHdvkc5K26Y7eE=","a5UsKPhkI9FkpAiNA1ymkUo7ug72D30zrmd5jJuyLb4=","VXCSduCoRGoZ5eOSfAj51GsGnNVvq7A5qKF5D/N7Vx0=","lYOz00m47sCm26fa1A/DFVKnjqVzxu9nwMLP8IuW7xo=","6bA4Xmr8qmrZ2r4ukqX9rM6kVzUrIeI94cM9zBObY3M=","l099lCYtMtQryAqb9VTCRIBp0Jcbpf4BalfsulUoFzQ=","V6/Mi3mlMBego46prUANQbdZ1JC0JZHHdYiXWq2\u002Bl0Y=","tl0jSwp2oIQnMenRmm6Mbm313bzgl9pBwBPGlB4uOPo=","tbh14xDAb77jsCKNNZjBojrK8V\u002BuRrCt8pXuAbtqkIo=","GxKlsEe\u002BPorb4Q9gASZJViO4cZfx6jUCEBQjth\u002BbKyQ=","BujRH2INcYzLBulIqjiKKoWj4\u002BbBT0vuhWVB9V7qy9Q=","EepEENuPyTp00hVBGTVzBoVinVly6PiqjQii1osa6kM=","5HcjLmCBtQj/w6XbXf8\u002BCvPC21ftmG5huW5hAakQj2I=","pREL0QA5WROOeeZwRBgJ9om8ccir8XjyYPvQGVlEOqw=","uTfRVeFsnFdQrds7/R5pdtDmoRt4CgIt0nZfMajU8Ok=","kOjALiJp3ssJnC9/\u002BufurmbWP5mGTftoFnUlCEDvu1Y=","OVuwBaCI8R1LKgQ7MpbBQW1MLJdJ5YTckKjK0e\u002BBB/0=","iJvX3JMtNzW09/txMzwAkKxEZoDub7KMH169RwIXBPs=","Jx7VvNisirl41n21YXz5RZ7YC3p\u002BduhgL9Fl4hAQXnU=","uQn60G4s3oNGwLqstU1/neNzshVCswoyOWLl1Fj05Tg=","XHFdkx1NMsJcQH4i0fivlz4h7J3Cn7en7webWTH/bmo=","U67CgipeJ7PfwasvH\u002Bfqt7SBewDnpnt99z8DKoXQzNA=","mseMwc\u002BhG\u002BU8usO5dRA2P\u002BpOMd5PWhffhlwmduKXCJk=","Gq2CAmOPKxxarQPAX2MqPfSN6pt/LIZWFWEa8tBng0I=","HYsHOl/AYyjvk1kiJz18194UGfuAbW0SnMf4TCopcw4=","rwehZlDMvo1sryVYAsPJaHmrJ2rPhqvgKQD6Z1O\u002B3Uc=","XeKKeCm2D4KUJaU5sqmJQdUk7\u002B8A\u002BLzMpqzubv2aoOM=","/zzWV7B7mzbQrZfS96I5FnN7LBmNW5EbLXpSn\u002B9WW/M=","z5U4weixRLkjNozy8VE0T7duu5LEz2RPAmLbFfytYGY=","/N/rp0KUV9X4nDd0kU44g9GSMRdkLmQ9YbtXm/pS5dA=","Ohkm3vqgAWGBAAI4WLyDTwmqAP/wOdKFE42zO9dfl0Q=","eNSJVvFwOiBiNSPF24v6tmv/8/FN9UzPYVoi8Qn8bEo=","0UQKTStUtl3P2puWo1DKykq\u002BjjwDwKRon3olDS6tvHU=","6Q3AeoSqI7vpqdDDUNOSnQ4FYwL5EUR6rTOt9Sf1Rz0=","1rt5\u002B0050W7zo/TZnQe\u002BZec8SBN47eRtlHMUPbm9BU8=","8SGo\u002BxEjiy6wtpY2qoLQAVpU2SnQo7iN34B5T4AlURg=","x79AODv3QZ5w9i3xqovT9BbAXxxd6JZxhVAy6o4ajzs=","cKjDw3B8lc9k/tvqcaER\u002B3ndMwrGQHrDYWSdOY4faV8=","p8dvjfGnu7pGuvblA3vxKLKx29xYbQIUIWysdq2dmUo=","BG1wzq2\u002BUnva6Gj660f/4QSvh7Y\u002B4BkZ/wY9RL4Gw1E=","EMBCFam7ihuahYKSXkchvO5Oq1G6WATBlbGZb/1Wvgw=","qmvGIjcCX8r6TSFwIn5\u002BLEqxe0r6TyWX6Dh7IZuXPyc=","lN17WNch1WB21wDcx8isw\u002B9LESsxbL5ZLcwkcguFwDw=","xFTE\u002BmS9ms48MwKeAOZlAcjQcW2SFEb1HqUl40vv6\u002BA=","I7cNmUMe4LNDvkoc59Tb/PSRJVZAmfnrfaLGIkazUE8=","mVV74WiMoMIt7VWKgRMp3Ffhsn6zMwDlhI11UroeBuY=","1be6J4hFUF43o4ugBHafnfNfQTkZ3vWGedt\u002BdP8sPo4=","vuftYVY\u002Bo7U2Nxhh6XMNpilZIm3ZsptViz7\u002BanqA3Hc=","imfvoQHzb8LfDXM7qRYlx7axOpksQyHig/s\u002BmIcfxpk=","nJpGXEZYduduKpUXiNd6keeqmPvaEgvDoDFQWsGCzcw=","STogQT7rnxvTzdXO1jKjFvHAJyiRDy1pcjGg\u002Bz2lLbU=","y0yeF4H9Zqn1\u002BRsgkxQlXguGWbRQmGSTY1Z1BC0FCuQ=","K/Thn9wvK/PAKEKSQqsu\u002BKF/gsoXvfT2yWOkYV9irEY=","vhLVcon4oX9c1uw5NqDO\u002Bbmp7U8Wut5qBvibR3av0rA=","QKHrAtLbmxUoOsZrHwyNH/IyH86zNvOqxWSlN3FyucA=","6wCEa/kwBVkKvxfkUIFAxzHXWu4/p/R5/WtLkSHmLHc=","G07nmbZoVpM0XTP8Lz65k3KltLdOeLXLxcbihltgpGQ=","1hKIH5KS3ipyc1\u002BCQ\u002BxwaZMNvI1OZnLX8eArQaOVzAE=","J\u002BTkoAeMyxDzquSGJ3s6/xjqRpSmQj3hnQ/nQ3ZMT2w=","6RMMCAIDMT6w6ebgi/Bdd1UPJ1TWHh5v/RLyuInLByM=","XdM7cHaWP0hnWT6hjmmAQZrH5muzSfxofZZMReavdhE=","Y6FuXJmG4asZZywv8eq2Ki3M3DHBabgHxixPNEPtsg0=","ocP7tLQvAC3JoF1EP3jOXtv3\u002Bd0qM3kdE0/8cY\u002BVC18=","CH9QcGeTGE6F7iss5IMJIdGAfaixRCv52kGorH\u002Br7UQ=","T1FmR6BuWj8NdQOpYSYpkD9zKCBLg9Fq2Txyqzbv0ow=","7pE8sSLDf7aqo6DjV5RYq1M\u002BISPAIo7BW6XwwSh6O1w=","yALO4iHkRJn2NKox\u002B\u002B4OZBqzhGPkvrA2bOX0emXGiac=","9JrQ3zBPaGik8svNVNuioqNGKWNvShwz32tj7Oyf9wM=","j0EJHazrwSEUHAPSEiUUhdwXrZ4ben27F7iH5Hnje/M=","JiuGUyztERDBSvF/6GDip3jqDWJzkWH6IdRYkvi5bw0=","bfM6e\u002BYucNXsBEQIq6EkXf6mNT\u002BPp63/xGN1rdjLZiQ=","7rNiQh7D0WAW\u002BBIalpkA6TbN/zPYEJsqZgWhr/HPCVs=","5CJDU5WOqZlcGfMhyrjY8yklCO49EP8N2oJgZCPtCvA=","PwMpWOwh/ebKXLFaIW93w/Nmg9sgkp21\u002BkJjs5VxJFY=","JPhvOaP4s5GzcXST3QvJD8qP\u002B/4XR1TCfIiP4loGLb8=","NVCP0V7YVnf5urwl2ofENh5w6TJfZ2MUUgzQ389SA1w=","VfTAU/4gffsId\u002B7V4v5FnVYVwig5FKCwrdNkRzRwGU0=","Y7eqVxFX7a20bQsQuQshHeV5QtkyeSYASzhM4PXTo30=","yOVmWadteUwj\u002BNmQpObPtaDAt52hoJ\u002Bl\u002BNzJVK7MBAU=","9cTrEyIQdmDa25ocL8Eyud7FcyZQ0KIMjdK17iVzX2k=","LpesthIqevfUpWNrijFwa6P4yw9y1fjCvhDIJi1HNSY=","7KbCVRYfzTj0uAmCgvUKF\u002B90LeMurRZZC0\u002BbZdNLQgg=","Yixqc1XRFIJzTzMVIDHsDQ6xJExHcrnledpmuK51aKg=","829a\u002BDQvI6dHkKDNA93VIjPgJhUHsPn\u002BBTPY8rp9WgM="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||
{"GlobalPropertiesHash":"b3AVK0PfgHEjkHEQ+ecR24BVpHFQ4S+w6p/xGRP0mXU=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["n5uFp7neWGmBSroF9wz6UeHPFKI4V7XWOIo8ljHWf9Y=","Kpaz0Q/JtnOuEMA9H8djKgxs1wkq4Io9PxjHSosNMQE=","a5UsKPhkI9FkpAiNA1ymkUo7ug72D30zrmd5jJuyLb4=","VXCSduCoRGoZ5eOSfAj51GsGnNVvq7A5qKF5D/N7Vx0=","lYOz00m47sCm26fa1A/DFVKnjqVzxu9nwMLP8IuW7xo=","6bA4Xmr8qmrZ2r4ukqX9rM6kVzUrIeI94cM9zBObY3M=","l099lCYtMtQryAqb9VTCRIBp0Jcbpf4BalfsulUoFzQ=","V6/Mi3mlMBego46prUANQbdZ1JC0JZHHdYiXWq2\u002Bl0Y=","tl0jSwp2oIQnMenRmm6Mbm313bzgl9pBwBPGlB4uOPo=","tbh14xDAb77jsCKNNZjBojrK8V\u002BuRrCt8pXuAbtqkIo=","GxKlsEe\u002BPorb4Q9gASZJViO4cZfx6jUCEBQjth\u002BbKyQ=","BujRH2INcYzLBulIqjiKKoWj4\u002BbBT0vuhWVB9V7qy9Q=","EepEENuPyTp00hVBGTVzBoVinVly6PiqjQii1osa6kM=","5HcjLmCBtQj/w6XbXf8\u002BCvPC21ftmG5huW5hAakQj2I=","pREL0QA5WROOeeZwRBgJ9om8ccir8XjyYPvQGVlEOqw=","uTfRVeFsnFdQrds7/R5pdtDmoRt4CgIt0nZfMajU8Ok=","kOjALiJp3ssJnC9/\u002BufurmbWP5mGTftoFnUlCEDvu1Y=","OVuwBaCI8R1LKgQ7MpbBQW1MLJdJ5YTckKjK0e\u002BBB/0=","iJvX3JMtNzW09/txMzwAkKxEZoDub7KMH169RwIXBPs=","Jx7VvNisirl41n21YXz5RZ7YC3p\u002BduhgL9Fl4hAQXnU=","uQn60G4s3oNGwLqstU1/neNzshVCswoyOWLl1Fj05Tg=","XHFdkx1NMsJcQH4i0fivlz4h7J3Cn7en7webWTH/bmo=","U67CgipeJ7PfwasvH\u002Bfqt7SBewDnpnt99z8DKoXQzNA=","mseMwc\u002BhG\u002BU8usO5dRA2P\u002BpOMd5PWhffhlwmduKXCJk=","Gq2CAmOPKxxarQPAX2MqPfSN6pt/LIZWFWEa8tBng0I=","HYsHOl/AYyjvk1kiJz18194UGfuAbW0SnMf4TCopcw4=","rwehZlDMvo1sryVYAsPJaHmrJ2rPhqvgKQD6Z1O\u002B3Uc=","XeKKeCm2D4KUJaU5sqmJQdUk7\u002B8A\u002BLzMpqzubv2aoOM=","/zzWV7B7mzbQrZfS96I5FnN7LBmNW5EbLXpSn\u002B9WW/M=","z5U4weixRLkjNozy8VE0T7duu5LEz2RPAmLbFfytYGY=","/N/rp0KUV9X4nDd0kU44g9GSMRdkLmQ9YbtXm/pS5dA=","Ohkm3vqgAWGBAAI4WLyDTwmqAP/wOdKFE42zO9dfl0Q=","eNSJVvFwOiBiNSPF24v6tmv/8/FN9UzPYVoi8Qn8bEo=","0UQKTStUtl3P2puWo1DKykq\u002BjjwDwKRon3olDS6tvHU=","6Q3AeoSqI7vpqdDDUNOSnQ4FYwL5EUR6rTOt9Sf1Rz0=","1rt5\u002B0050W7zo/TZnQe\u002BZec8SBN47eRtlHMUPbm9BU8=","8SGo\u002BxEjiy6wtpY2qoLQAVpU2SnQo7iN34B5T4AlURg=","x79AODv3QZ5w9i3xqovT9BbAXxxd6JZxhVAy6o4ajzs=","cKjDw3B8lc9k/tvqcaER\u002B3ndMwrGQHrDYWSdOY4faV8=","p8dvjfGnu7pGuvblA3vxKLKx29xYbQIUIWysdq2dmUo=","BG1wzq2\u002BUnva6Gj660f/4QSvh7Y\u002B4BkZ/wY9RL4Gw1E=","EMBCFam7ihuahYKSXkchvO5Oq1G6WATBlbGZb/1Wvgw=","qmvGIjcCX8r6TSFwIn5\u002BLEqxe0r6TyWX6Dh7IZuXPyc=","lN17WNch1WB21wDcx8isw\u002B9LESsxbL5ZLcwkcguFwDw=","xFTE\u002BmS9ms48MwKeAOZlAcjQcW2SFEb1HqUl40vv6\u002BA=","I7cNmUMe4LNDvkoc59Tb/PSRJVZAmfnrfaLGIkazUE8=","mVV74WiMoMIt7VWKgRMp3Ffhsn6zMwDlhI11UroeBuY=","1be6J4hFUF43o4ugBHafnfNfQTkZ3vWGedt\u002BdP8sPo4=","vuftYVY\u002Bo7U2Nxhh6XMNpilZIm3ZsptViz7\u002BanqA3Hc=","imfvoQHzb8LfDXM7qRYlx7axOpksQyHig/s\u002BmIcfxpk=","nJpGXEZYduduKpUXiNd6keeqmPvaEgvDoDFQWsGCzcw=","STogQT7rnxvTzdXO1jKjFvHAJyiRDy1pcjGg\u002Bz2lLbU=","y0yeF4H9Zqn1\u002BRsgkxQlXguGWbRQmGSTY1Z1BC0FCuQ=","K/Thn9wvK/PAKEKSQqsu\u002BKF/gsoXvfT2yWOkYV9irEY=","vhLVcon4oX9c1uw5NqDO\u002Bbmp7U8Wut5qBvibR3av0rA=","QKHrAtLbmxUoOsZrHwyNH/IyH86zNvOqxWSlN3FyucA=","6wCEa/kwBVkKvxfkUIFAxzHXWu4/p/R5/WtLkSHmLHc=","G07nmbZoVpM0XTP8Lz65k3KltLdOeLXLxcbihltgpGQ=","1hKIH5KS3ipyc1\u002BCQ\u002BxwaZMNvI1OZnLX8eArQaOVzAE=","J\u002BTkoAeMyxDzquSGJ3s6/xjqRpSmQj3hnQ/nQ3ZMT2w=","6RMMCAIDMT6w6ebgi/Bdd1UPJ1TWHh5v/RLyuInLByM=","XdM7cHaWP0hnWT6hjmmAQZrH5muzSfxofZZMReavdhE=","Y6FuXJmG4asZZywv8eq2Ki3M3DHBabgHxixPNEPtsg0=","ocP7tLQvAC3JoF1EP3jOXtv3\u002Bd0qM3kdE0/8cY\u002BVC18=","CH9QcGeTGE6F7iss5IMJIdGAfaixRCv52kGorH\u002Br7UQ=","T1FmR6BuWj8NdQOpYSYpkD9zKCBLg9Fq2Txyqzbv0ow=","7pE8sSLDf7aqo6DjV5RYq1M\u002BISPAIo7BW6XwwSh6O1w=","s/i8LJ/e4qIDjEUPgs\u002BEm1BiSxoFaFW\u002BiNsciJ46Se0=","MCboMATobp0xAPy7uFlGMDj90uup3KgbQZQ4S\u002BTB6\u002BI=","\u002BD1KwIkkIKqP68kYi7AiSant9WsyQ\u002BekMikmB3EJxN0=","4argFkGnAwNxETMHSxzvQ2PmNY8KuPT3oq95msw6X64=","9JrQ3zBPaGik8svNVNuioqNGKWNvShwz32tj7Oyf9wM=","Qky4FjUO3SqTt8S6AxWoOxZFPezRDX6fyc\u002ByS1296HI=","8R6VzxQRmFMk\u002BXn\u002BwUYqnwsYuSmmYxUXOD2Wepgf4Z0=","JiuGUyztERDBSvF/6GDip3jqDWJzkWH6IdRYkvi5bw0=","bfM6e\u002BYucNXsBEQIq6EkXf6mNT\u002BPp63/xGN1rdjLZiQ=","7rNiQh7D0WAW\u002BBIalpkA6TbN/zPYEJsqZgWhr/HPCVs=","5CJDU5WOqZlcGfMhyrjY8yklCO49EP8N2oJgZCPtCvA=","PwMpWOwh/ebKXLFaIW93w/Nmg9sgkp21\u002BkJjs5VxJFY=","JPhvOaP4s5GzcXST3QvJD8qP\u002B/4XR1TCfIiP4loGLb8=","NVCP0V7YVnf5urwl2ofENh5w6TJfZ2MUUgzQ389SA1w=","VfTAU/4gffsId\u002B7V4v5FnVYVwig5FKCwrdNkRzRwGU0=","Y7eqVxFX7a20bQsQuQshHeV5QtkyeSYASzhM4PXTo30=","yOVmWadteUwj\u002BNmQpObPtaDAt52hoJ\u002Bl\u002BNzJVK7MBAU=","9cTrEyIQdmDa25ocL8Eyud7FcyZQ0KIMjdK17iVzX2k=","a/zdACF21w3ntvbFDoozP8VBvuUGVu51eJccri6\u002Bzyk=","7KbCVRYfzTj0uAmCgvUKF\u002B90LeMurRZZC0\u002BbZdNLQgg=","pT3uRUBLB8sRCYZfqQZMjGIYxN7tF6VWx7nczEtejvo=","MKQHw6j1aupPEmjQyQaJ7hEIlQyS5vUgYQ19ncmXeSg=","Yixqc1XRFIJzTzMVIDHsDQ6xJExHcrnledpmuK51aKg=","ftbSxYFJXTxUMNOMv2m/NBw9kW6scWQGv\u002BoKf/zzGMY="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1 +1 @@
|
||||
VsuMx2Zn3i5Dl5B+fBffrcZ8UW53GnIphNRqfc4nT+c=
|
||||
yZ/md1iPYrXaNms0Gs0O0FWZ6ytfiDODQYaUjklYohY=
|
||||
File diff suppressed because one or more lines are too long
@@ -13,7 +13,7 @@ using System.Reflection;
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("vita-asistente")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5c0cce7c1f3fa01b1f4930c2e7fdf7a92b7f700d")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+12b7b0f4b2ea7b5318ff9556b64efffb651753df")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("vita-asistente")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("vita-asistente")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
@@ -1 +1 @@
|
||||
438fa0af1f685fa87f855a8f86df0fd884cc1bbd4af8bf4bcd2f11fa5373f7c7
|
||||
c47408c8e4feccbd273b631bf4ba384fb40dec86351eb206441bcd8fab299c0b
|
||||
|
||||
@@ -39,6 +39,10 @@ build_metadata.AdditionalFiles.CssScope =
|
||||
build_metadata.AdditionalFiles.TargetPath = Vmlld3NcSG9tZVxQcml2YWN5LmNzaHRtbA==
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[C:/Users/franc/source/repos/Vita-Asistente/Views/Pacientes/Index.cshtml]
|
||||
build_metadata.AdditionalFiles.TargetPath = Vmlld3NcUGFjaWVudGVzXEluZGV4LmNzaHRtbA==
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[C:/Users/franc/source/repos/Vita-Asistente/Views/Roles/Disable.cshtml]
|
||||
build_metadata.AdditionalFiles.TargetPath = Vmlld3NcUm9sZXNcRGlzYWJsZS5jc2h0bWw=
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
@@ -55,6 +59,10 @@ build_metadata.AdditionalFiles.CssScope =
|
||||
build_metadata.AdditionalFiles.TargetPath = Vmlld3NcU2hhcmVkXEVycm9yLmNzaHRtbA==
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[C:/Users/franc/source/repos/Vita-Asistente/Views/Shared/_SidebarPartial.cshtml]
|
||||
build_metadata.AdditionalFiles.TargetPath = Vmlld3NcU2hhcmVkXF9TaWRlYmFyUGFydGlhbC5jc2h0bWw=
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
[C:/Users/franc/source/repos/Vita-Asistente/Views/Shared/_ValidationScriptsPartial.cshtml]
|
||||
build_metadata.AdditionalFiles.TargetPath = Vmlld3NcU2hhcmVkXF9WYWxpZGF0aW9uU2NyaXB0c1BhcnRpYWwuY3NodG1s
|
||||
build_metadata.AdditionalFiles.CssScope =
|
||||
|
||||
@@ -1,18 +1,17 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// Este código fue generado por una herramienta.
|
||||
// Versión de runtime:4.0.30319.42000
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si
|
||||
// se vuelve a generar el código.
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ProvideApplicationPartFactoryAttribute("Microsoft.AspNetCore.Mvc.ApplicationParts.ConsolidatedAssemblyApplicationPartFact" +
|
||||
"ory, Microsoft.AspNetCore.Mvc.Razor")]
|
||||
[assembly: Microsoft.AspNetCore.Mvc.ApplicationParts.ProvideApplicationPartFactoryAttribute(("Microsoft.AspNetCore.Mvc.ApplicationParts.ConsolidatedAssemblyApplicationPartFact" +
|
||||
"ory, Microsoft.AspNetCore.Mvc.Razor"))]
|
||||
|
||||
// Generated by the MSBuild WriteCodeFragment class.
|
||||
|
||||
|
||||
Binary file not shown.
@@ -1 +1 @@
|
||||
a25b8ca88477ec38fbbf43708d1057096c9c7eb2e4df7116120b1b7806a14707
|
||||
250e2c21d2c13c863762da6287358d42bac0f0d0f3163f46e80dd89fbad8abb4
|
||||
|
||||
@@ -1,118 +1,118 @@
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\appsettings.Development.json
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\appsettings.json
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\vita-asistente.staticwebassets.runtime.json
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\vita-asistente.staticwebassets.endpoints.json
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\vita-asistente.exe
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\vita-asistente.deps.json
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\vita-asistente.runtimeconfig.json
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\vita-asistente.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\vita-asistente.pdb
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Humanizer.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Microsoft.AspNetCore.Cryptography.Internal.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Microsoft.AspNetCore.Cryptography.KeyDerivation.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Microsoft.AspNetCore.Identity.EntityFrameworkCore.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Microsoft.Bcl.AsyncInterfaces.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Microsoft.CodeAnalysis.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Microsoft.CodeAnalysis.CSharp.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Microsoft.CodeAnalysis.CSharp.Workspaces.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Microsoft.CodeAnalysis.Workspaces.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.Abstractions.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.Design.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.Relational.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Microsoft.Extensions.Caching.Memory.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Microsoft.Extensions.DependencyInjection.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Microsoft.Extensions.DependencyModel.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Microsoft.Extensions.Identity.Core.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Microsoft.Extensions.Identity.Stores.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Microsoft.Extensions.Logging.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Microsoft.Extensions.Logging.Abstractions.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Microsoft.Extensions.Options.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Mono.TextTemplating.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\MySqlConnector.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\Pomelo.EntityFrameworkCore.MySql.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\System.CodeDom.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\System.Composition.AttributedModel.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\System.Composition.Convention.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\System.Composition.Hosting.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\System.Composition.Runtime.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\System.Composition.TypedParts.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\cs\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\de\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\es\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\fr\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\it\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\ja\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\ko\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\pl\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\ru\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\tr\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\cs\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\de\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\es\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\fr\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\it\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\ja\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\ko\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\pl\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\ru\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\tr\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\cs\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\de\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\es\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\fr\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\it\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\ja\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\ko\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\pl\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\ru\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\tr\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\cs\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\de\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\es\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\fr\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\it\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\ja\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\ko\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\pl\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\ru\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\tr\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\bin\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\vita-asistente.csproj.AssemblyReference.cache
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\rpswa.dswa.cache.json
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\vita-asistente.GeneratedMSBuildEditorConfig.editorconfig
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\vita-asistente.AssemblyInfoInputs.cache
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\vita-asistente.AssemblyInfo.cs
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\vita-asistente.csproj.CoreCompileInputs.cache
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\vita-asistente.MvcApplicationPartsAssemblyInfo.cache
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\vita-asistente.RazorAssemblyInfo.cache
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\vita-asistente.RazorAssemblyInfo.cs
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\rjimswa.dswa.cache.json
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\rjsmrazor.dswa.cache.json
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\rjsmcshtml.dswa.cache.json
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\scopedcss\Views\Shared\_Layout.cshtml.rz.scp.css
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\scopedcss\bundle\vita-asistente.styles.css
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\scopedcss\projectbundle\vita-asistente.bundle.scp.css
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\staticwebassets.build.json
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\staticwebassets.build.json.cache
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\staticwebassets.development.json
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\staticwebassets.build.endpoints.json
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\swae.build.ex.cache
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\vita-asi.5693690E.Up2Date
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\vita-asistente.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\refint\vita-asistente.dll
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\vita-asistente.pdb
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\vita-asistente.genruntimeconfig.cache
|
||||
C:\Users\franc\source\repos\vita-asistente\obj\Debug\net8.0\ref\vita-asistente.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\appsettings.Development.json
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\appsettings.json
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\vita-asistente.staticwebassets.runtime.json
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\vita-asistente.staticwebassets.endpoints.json
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\vita-asistente.exe
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\vita-asistente.deps.json
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\vita-asistente.runtimeconfig.json
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\vita-asistente.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\vita-asistente.pdb
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Humanizer.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Microsoft.AspNetCore.Cryptography.Internal.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Microsoft.AspNetCore.Cryptography.KeyDerivation.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Microsoft.AspNetCore.Identity.EntityFrameworkCore.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Microsoft.Bcl.AsyncInterfaces.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Microsoft.CodeAnalysis.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Microsoft.CodeAnalysis.CSharp.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Microsoft.CodeAnalysis.CSharp.Workspaces.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Microsoft.CodeAnalysis.Workspaces.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.Abstractions.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.Design.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Microsoft.EntityFrameworkCore.Relational.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Microsoft.Extensions.Caching.Memory.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Microsoft.Extensions.DependencyInjection.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Microsoft.Extensions.DependencyModel.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Microsoft.Extensions.Identity.Core.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Microsoft.Extensions.Identity.Stores.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Microsoft.Extensions.Logging.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Microsoft.Extensions.Logging.Abstractions.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Microsoft.Extensions.Options.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Mono.TextTemplating.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\MySqlConnector.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\Pomelo.EntityFrameworkCore.MySql.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\System.CodeDom.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\System.Composition.AttributedModel.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\System.Composition.Convention.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\System.Composition.Hosting.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\System.Composition.Runtime.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\System.Composition.TypedParts.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\cs\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\de\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\es\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\fr\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\it\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\ja\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\ko\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\pl\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\ru\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\tr\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\cs\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\de\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\es\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\fr\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\it\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\ja\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\ko\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\pl\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\ru\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\tr\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.CSharp.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\cs\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\de\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\es\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\fr\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\it\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\ja\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\ko\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\pl\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\ru\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\tr\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\cs\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\de\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\es\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\fr\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\it\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\ja\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\ko\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\pl\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\pt-BR\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\ru\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\tr\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\zh-Hans\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\bin\Debug\net8.0\zh-Hant\Microsoft.CodeAnalysis.Workspaces.resources.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\vita-asistente.csproj.AssemblyReference.cache
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\rpswa.dswa.cache.json
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\vita-asistente.GeneratedMSBuildEditorConfig.editorconfig
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\vita-asistente.AssemblyInfoInputs.cache
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\vita-asistente.AssemblyInfo.cs
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\vita-asistente.csproj.CoreCompileInputs.cache
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\vita-asistente.MvcApplicationPartsAssemblyInfo.cache
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\vita-asistente.RazorAssemblyInfo.cache
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\vita-asistente.RazorAssemblyInfo.cs
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\rjimswa.dswa.cache.json
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\rjsmrazor.dswa.cache.json
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\rjsmcshtml.dswa.cache.json
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\scopedcss\Views\Shared\_Layout.cshtml.rz.scp.css
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\scopedcss\bundle\vita-asistente.styles.css
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\scopedcss\projectbundle\vita-asistente.bundle.scp.css
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\staticwebassets.build.json
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\staticwebassets.build.json.cache
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\staticwebassets.development.json
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\staticwebassets.build.endpoints.json
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\swae.build.ex.cache
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\vita-asi.5693690E.Up2Date
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\vita-asistente.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\refint\vita-asistente.dll
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\vita-asistente.pdb
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\vita-asistente.genruntimeconfig.cache
|
||||
C:\Users\franc\source\repos\Vita-Asistente\obj\Debug\net8.0\ref\vita-asistente.dll
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -55,10 +55,10 @@
|
||||
- [x] CRUD de roles (`RolesController`)
|
||||
- En el mismo index generar modales para poder editar los roles, y ademas poder habilitarlos o deshabilitarlos.
|
||||
|
||||
- [ ] Modelo y migración de `Paciente`
|
||||
- [x] Modelo y migración de `Paciente`
|
||||
- Campos: `Nombres`, `Apellidos`, `FechaNacimiento`, `Genero`, `DocumentoIdentidad` (único), `Direccion`, `Telefono`, `Email`, `ObraSocial`, `FechaRegistro`, FK a `UsuarioAlta`
|
||||
|
||||
- [ ] CRUD de pacientes (`PacientesController`)
|
||||
- [x] CRUD de pacientes (`PacientesController`)
|
||||
- Alta, baja lógica, modificación
|
||||
- Búsqueda por nombre / documento
|
||||
- ViewModels y validaciones
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
-- Script to clean up the improper FK constraint from cleanup migration
|
||||
ALTER TABLE Pacientes
|
||||
DROP FOREIGN KEY FK_Pacientes_AspNetUsers_Id;
|
||||
@@ -0,0 +1,26 @@
|
||||
-- Data migration script to transfer existing patient data from AspNetUsers
|
||||
-- to the new Pacientes table after cleanup migration
|
||||
|
||||
-- First, let's identify users who had patient data by checking related tables
|
||||
-- This assumes you can determine which users were patients based on your application logic
|
||||
-- Modify this query according to how you identified patients in your original implementation
|
||||
|
||||
SELECT 'INSERT INTOPacientes (Id, NombreContactoEmergencia, TelefonoContactoEmergencia, '
|
||||
|| 'TipoSangre, TieneAlergiasMedicamentosas, AlergiasDescripcion, FechaRegistro) VALUES '
|
||||
|| "('" || Id || "', 'old_value1', 'old_value2', 'O+', 0, '', UTC_TIMESTAMP());"
|
||||
FROM AspNetUsers
|
||||
where Discriminator = 'Paciente'; -- This won't work now since we removed the column
|
||||
|
||||
-- Since we already removed the discriminator and patient columns, you'll need to
|
||||
-- manually identify which users were patients and use placeholders for their data
|
||||
|
||||
-- Example query to generate INSERT statements (modify with actual data):
|
||||
-- SELECT
|
||||
-- 'INSERT INTO Pacientes (Id, NombreContactoEmergencia, TelefonoContactoEmergencia, '
|
||||
-- || 'TipoSangre, TieneAlergiasMedicamentosas, AlergiasDescripcion, FechaRegistro) VALUES '
|
||||
-- || "('" || Id || "', '', '', '', 0, '', UTC_TIMESTAMP());"
|
||||
-- FROM AspNetUsers
|
||||
-- WHERE [your_condition_to_identify_patients];
|
||||
|
||||
-- After running the generated INSERT statements manually, verify the data:
|
||||
SELECT * FROM Pacientes;
|
||||
@@ -0,0 +1,105 @@
|
||||
.sidebar {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 280px;
|
||||
height: 100vh;
|
||||
background-color: #ffffff;
|
||||
border-right: 1px solid #dee2e6;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
z-index: 1030;
|
||||
transition: transform 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
.sidebar.collapsed {
|
||||
transform: translateX(-280px);
|
||||
width: 60px;
|
||||
}
|
||||
|
||||
.sidebar .sidebar-header {
|
||||
border-bottom: 1px solid #e9ecef;
|
||||
padding-top: 1rem;
|
||||
padding-bottom: 0.5rem;
|
||||
background-color: white;
|
||||
z-index: 1040;
|
||||
}
|
||||
|
||||
.sidebar.collapsed .sidebar-header {
|
||||
justify-content: center !important;
|
||||
}
|
||||
|
||||
.sidebar h4.section-title {
|
||||
font-size: 0.875rem;
|
||||
color: #6c757d;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
.sidebar .nav-link {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0.5rem 1.25rem;
|
||||
color: #495057;
|
||||
text-decoration: none;
|
||||
border-radius: 4px;
|
||||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.sidebar .nav-link:hover {
|
||||
background-color: #f8f9fa;
|
||||
color: #1b6ec2;
|
||||
}
|
||||
|
||||
.sidebar .nav-link.active {
|
||||
background-color: #1b6ec2;
|
||||
color: white;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.sidebar.collapsed .nav-link {
|
||||
justify-content: center;
|
||||
padding: 0.75rem 0.625rem;
|
||||
}
|
||||
|
||||
.sidebar.collapsed .nav-link span.me-2,
|
||||
.sidebar.collapsed .sidebar-user-info > div,
|
||||
.sidebar.collapsed .sidebar-footer button {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.sidebar .section-title {
|
||||
margin-left: 1.25rem;
|
||||
margin-right: 1.25rem;
|
||||
}
|
||||
|
||||
.sidebar.collapsed h4.section-title {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.sidebar .sidebar-user-info {
|
||||
font-size: 0.875rem;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
.sidebar .sidebar-footer form {
|
||||
margin-top: auto;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.sidebar:not(.collapsed) {
|
||||
transform: translateX(-280px);
|
||||
}
|
||||
|
||||
.sidebar.collapsed {
|
||||
transform: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
.bi {
|
||||
display: inline-block;
|
||||
font-style: normal;
|
||||
font-variant: normal;
|
||||
line-height: 1;
|
||||
}
|
||||
@@ -20,3 +20,95 @@ html {
|
||||
body {
|
||||
margin-bottom: 60px;
|
||||
}
|
||||
|
||||
.app-wrapper {
|
||||
display: flex;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
width: 240px;
|
||||
background-color: #2c3e50;
|
||||
color: #fff;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
overflow-y: auto;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.sidebar-brand {
|
||||
display: block;
|
||||
padding: 1rem 1.25rem;
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.sidebar-brand:hover {
|
||||
color: #fff;
|
||||
background-color: rgba(255, 255, 255, 0.05);
|
||||
}
|
||||
|
||||
.sidebar-nav {
|
||||
padding: 1rem 0;
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
|
||||
.sidebar-heading {
|
||||
padding: 1rem 1.25rem 0.5rem;
|
||||
margin: 0;
|
||||
font-size: 0.75rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.08em;
|
||||
color: rgba(255, 255, 255, 0.5);
|
||||
}
|
||||
|
||||
.sidebar-nav .nav-link {
|
||||
color: rgba(255, 255, 255, 0.8);
|
||||
padding: 0.5rem 1.25rem;
|
||||
display: block;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.sidebar-nav .nav-link:hover,
|
||||
.sidebar-nav .nav-link.active {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.main-content {
|
||||
margin-left: 240px;
|
||||
flex: 1 1 auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.topbar {
|
||||
background-color: #f8f9fa;
|
||||
border-bottom: 1px solid #dee2e6;
|
||||
padding: 0.75rem 1.5rem;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.topbar .navbar-text {
|
||||
color: #343a40;
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.sidebar {
|
||||
position: static;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.main-content {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user