Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

cambios clase 11/06/2020 #70

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 32 additions & 18 deletions src/Supermarket.API/Controllers/CategoriaController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,25 +19,12 @@ public class CategoriaController : ControllerBase
/// Metodo contructor de la clase
/// </summary>
/// <param name="CategoriaContexto"></param>
public CategoriaController(ICategoriaRepo CategoriaContexto)
public CategoriaController(ICategoriaRepo CategoriaContext)
{
context = CategoriaContexto;
context = CategoriaContext;
}
// GET api/values
[HttpGet]

//Secuencial
public ActionResult<IEnumerable<Categoria>> Get()
{
//return new string[] { "value1", "value2" };
/// <summary>
/// Retorna lista de categoria
/// </summary>
/// <returns></returns>
return context.GetCategorias().ToList();
}

//Asincrona --> Usa paralelismo en el servidor
[HttpGet]
public async Task<IEnumerable<Categoria>> GetAsync()
{

Expand All @@ -50,9 +37,36 @@ public async Task<IEnumerable<Categoria>> GetAsync()

// GET api/values/5
[HttpGet("{id}")]
public ActionResult<string> FindCategoriaById(int id)
public async Task<Categoria> HallarCategoriaById(int id)
{
Categoria resultado = await context.GetCategoriasAsyncById(id);
return resultado;
}

[HttpPost]
public async Task<ActionResult> 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<ActionResult> 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();
}

}
Expand Down
11 changes: 9 additions & 2 deletions src/Supermarket.API/Dominio/Modelos/Producto.cs
Original file line number Diff line number Diff line change
@@ -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]
/// <summary>
/// Contiene el id del producto
/// </summary>
/// <value></value>
public int id { get; set;}

[Required]
/// <summary>
/// Contiene el nombre del producto
/// </summary>
/// <value></value>
public string Nombre {get; set;}
public string nombre {get; set;}
/// <summary>
/// Contiene la cantidad de producto
/// </summary>
/// <value></value>
public int CantidadxPaquete {get; set;}
public int cantidadxPaquete {get; set;}
//public EUnidadDeMedida unidadDeMedida {get; set;}
/// <summary>
/// Contiene el Id de la categoria a la que pertenece el producto
Expand Down
55 changes: 38 additions & 17 deletions src/Supermarket.API/Dominio/Persistencia/SupermarketApiContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,32 +8,53 @@ public class SupermarketApiContext : DbContext
///constructor
public SupermarketApiContext(DbContextOptions<SupermarketApiContext> options) : base(options)
{
PoblarBase();
//PoblarBase();
Database.EnsureCreated();
}
//Tablas "props de la clase"

public DbSet<Categoria> categorias {get; set;}
public DbSet<Producto> productos {get; set;}
public DbSet<Producto> productos {get; set;}

//Seed de la base(semillas de informacion) -- BD en memoria
public void PoblarBase()
/// <summary>
/// Metodo indicado para definir la estructura de la BD
/// </summary>
protected override void OnModelCreating(ModelBuilder builder)
{
this.categorias.Add(
new Categoria{
id = 1,
nombre = "Categoria 1",
}
);
//Fluent API
builder.Entity<Categoria>().ToTable("Categorias");
builder.Entity<Categoria>().HasKey(categoria => categoria.id);
builder.Entity<Categoria>().Property(categoria => categoria.id).ValueGeneratedOnAdd();
builder.Entity<Categoria>().Property(categoria => categoria.nombre).HasColumnName("NombreCompleto");
builder.Entity<Categoria>()
.Property(categoria => categoria.nombre)
.IsRequired()
.HasMaxLength(30);

this.categorias.Add(
new Categoria{
id = 2,
nombre = "Categoria 2",
}
builder.Entity<Categoria>().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();
//}
}
}
37 changes: 23 additions & 14 deletions src/Supermarket.API/Dominio/Repositorios/CategoriaRepo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,22 +19,29 @@ public CategoriaRepo(SupermarketApiContext apicontext)
db = apicontext;
}

/// <summary>
/// Excepcion de FinsCategoriaById
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public void crearCategoria(Categoria categoria)
{
db.categorias.AddAsync(categoria);
}

/// <summary>
/// Devuelve lista de Categorias
/// </summary>
/// <returns></returns>
public IEnumerable<Categoria> GetCategorias()
public void editarCategoria(int id, Categoria categoria)
{
IEnumerable<Categoria> 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<Categoria> guardarCategoria(Categoria categoria)
{
await db.SaveChangesAsync();
return categoria;
}


/// <summary>
/// Metodo Asincrono
/// Devuelve lista de Categorias
Expand All @@ -46,9 +53,11 @@ public async Task<IEnumerable<Categoria>> GetCategoriasAsync()
return lista;
}

public Categoria FindCategoriaById(int id)
public async Task<Categoria> GetCategoriasAsyncById(int id)
{
throw new System.NotImplementedException();
Categoria resultado = await db.categorias.FindAsync(id);
return resultado;
}

}
}
28 changes: 20 additions & 8 deletions src/Supermarket.API/Dominio/Repositorios/ICategoriaRepo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,6 @@ namespace Supermarket.API.Dominio.Repositorios
{
public interface ICategoriaRepo
{
/// <summary>
///Metodo Sincrono
/// Devuelve la lista de categorias desde la base de datos
/// </summary>
/// <returns></returns>
IEnumerable<Categoria> GetCategorias();

/// <summary>
/// Permite obtener lista categorias/Metodo Asincrono
/// </summary>
Expand All @@ -24,6 +17,25 @@ public interface ICategoriaRepo
/// </summary>
/// <param name="id">Identificador de la categoria</param>
/// <returns></returns>
Categoria FindCategoriaById(int id);
Task<Categoria> GetCategoriasAsyncById(int id);

/// <summary>
/// Metodo que permite la creacion de una categoria, recibe como parametro una instancia de tipo Categoria
/// </summary>
/// <param name="categoria"></param>
void crearCategoria(Categoria categoria);
/// <summary>
/// Metodo para editar una categoria, recibe una Categoria como parametro
/// </summary>
/// <param name="categoria"></param>
void editarCategoria(int id, Categoria categoria);
/// <summary>
/// Metodo de eliminacion de una categoria, Recibe una instancia de
/// tipo Categoria como parametro
/// </summary>
/// <param name="categoria"></param>
void eliminarCategoria(Categoria categoria);

Task<Categoria> guardarCategoria(Categoria categoria);
}
}