public IActionResult Post([FromBody] Inventario inventario)
        {
            var numeroMax = 0;

            if (inventario.Id > 0)
            {
                var inventarioModificado = factory.FirstOrDefault(x => x.Id == inventario.Id);

                if (inventarioModificado.FamiliaId != inventario.FamiliaId)
                {
                    numeroMax = getMax(inventario.FamiliaId);
                }

                inventarioModificado.CopyFrom(inventario, x => new
                {
                    x.FamiliaId,
                    x.PresentacionId,
                    x.UnidadMedidaId,
                    x.Iva,
                    x.StockMinimo,
                    x.Nombre,
                    x.Descripcion,
                    x.EstadoId,
                    x.Numero,
                    x.Servicio
                });

                if (numeroMax != 0)
                {
                    inventarioModificado.Numero = numeroMax;
                }
            }
            else
            {
                numeroMax         = getMax(inventario.FamiliaId);
                inventario.Numero = numeroMax;
                factory.Insert(inventario);
            }

            factory.Save();

            return(Json(inventario));
        }
        public IActionResult FirstOrDefault(long tickts)
        {
            var fecha = new DateTime(tickts).Date;

            return(Json(factory.FirstOrDefault(x => x.Fecha == fecha)));
        }
Exemple #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));
        }