public IActionResult Get() => Json(factory.GetAll().OrderByDescending(x => x.Id));
public IActionResult Get() => Json(factory.GetAll());
public IActionResult Post([FromBody] Compras compra) { var model = compra .ApplyRules() .validate(); if (!model.IsValid) { return(BadRequest(model.Error)); } if (compra.Id > 0) { //Actializar encabezado var compraModificada = factory.FirstOrDefault(x => x.Id == compra.Id); model = compra.validate(compraModificada); if (!model.IsValid) { return(BadRequest(model.Error)); } compraModificada.CopyAllFromExcept(compra, x => new { x.Id, x.EtapaId }); factory.Save(); //eliminar registros anteriores var oldComprasDetalle = factoryDetalle.GetAll(x => x.CompraId == compra.Id); var idsToDelete = oldComprasDetalle.Select(x => x.InventarioId).Except(compra.ComprasDetalle.Select(x => x.InventarioId)); var objToDelete = oldComprasDetalle.Where(x => idsToDelete.Contains(x.InventarioId)).ToList(); objToDelete.ForEach(x => factoryDetalle.Delete(x)); //agregar nuevos registros y actualizar foreach (var item in compra.ComprasDetalle) { var comprasDetalle = oldComprasDetalle.FirstOrDefault(x => x.InventarioId == item.InventarioId); if (comprasDetalle == null) { factoryDetalle.Insert(item); } else { comprasDetalle.CopyAllFromExcept(item, x => new { x.Id, x.CompraId, x.Compra }); } } factoryDetalle.Save(); } else { compra.EtapaId = (int)CompraEtapas.Pendiente; factory.Insert(compra); factory.Save(); } return(Json(compra)); }