/// <summary> /// Permite agregar un nuevo historial /// </summary> /// <param name="usuarioId">Id del usuario</param> /// <param name="actividad">Tipo de actividad que realiza el usuario</param> /// <param name="nombreTabla">Tabla en la que se realiza el cambio</param> /// <param name="origenId">Id del registro modificado</param> /// <param name="observaciones">Observaciones de la modificación</param> /// <returns></returns> public async Task <bool> AgregarAsync(int usuarioId, int actividad, string nombreTabla, int origenId, string observaciones) { var tablaId = await ObtenerIdTablaAsync(nombreTabla); Historial historial = new Historial { Actividad = actividad, FechaHora = DateTime.Now, Observa = observaciones, OrigenId = origenId, TablaId = tablaId, UsuarioId = usuarioId }; contexto.Historial.Add(historial); contexto.SaveChanges(); return(true); }
/// <summary> /// Indica si el password es correcto, si no esta bloqueado el acceso /// por intentos incorrectos /// </summary> /// <param name="usuario">Datos del usuario</param> /// <param name="password">Password</param> /// <param name="codigo">Código para desbloquear el usuario</param> /// <returns></returns> public bool EsPasswordValido(Usuario usuario, string password, int codigo) { if (EsUsuarioBloqueado(usuario)) { if (EsPasswordCorrecto(usuario, password) && usuario.Codigo == codigo) { //Reiniciamos el número de intentos y el código para iniciar sesión usuario.Intentos = 0; usuario.Codigo = 0; contexto.SaveChanges(); return(true); } else { customError = new CustomError(423, this.localizacion.GetLocalizedHtmlString("PasswordLocked")); return(false); } } else { if (!EsPasswordCorrecto(usuario, password)) { usuario.Intentos = usuario.Intentos + 1; if (usuario.Intentos > MAXIMOS_INTENTOS) { Random r = new Random(); codigo = r.Next(0, 999999); usuario.Codigo = codigo; customError = new CustomError(423, this.localizacion.GetLocalizedHtmlString("PasswordLocked")); EnviaCorreoIntentosIncorrectos(_path, usuario.Clave, usuario.Email, codigo); } else { customError = new CustomError(400, this.localizacion.GetLocalizedHtmlString("PasswordIncorrecto")); } return(false); } } return(true); }
/// <summary> /// Guarda los datos del acceso del usuario /// </summary> /// <param name="token">Datos del token</param> /// <param name="usuarioId">Id del usuario</param> /// <param name="ip">Ip de la cual se conecta el usuario</param> /// <param name="navegador">Navegador del cual se conecta el usuario</param> /// <returns></returns> public async Task <bool> GuardarAccesoAsync(TokenDTO token, int usuarioId, string ip, string navegador) { IPGeoLocation ipGeoLocation = new IPGeoLocation(); if (datosIP == null) { datosIP = await ObtenerDatosIPAsync(ip, ipGeoLocation); } var usuarioAcceso = new UsuarioAcceso(); usuarioAcceso.Ciudad = datosIP.city; usuarioAcceso.Estado = datosIP.subdivision; usuarioAcceso.Navegador = navegador; usuarioAcceso.UsuarioId = usuarioId; usuarioAcceso.Fecha = DateTime.Now; usuarioAcceso.Token = token.Token.Split(".")[2]; usuarioAcceso.Activo = true; usuarioAcceso.SistemaOperativo = "Default"; usuarioAcceso.RefreshToken = token.RefreshToken; usuarioAcceso.Navegador = "Default"; contexto.UsuarioAcceso.Add(usuarioAcceso); contexto.SaveChanges(); return(true); }
/// <summary> /// Constructro de la clase /// </summary> /// <param name="contexto"></param> public static void Inicializar(CaducaContext contexto) { //Si no es base de datos en memoria no se agrega nada if (contexto.Database.ProviderName != "Microsoft.EntityFrameworkCore.InMemory" && contexto.Database.ProviderName != "Microsoft.EntityFrameworkCore.Sqlite") { return; } //Te aseguras que la base de datos haya sido creada contexto.Database.EnsureCreated(); var categorias = new Categoria[] { /*01*/ new Categoria { Clave = 1, Nombre = "Análgesicos" }, }; foreach (Categoria registro in categorias) { contexto.Categoria.Add(registro); } var productos = new Producto[] { /*01*/ new Producto { Clave = 1, Nombre = "Producto 1" }, }; foreach (Producto registro in productos) { contexto.Producto.Add(registro); } var clientes = new Cliente[] { /*01*/ new Cliente { Clave = 1, NombreComercial = "Cliente 1", Activo = true, RazonSocial = "Cliente 1", Direccion = "Calle #1" }, }; foreach (Cliente registro in clientes) { contexto.Cliente.Add(registro); } contexto.SaveChanges(); var caducidades = new Caducidad[] { /*01*/ new Caducidad { ClienteId = 1, ProductoId = 1, Cantidad = 5, Fecha = DateTime.Now }, }; foreach (Caducidad registro in caducidades) { contexto.Caducidad.Add(registro); } contexto.SaveChanges(); }