public ActionResult Authenticate(SimpleLoginDto login) { try { var tipoCuenta = _tipoCuentaService.GetByCriteria(TipoCuentaCriteria.Create().EqualNombre(login.TipoCuenta)); var user = _service.GetByCriteria(UsuarioCriteria.Create().ByTelefono(login.Telefono)); var cuentas = _cuentaService.GetCollectionByCriteria(CuentaUsuarioCriteria.Create().ByIdUsuario(user.Id.Value)); if (!cuentas.Any(item => item.IdTipoCuenta == tipoCuenta.Id && item.Password == StringHelper.GetSHA1(login.Password))) { return(Unauthorized()); } var token = JWTTokenGenerator.GenerateToken(login.Telefono); if (string.IsNullOrWhiteSpace(token)) { var error = new ValidationProblemDetails { Title = "Error de autenticación", Detail = "No se ha podido generar el token de autorización." }; return(ValidationProblem(error)); } return(Ok(new { token })); }catch { return(NoContent()); } }
public IActionResult Create(CuentaUsuarioDto cuentaUsuario) { try { if (cuentaUsuario.Usuario == null) { throw new ArgumentException("La información para la cuenta de usuario está incompleta."); } var tiposCuenta = _tipoCuentaService.GetAll(); if (!tiposCuenta.Any(item => item.Nombre.Equals("cliente", StringComparison.InvariantCultureIgnoreCase))) { throw new ArgumentException("No se ha encontrado el tipo de cuenta de cliente."); } if (_usuarioService.GetByCriteria(UsuarioCriteria.Create().ByTelefono(cuentaUsuario.Usuario.Telefono)) != null) { throw new Exception("El número telefónico proporcionado ya se encuentra registrado"); } var cuenta = _mapper.Map <CuentaUsuario>(cuentaUsuario); cuenta.IdTipoCuenta = tiposCuenta.First(item => item.Nombre.Equals("cliente", StringComparison.InvariantCultureIgnoreCase)).Id; var imagen = new Imagen { Image = ImageConvertHelper.Base64ToByteArray(cuentaUsuario.Usuario.Imagen), NombreImagen = cuentaUsuario.Usuario.NombreImagen }; cuenta.Usuario.Imagen = imagen; var result = _cuentaUsuarioService.Create(cuenta); result.Usuario.Cuentas.Clear(); return(Created("", result.Id)); } catch (DbUpdateException ex) { var error = new ValidationProblemDetails { Title = "Error de creacion de cuenta", Detail = (ex.InnerException as PostgresException).Detail }; return(ValidationProblem(error)); } catch (Exception ex) { var error = new ValidationProblemDetails { Title = "Error de creacion de cuenta", Detail = ex.Message }; return(ValidationProblem(error)); } }
public IActionResult GetByTelefono(string numero) { try { var usuario = _usuarioService.GetByCriteria(UsuarioCriteria.Create().ByTelefono(numero)); if (usuario == null) { return(NoContent()); } var cuentas = _cuentaUsuarioService.GetCollectionByCriteria(CuentaUsuarioCriteria.Create().ByIdUsuario(usuario.Id.Value)); if (cuentas == null) { return(NoContent()); } var tiposCuenta = _tipoCuentaService.GetAll(); var tipoConductor = tiposCuenta.FirstOrDefault(tc => tc.Nombre.Equals("conductor", StringComparison.InvariantCultureIgnoreCase)); if (tipoConductor == null) { return(NoContent()); } var cuenta = cuentas.FirstOrDefault(c => c.IdTipoCuenta == tipoConductor.Id); if (cuenta == null) { return(NoContent()); } return(Ok(new { cuenta.Id })); } catch (Exception ex) { return(BadRequest(ex.Message)); } }