diff --git a/src/Supermarket.API/Controllers/CategoriaController.cs b/src/Supermarket.API/Controllers/CategoriaController.cs
index 184e821..88eaab8 100644
--- a/src/Supermarket.API/Controllers/CategoriaController.cs
+++ b/src/Supermarket.API/Controllers/CategoriaController.cs
@@ -19,25 +19,12 @@ public class CategoriaController : ControllerBase
/// Metodo contructor de la clase
///
///
- public CategoriaController(ICategoriaRepo CategoriaContexto)
+ public CategoriaController(ICategoriaRepo CategoriaContext)
{
- context = CategoriaContexto;
+ context = CategoriaContext;
}
- // GET api/values
- [HttpGet]
-
- //Secuencial
- public ActionResult> Get()
- {
- //return new string[] { "value1", "value2" };
- ///
- /// Retorna lista de categoria
- ///
- ///
- return context.GetCategorias().ToList();
- }
-
//Asincrona --> Usa paralelismo en el servidor
+ [HttpGet]
public async Task> GetAsync()
{
@@ -50,9 +37,36 @@ public async Task> GetAsync()
// GET api/values/5
[HttpGet("{id}")]
- public ActionResult FindCategoriaById(int id)
+ public async Task HallarCategoriaById(int id)
+ {
+ Categoria resultado = await context.GetCategoriasAsyncById(id);
+ return resultado;
+ }
+
+ [HttpPost]
+ public async Task crearCategoria([FromBody] Categoria categoria)
+ {
+ if(!ModelState.IsValid)
+ {
+ return BadRequest(ModelState);
+ }
+ context.crearCategoria(categoria);
+ var guardadoOk = await context.guardarCategoria(categoria);
+ return Ok();
+ }
+
+ //DELETE api/categoria/1
+ [HttpDelete("{id}")]
+ public async Task eliminarCategoria(int id)
{
- return "value";
+ Categoria existe = await context.GetCategoriasAsyncById(id);
+ if(existe == null)
+ {
+ return NotFound();
+ }
+ context.eliminarCategoria(existe);
+ var guardadoOk = await context.guardarCategoria(existe);
+ return Ok();
}
}
diff --git a/src/Supermarket.API/Dominio/Modelos/Producto.cs b/src/Supermarket.API/Dominio/Modelos/Producto.cs
index 53d6add..0cab9d5 100644
--- a/src/Supermarket.API/Dominio/Modelos/Producto.cs
+++ b/src/Supermarket.API/Dominio/Modelos/Producto.cs
@@ -1,22 +1,29 @@
+using System;
+using System.Net.Http.Headers;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.ComponentModel.DataAnnotations;
namespace Supermarket.API.Dominio.Modelos
{
public class Producto
{
+ [Key]
///
/// Contiene el id del producto
///
///
public int id { get; set;}
+
+ [Required]
///
/// Contiene el nombre del producto
///
///
- public string Nombre {get; set;}
+ public string nombre {get; set;}
///
/// Contiene la cantidad de producto
///
///
- public int CantidadxPaquete {get; set;}
+ public int cantidadxPaquete {get; set;}
//public EUnidadDeMedida unidadDeMedida {get; set;}
///
/// Contiene el Id de la categoria a la que pertenece el producto
diff --git a/src/Supermarket.API/Dominio/Persistencia/SupermarketApiContext.cs b/src/Supermarket.API/Dominio/Persistencia/SupermarketApiContext.cs
index cd82b33..442e45a 100644
--- a/src/Supermarket.API/Dominio/Persistencia/SupermarketApiContext.cs
+++ b/src/Supermarket.API/Dominio/Persistencia/SupermarketApiContext.cs
@@ -8,32 +8,53 @@ public class SupermarketApiContext : DbContext
///constructor
public SupermarketApiContext(DbContextOptions options) : base(options)
{
- PoblarBase();
+ //PoblarBase();
Database.EnsureCreated();
}
//Tablas "props de la clase"
public DbSet categorias {get; set;}
- public DbSet productos {get; set;}
+ public DbSet productos {get; set;}
- //Seed de la base(semillas de informacion) -- BD en memoria
- public void PoblarBase()
+ ///
+ /// Metodo indicado para definir la estructura de la BD
+ ///
+ protected override void OnModelCreating(ModelBuilder builder)
{
- this.categorias.Add(
- new Categoria{
- id = 1,
- nombre = "Categoria 1",
- }
- );
+ //Fluent API
+ builder.Entity().ToTable("Categorias");
+ builder.Entity().HasKey(categoria => categoria.id);
+ builder.Entity().Property(categoria => categoria.id).ValueGeneratedOnAdd();
+ builder.Entity().Property(categoria => categoria.nombre).HasColumnName("NombreCompleto");
+ builder.Entity()
+ .Property(categoria => categoria.nombre)
+ .IsRequired()
+ .HasMaxLength(30);
- this.categorias.Add(
- new Categoria{
- id = 2,
- nombre = "Categoria 2",
- }
+ builder.Entity().HasData(
+ new Categoria(){ id =1, nombre = "Categoria 1" },
+ new Categoria(){ id =2, nombre = "Categoria 2" },
+ new Categoria(){ id =3, nombre = "Categoria 3" }
);
- //commit
- this.SaveChanges();
}
+ //Seed de la base(semillas de informacion) -- BD en memoria
+ //public void PoblarBase()
+ //{
+ // this.categorias.Add(
+ // new Categoria{
+ // id = 1,
+ // nombre = "Categoria 1",
+ //}
+ //);
+
+ //this.categorias.Add(
+ //new Categoria{
+ // id = 2,
+ // nombre = "Categoria 2",
+ //}
+ //);
+ //commit
+ //this.SaveChanges();
+ //}
}
}
\ No newline at end of file
diff --git a/src/Supermarket.API/Dominio/Repositorios/CategoriaRepo.cs b/src/Supermarket.API/Dominio/Repositorios/CategoriaRepo.cs
index 6b4e37c..e99eeae 100644
--- a/src/Supermarket.API/Dominio/Repositorios/CategoriaRepo.cs
+++ b/src/Supermarket.API/Dominio/Repositorios/CategoriaRepo.cs
@@ -19,22 +19,29 @@ public CategoriaRepo(SupermarketApiContext apicontext)
db = apicontext;
}
- ///
- /// Excepcion de FinsCategoriaById
- ///
- ///
- ///
+ public void crearCategoria(Categoria categoria)
+ {
+ db.categorias.AddAsync(categoria);
+ }
- ///
- /// Devuelve lista de Categorias
- ///
- ///
- public IEnumerable GetCategorias()
+ public void editarCategoria(int id, Categoria categoria)
{
- IEnumerable lista = db.categorias.ToList();
- return lista;
+ db.Entry(categoria).State = EntityState.Modified;
+ db.categorias.Update(categoria);
}
+ public void eliminarCategoria(Categoria categoria)
+ {
+ db.categorias.Remove(categoria);
+ }
+
+ public async Task guardarCategoria(Categoria categoria)
+ {
+ await db.SaveChangesAsync();
+ return categoria;
+ }
+
+
///
/// Metodo Asincrono
/// Devuelve lista de Categorias
@@ -46,9 +53,11 @@ public async Task> GetCategoriasAsync()
return lista;
}
- public Categoria FindCategoriaById(int id)
+ public async Task GetCategoriasAsyncById(int id)
{
- throw new System.NotImplementedException();
+ Categoria resultado = await db.categorias.FindAsync(id);
+ return resultado;
}
+
}
}
\ No newline at end of file
diff --git a/src/Supermarket.API/Dominio/Repositorios/ICategoriaRepo.cs b/src/Supermarket.API/Dominio/Repositorios/ICategoriaRepo.cs
index d7e6562..15895ea 100644
--- a/src/Supermarket.API/Dominio/Repositorios/ICategoriaRepo.cs
+++ b/src/Supermarket.API/Dominio/Repositorios/ICategoriaRepo.cs
@@ -6,13 +6,6 @@ namespace Supermarket.API.Dominio.Repositorios
{
public interface ICategoriaRepo
{
- ///
- ///Metodo Sincrono
- /// Devuelve la lista de categorias desde la base de datos
- ///
- ///
- IEnumerable GetCategorias();
-
///
/// Permite obtener lista categorias/Metodo Asincrono
///
@@ -24,6 +17,25 @@ public interface ICategoriaRepo
///
/// Identificador de la categoria
///
- Categoria FindCategoriaById(int id);
+ Task GetCategoriasAsyncById(int id);
+
+ ///
+ /// Metodo que permite la creacion de una categoria, recibe como parametro una instancia de tipo Categoria
+ ///
+ ///
+ void crearCategoria(Categoria categoria);
+ ///
+ /// Metodo para editar una categoria, recibe una Categoria como parametro
+ ///
+ ///
+ void editarCategoria(int id, Categoria categoria);
+ ///
+ /// Metodo de eliminacion de una categoria, Recibe una instancia de
+ /// tipo Categoria como parametro
+ ///
+ ///
+ void eliminarCategoria(Categoria categoria);
+
+ Task guardarCategoria(Categoria categoria);
}
}
\ No newline at end of file