Código fuente del sistema de inventarios con ASPNET Core (módulo empresas)

En este video desarrollare una pantalla para administrar las empresas del sistema de inventarios que estoy desarrollando con ASP.NET Core, las funcionalidades desarrolladas son las siguientes.
- Se crea el formulario HTML y los elementos son inputs text, file y select
- El input file lo utilizo para subir el logo de la empresa, se sube al servidor con Ajax
- En el código de servidor se desarrolla un CRUD con C# y el código para guarda el archivo del logotipo en el servidor.
- Con Ajax se navega en el paginado de la tabla de resultados de empresas.
- Se desarrolla una clase para consultar el Id del usuario autenticado
En este video se crea las clases Empresas, Catalogos y Archivos para el modelo de datos, a continuación, están definidas estas clases:
Empresas: almacena información de las empresas que forman parte del sistema de inventarios, la empresa matriz, una bodega, un almacén, una subsidiaria o una sucursal
public class Empresas
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Nombre { get; set; } = "";
public DateTime Fecha { get; set; }
public int UsuarioId { get; set; }
public string CorreoElectronico { get; set; } = "";
public string Telefono { get; set; } = "";
public int? MonedaId { get; set; }
public int? LogoId { get; set; }
public bool Activo { get; set; }
public string? Calle { get; set; } = "";
public string? Ciudad { get; set; } = "";
public string? Estado { get; set; } = "";
public string? CodigoPostal { get; set; } = "";
public int PaisId { get; set; }
public string? Descripcion { get; set; } = "";
public int TipoEmpresaId { get; set; }
[ForeignKey("TipoEmpresaId")]
public virtual Catalogos TipoEmpresa { get; set; } = new Catalogos();
[ForeignKey("PaisId")]
public virtual Catalogos Pais { get; set; } = new Catalogos();
public virtual IEnumerable<Compras> Compras { get; set; } = new List<Compras>();
public virtual IEnumerable<Contactos> Contactos { get; set; } = new List<Contactos>();
[ForeignKey("UsuarioId")]
public virtual Usuarios Usuarios { get; set; } = new Usuarios();
[ForeignKey("LogoId")]
public virtual Archivos Logo { get; set; } = new Archivos();
public virtual IEnumerable<Productos> Productos { get; set; } = new List<Productos>();
public virtual IEnumerable<Ventas> Ventas { get; set; } = new List<Ventas>();
}
Catálogos: este modelo se utiliza para almacenar información de los catálogos que se utilizan en el sistema, como países, tipos de empresas, entre otros.
public class Catalogos
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Texto { get; set; } = "";
public string Valor { get; set; } = "";
public string Descripcion { get; set; } = "";
public string Catalogo { get; set; } = "";
public int Orden { get; set; } = 1;
public bool Activo { get; set; } = true;
}
El modelo de los archivos almacena los archivos que carga el usuario, cómo logos, imágenes de producto, entre otros.
public class Archivos
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Archivo { get; set; } = "";
public string Tipo { get; set; } = "";
public bool Activo { get; set; } = true;
public DateTime Fecha { get; set; } = DateTime.Now;
}
Para obtener el Id del usuario autenticado, cree una clase para leer el Claim donde se almacena el Id:
public class AutenticacionHelper
{
public static int GetUsuario(HttpContext currentUser)
{
int UsuarioId = 0;
try
{
if (currentUser.User.HasClaim(c => c.Type == "UsuarioId"))
{
int.TryParse(currentUser.User.Claims.FirstOrDefault(c => c.Type == "UsuarioId")?.Value, out UsuarioId);
}
}
catch
{
}
return UsuarioId;
}
}
Puedes descargar el código del sistema de inventarios y la plantilla html en los siguientes botones.