59-.Servicios Web.API REST. MVC - Método Delete
- En este capítulo del curso de programación en c# con visual studio 2017,vamos a ver nuestro último método de esta miniserie API REST. En esta entrada vamos a crearnos un método DELETE. Este método lo utilizaremos para eliminar usuarios que ya existen en nuestro sistema. La petición a nuestro método nos permitira eliminar usuarios que tengamos registrados en nuestro sistema.- Para poder realizar esta tarea además de crearnos un método en nuestro controlador que nos permita llamarlos desde un cliente, debemos crear un procedimiento almacenado en nuestra base de datos que valide si existe el usuario en nuestra base de datos y que no tenga pedidos asociados.
- Os dejo el ejemplo en el video:
- También os dejo el código que hemos visto en nuestro ejemplo:
- Método delete de nuestro controlador:
public Resultado BorraUsuario(Usuario u)
{
Resultado r = new Resultado();
SqlConnection conexion = new SqlConnection(ConfigurationManager.ConnectionStrings["EmpresaConnectionString"].ConnectionString);
try
{
conexion.Open();
SqlCommand com = conexion.CreateCommand();
com.CommandType = System.Data.CommandType.StoredProcedure;
com.CommandText = "dbo.BorrarUsuario";
com.Parameters.Add("@email", SqlDbType.VarChar, 255).Value = u.Email;
com.ExecuteNonQuery();
r.TodoCorrecto = true;
}
catch (SqlException ex)
{
r.TodoCorrecto = false;
r.Error = ex.Message;
}
catch (Exception ex)
{
r.TodoCorrecto = false;
r.Error = ex.ToString();
}
finally
{
if (conexion != null && conexion.State == System.Data.ConnectionState.Open)
conexion.Close();
conexion.Dispose();
}
return r;
}
- Objeto usuario:
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Pruebas.Models
{
public class Usuario
{
string nombre = String.Empty;
string email = String.Empty;
byte[] pass = null;
string codPais = String.Empty;
public string Nombre { get => nombre; set => nombre = value; }
public string Email { get => email; set => email = value; }
public byte[] Pass { get => pass; set => pass = value; }
public string CodPais { get => codPais; set => codPais = value; }
}
}
- Procedimiento almacenado que se encarga de borrar al usaurio si procede:
@email varchar(255)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @emailAux varchar(255)
DECLARE @idAux int
SELECT @emailAux=Email,@idAux=IdUsuarios FROM Usuarios WITH(NOLOCK) WHERE email= @email
IF(@emailAux='')
BEGIN
RAISERROR('No existe un usuario con este email',16,1);
RETURN -1
END
IF( SELECT count(*) FROM dbo.Pedidos WITH(NOLOCK) WHERE IdUsuario=@idAux) > 0
BEGIN
RAISERROR('No podemos eliminar un usuario que tenga pedidos',16,1);
RETURN -1
END
DELETE FROM dbo.Usuarios WHERE email= @email
END