Esempio n. 1
0
 public IActionResult Get() => Json(factory.GetAll().OrderByDescending(x => x.Id));
Esempio n. 2
0
 public IActionResult Get() => Json(factory.GetAll());
Esempio n. 3
0
        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));
        }