public IHttpActionResult Actualizar([FromBody] ActualizarCategoriaRequest request)
 {
     try
     {
         string userToken = Convert.ToString(Request.Headers.Authorization);
         var    response  = categoriaRepository.Actualizar(request, userToken);
         return(Ok(response));
     }
     catch (Exception ex)
     {
         return(InternalServerError(ex));
     }
 }
        public BaseResponse Actualizar(ActualizarCategoriaRequest request, string userToken)
        {
            try
            {
                var db = new pedidoclick();
                db.Database.Connection.Open();

                var sesionRep   = new SesionRepository();
                int?userId      = sesionRep.GetUserIdFromSession(Guid.Parse(userToken));
                var idCategoria = Convert.ToInt32(request.IdCategoria);

                var categoriaDB = db.t_Categoria.FirstOrDefault(x => x.Id == idCategoria);
                if (categoriaDB == null)
                {
                    return new BaseResponse {
                               Mensaje = "La categoria no existe en la base de datos.", Resultado = false
                    }
                }
                ;

                // Actualizar nombre
                categoriaDB.Categoria = request.Categoria;

                List <t_Producto> nuevosProductosDB = new List <t_Producto>();
                var nuevosProductos = request.Productos.Where(x => x.Nuevo);
                foreach (var p in nuevosProductos)
                {
                    nuevosProductosDB.Add(new t_Producto()
                    {
                        IdCategoria   = idCategoria,
                        Producto      = p.ProductoNombre,
                        Descripcion   = p.Descripcion,
                        Precio        = p.Precio,
                        Activo        = p.Activo,
                        FechaCreo     = DateTime.Now,
                        IdUsuarioCreo = userId,
                        Borrado       = false
                    });
                }

                db.t_Producto.AddRange(nuevosProductosDB);

                var productosActualizar = request.Productos.Where(x => x.ProductoId > 0);
                foreach (var producto in productosActualizar)
                {
                    var p = db.t_Producto.Where(x => x.Id == producto.ProductoId).FirstOrDefault();
                    p.Producto    = producto.ProductoNombre;
                    p.Descripcion = producto.Descripcion;
                    p.Activo      = producto.Activo;
                    p.Borrado     = producto.Borrado;
                    p.Precio      = producto.Precio;

                    p.FechaCreo     = DateTime.Now;
                    p.IdCategoria   = idCategoria;
                    p.IdUsuarioCreo = userId;
                }

                db.SaveChanges();

                db.Database.Connection.Close();

                return(new BaseResponse {
                    Mensaje = "Categoria Actualizada", Resultado = true, Objeto = categoriaDB.Id
                });
            }
            catch (Exception ex)
            {
                return(new BaseResponse {
                    Mensaje = "Sucedio un error al actualizar la categoria: " + ex.Message, Resultado = false
                });
            }
        }