コード例 #1
0
        private async Task ValidateFieldsAsync(ProductoViewModel productoViewModel)
        {
            productoViewModel.Unidades = await _getHelper.GetUnidadByIdAsync((Guid)productoViewModel.UnidadID);

            //validate if register exist with that value
            var codeexist = await _context.Productos
                            .Include(p => p.Unidades)
                            .FirstOrDefaultAsync(p => p.Codigo == productoViewModel.Codigo &&
                                                 p.ProductoID != productoViewModel.ProductoID);

            if (codeexist != null)
            {
                ModelState.AddModelError("Codigo", "Ya existe un producto con este código.");
            }
            //validate field Tasa de Impuesto
            if (productoViewModel.TasaID == null || productoViewModel.TasaID == Guid.Empty)
            {
                ModelState.AddModelError("TasaID", "El campo Tasa de Impuesto es requerido");
            }
            //validate field Unidad
            if (productoViewModel.UnidadID == null || productoViewModel.UnidadID == Guid.Empty)
            {
                ModelState.AddModelError("UnidadID", "El campo Unidad es requerido");
            }
            else
            {
                //if field unidad have value, then, validate fields CodigoPieza and Cantidad
                if (productoViewModel.Unidades.Paquete)
                {
                    if (string.IsNullOrEmpty(productoViewModel.CodigoPieza))
                    {
                        ModelState.AddModelError("CodigoPieza", "El campo Unidad es requerido");
                    }
                    //if field CodigoPieza have value, then, validate if product exist
                    var codepieceexist = await _context.Productos
                                         .Include(p => p.Unidades)
                                         .FirstOrDefaultAsync(p => p.Codigo == productoViewModel.CodigoPieza);

                    if (codepieceexist == null)
                    {
                        ModelState.AddModelError("CodigoPieza", "Código de producto inexistente.");
                    }
                    else if (!codepieceexist.Activo)
                    {
                        ModelState.AddModelError("CodigoPieza", "Producto no disponible (ver detalle).");
                    }
                    else
                    {
                        //validate that producto be piece
                        if (codepieceexist.Unidades.Paquete)
                        {
                            ModelState.AddModelError("CodigoPieza", "El producto no puede ser caja.");
                        }
                        else
                        {
                            //validate package and piece be whole pieces
                            if (productoViewModel.Unidades.Pieza)
                            {
                                if (!codepieceexist.Unidades.Pieza)
                                {
                                    ModelState.AddModelError("CodigoPieza", "No coincide con la unidad del paquete.");
                                }
                            }
                            //validate package and piece be bulk pieces
                            else if (!productoViewModel.Unidades.Pieza)
                            {
                                if (codepieceexist.Unidades.Pieza)
                                {
                                    ModelState.AddModelError("CodigoPieza", "No coincide con la unidad del paquete.");
                                }
                            }
                        }
                    }

                    if (productoViewModel.CantidadProductoxPaquete == null ||
                        productoViewModel.CantidadProductoxPaquete <= 0)
                    {
                        ModelState.AddModelError("CantidadProductoxPaquete", "El campo Unidad es requerido");
                    }
                }
            }
        }