Ejemplo n.º 1
0
        public IHttpActionResult Agrega_Producto(typeProducto producto)
        {
            var Producto = new Cat_Productos();

            try
            {
                Producto.Codigo = producto.Codigo;
                Producto.Nombre = producto.Nombre.ToUpper();
                Producto.Precio = producto.Precio;

                //Realiza el registro
                using (var conexion = new dboEntities())
                {
                    conexion.Configuration.ProxyCreationEnabled = false;

                    //Valida que no exista el nombre o código
                    var validaNombre = conexion.Cat_Productos.SingleOrDefault(Consulta => Consulta.Nombre == producto.Nombre.ToUpper() || Consulta.Codigo == producto.Codigo);
                    if (validaNombre == null)
                    {
                        conexion.Cat_Productos.Add(Producto);

                        conexion.SaveChanges();

                        return(Ok());
                    }
                    else
                    {
                        throw new Exception("Ya existe un registro con este nombre o código, favor de verificarlo.");
                    }
                }
            }
            catch (DbEntityValidationException ex)
            {
                // Retrieve the error messages as a list of strings.
                var errorMessages = ex.EntityValidationErrors
                                    .SelectMany(x => x.ValidationErrors)
                                    .Select(x => x.ErrorMessage);

                // Join the list to a single string.
                var fullErrorMessage = string.Join("; ", errorMessages);

                // Combine the original exception message with the new one.
                var exceptionMessage = string.Concat(ex.Message, " Errores de validación: ", fullErrorMessage);

                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exceptionMessage)));
            }
            catch (DbUpdateException ex)
            {
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message)));
            }
            catch (Exception ex)
            {
                return(ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message)));
            }
        }
        public ActionResult AgregarProducto(ProductoViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    model.ProductoID = model.ProductoID.ToUpper();
                    if (_unitOfWork.GetRepositoryInstance <Cat_Productos>().GetExists(s => s.Clave_Empresa == model.EmpresaID && s.Clave_Producto.Trim() == model.ProductoID.Trim()))
                    {
                        ViewBag.ErrorMessage = "La clave de producto ya existe para la empresa seleccionada";
                        return(View(model));
                    }
                    Cat_Productos _prod = new Cat_Productos();
                    _prod.Clave_Empresa     = Convert.ToByte(model.EmpresaID);
                    _prod.Clave_Familia     = Convert.ToByte(model.FamiliaID);
                    _prod.Clave_Grupo       = model.GrupoID;
                    _prod.Clave_Producto    = model.ProductoID;
                    _prod.Desc_Producto     = model.Nombre;
                    _prod.Tipo_Presentacion = model.Presentacion;
                    _prod.Clave_Linea       = Convert.ToByte(0);
                    _unitOfWork.GetRepositoryInstance <Cat_Productos>().Add(_prod);

                    return(RedirectToAction("Productos", "Catalogos"));
                }
                //catch (System.Data.Entity.Validation.DbEntityValidationException exv)
                //{

                //    // Retrieve the error messages as a list of strings.
                //    var errorMessages = exv.EntityValidationErrors
                //            .SelectMany(x => x.ValidationErrors)
                //            .Select(x => x.ErrorMessage);

                //    // Join the list to a single string.
                //    var fullErrorMessage = string.Join("; ", errorMessages);

                //    // Combine the original exception message with the new one.
                //    var exceptionMessage = string.Concat(exv.Message, " Los Errores son: ", fullErrorMessage);

                //    // Throw a new DbEntityValidationException with the improved exception message.
                //    //throw new DbEntityValidationException(exceptionMessage, exv.EntityValidationErrors);

                //    ViewBag.ErrorMessage = exceptionMessage;
                //}
                catch (Exception ex)
                {
                    ViewBag.ErrorMessage = ex.Message;
                }
            }
            else
            {
                ViewBag.ErrorMessage = "La información es incompleta";
            }
            return(View(model));
        }
        public ActionResult EditarProducto(ProductoViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    Cat_Productos _prod = _unitOfWork.GetRepositoryInstance <Cat_Productos>()
                                          .GetFirstOrDefaultByParameter(s => s.Clave_Empresa == model.EmpresaID && s.Clave_Producto.Trim().ToUpper() == model.ProductoID.Trim());
                    if (_prod == null)
                    {
                        ViewBag.ErrorMessage = "Error al intentar actualizar los datos del producto";
                        return(View(model));
                    }
                    _prod.Desc_Producto     = model.Nombre;
                    _prod.Tipo_Presentacion = model.Presentacion;

                    _unitOfWork.GetRepositoryInstance <Cat_Productos>().Update(_prod);
                    _unitOfWork.SaveChanges();

                    return(RedirectToAction("Productos", "Catalogos"));
                }
                //catch (System.Data.Entity.Validation.DbEntityValidationException exv)
                //{

                //    // Retrieve the error messages as a list of strings.
                //    var errorMessages = exv.EntityValidationErrors
                //            .SelectMany(x => x.ValidationErrors)
                //            .Select(x => x.ErrorMessage);

                //    // Join the list to a single string.
                //    var fullErrorMessage = string.Join("; ", errorMessages);

                //    // Combine the original exception message with the new one.
                //    var exceptionMessage = string.Concat(exv.Message, " Los Errores son: ", fullErrorMessage);

                //    // Throw a new DbEntityValidationException with the improved exception message.
                //    //throw new DbEntityValidationException(exceptionMessage, exv.EntityValidationErrors);

                //    ViewBag.ErrorMessage = exceptionMessage;
                //}
                catch (Exception ex)
                {
                    ViewBag.ErrorMessage = ex.Message;
                }
            }
            else
            {
                ViewBag.ErrorMessage = "La información es incompleta";
            }
            return(View(model));
        }
        public ActionResult EditarProducto(string Id)
        {
            string[]      empresaProducto = Id.Trim().Split('|');
            short         empresaID       = Convert.ToInt16(empresaProducto[0]);
            string        productoID      = empresaProducto[1];
            Cat_Productos _prod           = _unitOfWork.GetRepositoryInstance <Cat_Productos>()
                                            .GetFirstOrDefaultByParameter(s => s.Clave_Empresa == empresaID && s.Clave_Producto.ToUpper().Trim() == productoID.Trim());

            if (_prod == null)
            {
                return(RedirectToAction("Productos", "Catalogos"));
            }
            var model = new ProductoViewModel();

            model.EmpresaID    = _prod.Clave_Empresa;
            model.FamiliaID    = _prod.Clave_Familia;
            model.GrupoID      = _prod.Clave_Grupo;
            model.Nombre       = _prod.Desc_Producto;
            model.Presentacion = _prod.Tipo_Presentacion;
            model.ProductoID   = _prod.Clave_Producto;

            return(View(model));
        }