Skip to content

Commit

Permalink
Merge pull request #17 from ojgarciab/Mejora_3
Browse files Browse the repository at this point in the history
Implementado agregar usuarios
  • Loading branch information
ojgarciab committed Mar 14, 2016
2 parents fc3d3ae + 07386d8 commit 7a679ba
Show file tree
Hide file tree
Showing 4 changed files with 111 additions and 7 deletions.
47 changes: 44 additions & 3 deletions src/Usuarios.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,50 @@ public function testIt($bool = true)
return $bool;
}

public static function createUsuario()
{
// TODO: Crear usuario nuevo con los datos enviados en el formulario
public static function createUsuario(
\Psr\Http\Message\ServerRequestInterface $peticion,
\Psr\Http\Message\ResponseInterface $respuesta,
$argumentos
) {
/* Configuramos el tipo MIME correcto para una salida JSON */
$respuesta = $respuesta->withHeader('Content-Type', 'application/json');
$body = $respuesta->getBody();
try {
/* Creamos el usuario usando los datos enviados en el formulario */
$conexion = \miPDO\Conexion::obtenerPDO();
$consulta = $conexion->prepare(
'INSERT INTO usuarios (usuario, nombre, apellidos) VALUES (:usuario, :nombre, :apellidos)'
);
$datos = $peticion->getParsedBody();
$consulta->bindValue(':usuario', $datos['usuario'], \PDO::PARAM_STR);
$consulta->bindValue(':nombre', $datos['nombre'], \PDO::PARAM_STR);
$consulta->bindValue(':apellidos', $datos['apellidos'], \PDO::PARAM_STR);
$consulta->execute();
if ($consulta->rowCount() === 1) {
$body->write(
json_encode([
'error' => false,
'mensaje' => 'Registro agregado correctamente',
])
);
} else {
$body->write(
json_encode([
'error' => true,
'mensaje' => 'No se ha agregado el registro',
])
);
}
} catch (\PDOException $e) {
/* En caso de error enviamos el mensaje */
$body->write(
json_encode([
'error' => true,
'mensaje' => $e->getMessage(),
])
);
}
return $respuesta;
}

public static function readUsuarios(
Expand Down
1 change: 1 addition & 0 deletions web/app.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

/* Rutas a los servicios RESTful */
$app->get('/usuarios', '\ASC\Usuarios::readUsuarios');
$app->put('/usuarios', '\ASC\Usuarios::createUsuario');
$app->get('/usuarios/{id}', '\ASC\Usuarios::readUsuario');
$app->put('/usuarios/{id}', '\ASC\Usuarios::updateUsuario');
$app->delete('/usuarios/{id}', '\ASC\Usuarios::deleteUsuario');
Expand Down
43 changes: 39 additions & 4 deletions web/js/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ angular.module('SlimCrudApp', []).
$routeProvider.
when('/', {templateUrl: 'plantillas/listado.html', controller: ControladorListado}).
when('/editar/:id', {templateUrl: 'plantillas/editar.html', controller: ControladorEditar}).
when('/agregar', {templateUrl: 'plantillas/agregar.html', controller: ControladorAgregar}).
otherwise({redirectTo: '/'});
}]);

Expand Down Expand Up @@ -45,7 +46,7 @@ function ControladorListado($scope, $http, $location) {
$scope.cargar();
}

/* Controlador para el listado de usuarios */
/* Controlador para editar usuarios */
function ControladorEditar($scope, $http, $location, $routeParams) {
var id = $routeParams.id;
$http.get('usuarios/' + id).success(function(datos) {
Expand All @@ -55,13 +56,12 @@ function ControladorEditar($scope, $http, $location, $routeParams) {
$scope.usuario = datos.usuario;
}
});

/* Control para borrar un usuario */
$scope.borrar = function(id) {
borrarUsuario($scope, $http, $location, id);
};
/* Control para actualizar los datos */
$scope.actualizar = function(usuario, id) {
$scope.actualizar = function(usuario) {
actualizarUsuario($scope, $http, $location, usuario, id);
};
$scope.aleatorio = function() {
Expand All @@ -71,6 +71,31 @@ function ControladorEditar($scope, $http, $location, $routeParams) {
}
}

/* Controlador para agregar usuarios */
function ControladorAgregar($scope, $http, $location, $routeParams) {
/* Mostramos mensaje de edición */
$scope.usuario = {
usuario: '',
nombre: '',
apellidos: ''
}
/* Control para borrar un usuario */
$scope.borrar = function(id) {
/* No hacemos nada, sólo salir */
$scope.activePath = $location.path('/');
};
/* Control para actualizar los datos */
$scope.agregar = function(usuario, id) {
agregarUsuario($scope, $http, $location, usuario);
};
$scope.aleatorio = function() {
$scope.usuario.nombre = generadorNombres.obtenerNombre();
$scope.usuario.apellidos = generadorNombres.obtenerApellido() + " " + generadorNombres.obtenerApellido();
$scope.usuario.usuario = $scope.usuario.nombre + " " + $scope.usuario.apellidos;
}
}


/************ UTILIDADES ************/

/* Función para borrar el usuario cuando se pulse el botón adecuado */
Expand All @@ -83,7 +108,6 @@ function borrarUsuario($scope, $http, $location, usuario) {
}

function actualizarUsuario($scope, $http, $location, usuario, id){

$http.put('usuarios/' + id, usuario).success(function(datos) {
if (datos.error === true) {
Popup.mostrar(datos.mensaje, 'danger');
Expand All @@ -94,6 +118,17 @@ function actualizarUsuario($scope, $http, $location, usuario, id){
});
}

function agregarUsuario($scope, $http, $location, usuario){
$http.put('usuarios', usuario).success(function(datos) {
if (datos.error === true) {
Popup.mostrar(datos.mensaje, 'danger');
} else {
Popup.mostrar(datos.mensaje, 'success');
$scope.activePath = $location.path('/');
}
});
}

/* Función para generar palabras capitales */
function convertirNombre(nombre) {
return nombre.replace(/\w\S*/g, function(palabra) {
Expand Down
27 changes: 27 additions & 0 deletions web/plantillas/agregar.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<form novalidate name="AddNewForm" id="add-new-form" method="post" action="">
<h2><button class="btn btn-success" ng-disabled="AddNewForm.$invalid || isUnchanged(usuario)" id="add-new-btn" ng-click="agregar(usuario, usuario.id)">
<i class="glyphicon glyphicon-plus"></i></button> Agregar usuario</h2>
<div class="row">
<div class="col-md-6">
<input type="hidden" ng-model="usuario.id" value="{{usuario.id}}" />
<div class="form-group">
<label for="usuario">Usuario:</label>
<input class="form-control" type="text" ng-model="usuario.usuario" value="{{usuario.usuario}}" required />
</div>
<div class="form-group">
<label for="nombre">Nombre:</label>
<input class="form-control" type="text" ng-model="usuario.nombre" value="{{usuario.nombre}}" required />
</div>
<div class="form-group">
<label for="apellidos">Apellidos:</label>
<input class="form-control" type="text" ng-model="usuario.apellidos" value="{{usuario.apellidos}}" required />
</div>
<div style="float: right;">
<button class="btn btn-danger" ng-click="borrar(usuario)"><i class="glyphicon glyphicon-trash"></i> Borrar</button>
<button class="btn btn-success" ng-disabled="AddNewForm.$invalid || isUnchanged(usuario)" id="add-new-btn" ng-click="agregar(usuario)">
<i class="glyphicon glyphicon-plus"></i> Agregar</button></div>
<a href="#/" class="btn btn-default"><i class="glyphicon glyphicon-backward"></i> Cancelar</a>
<button class="btn btn-info" ng-click="aleatorio()"><i class="glyphicon glyphicon-random"></i> Aleatorio</button>
</div>
</div>
</form>

0 comments on commit 7a679ba

Please sign in to comment.