public IHttpActionResult ChangePassword(ChangePassword cambioClave) { if (string.IsNullOrEmpty(cambioClave.Password)) throw new Exception("Ingrese la clave actual"); if (cambioClave.Password == cambioClave.NewPassword) throw new Exception("La clave nueva no debe ser igual a la anterior"); if (cambioClave.NewPassword != cambioClave.NewPasswordConfirm) throw new Exception("La clave nueva no coincide"); var bytesPwd = Convert.FromBase64String(cambioClave.NewPassword); var Pwd = Encoding.UTF8.GetString(bytesPwd); if (Pwd.Length < 4) throw new Exception("la nueva clave es muy corta"); using (var entities = new MoneyPoints_dlloEntities()) { var user = entities.Usuarios.FirstOrDefault(u => u.UsuarioId == cambioClave.UsuarioId && u.Password == cambioClave.Password); if (user == null) throw new Exception("Clave actual incorrecta"); user.Password = cambioClave.NewPassword; entities.Entry(user).State = System.Data.Entity.EntityState.Modified; entities.SaveChanges(); } return Ok(); }
public IHttpActionResult Authenticate(Usuario usuario) { //MoneyAuthorizeAttribute.AllowedUsers.Add(usuario); try { using (var entities = new MoneyPoints_dlloEntities()) { var user = entities.Usuarios.FirstOrDefault(u => u.Login == usuario.Login && u.Password == usuario.Password); if (user == null) { return BadRequest("Usuario y/o clave incorrectas."); } usuario.UsuarioId = user.UsuarioId; usuario.RolId = user.RolId; usuario.TerceroId = user.TerceroId; MoneyAuthorizeAttribute.AllowedUsers.Add(user); return Ok(usuario); } } catch (Exception ex) { return BadRequest(ex.Message); } }
public void FinalizarCompra(Venta venta) { try { using (var en = new MoneyPoints_dlloEntities()) { var compra = new Compra { AfiliadoId = venta.AliadoId, Fecha = DateTime.Now, Valor = venta.Valor, NumeroFactura = Guid.NewGuid().ToString().Split('-')[0], //Cambiar forma de generar numero de factura por un consecutivo, Estado = "Finalizada" //Cambiar para enumeracion }; compra.BeneficiariosClientesCompras.Add(new BeneficiariosClientesCompra { BeneficiariosClienteId = venta.BeneficiariosClienteId }); compra.DetallesCompras.Add(new DetallesCompra { Valor = venta.Valor }); en.Compras.Add(compra); var benefCliente = en.BeneficiariosClientes.Find(venta.BeneficiariosClienteId); //Restamos el saldo benefCliente.Saldo -= venta.Valor; if (benefCliente.Saldo < 0) throw new Exception("Fondos insuficientes para esta compra"); //todo: falta restar los puntos, se debe validar contra la equivalencia var equiv = en.Equivalencias.FirstOrDefault(e => e.ClienteId == benefCliente.ClienteId); var rel = equiv.Puntos / equiv.Valor; benefCliente.Puntos = Convert.ToInt32(Math.Round(benefCliente.Puntos * rel, 0)); en.Entry(benefCliente).State = EntityState.Modified; en.SaveChanges(); } Clients.Group(venta.ConnectionIdCliente).finalizarCompraCompleted("Compra realizada exitosamente."); } catch (Exception ex) { string details = ""; if (ex.InnerException != null) details = ex.InnerException.Message; Clients.Group(venta.ConnectionIdCliente).finalizarCompraCompleted("No se pudo finalizar la compra: " + ex.Message + details); } }
public IHttpActionResult ChangePIN(ChangePassword cambioClave) { if (cambioClave.PIN == cambioClave.NewPIN) throw new Exception("El nuevo PIN no debe ser igual al anterior"); if (cambioClave.NewPIN != cambioClave.ConfirmPIN) throw new Exception("El nuevo PIN no coincide"); try { var bytesPIN = System.Convert.FromBase64String(cambioClave.NewPIN); var PIN = Encoding.UTF8.GetString(bytesPIN); if (PIN.Length != 4) throw new Exception("El PIN debe ser de cuatro digitos"); } catch (Exception) { throw new Exception("No se pudo decodificar la clave, debe estar en base 64"); } using (var entities = new MoneyPoints_dlloEntities()) { var user = entities.Usuarios.FirstOrDefault(u => u.UsuarioId == cambioClave.UsuarioId); if (user == null) throw new Exception("Usuario no existe"); var benef = user.Tercero.Beneficiarios.ToList()[0]; if (benef.Pin != cambioClave.PIN) throw new Exception("PIN incorrecto"); benef.Pin = cambioClave.NewPIN; entities.Entry(benef).State = System.Data.Entity.EntityState.Modified; entities.SaveChanges(); } return Ok(); }
private bool ValidateUser(string userName, string password) { if (AllowedUsers.FirstOrDefault(u => u.Login == userName && u.Password == password) != null) { return true; } else { using (var entities = new MoneyPoints_dlloEntities()) { var user = entities.Usuarios.FirstOrDefault(u => u.Login == userName && u.Password == password); return !(user == null); } } }