public ActionResult NuevoMaterial(MaterialViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var categoriaMaterial = _categoriasDb.GetById(model.CategoriaId);

                    var material = new Material
                    {
                        Codigo = model.Codigo,
                        Descripcion_Material = model.Descripcion_Material,
                        Costo_Unitario = model.Costo_Unitario,
                        Unidad_Medida = model.Unidad_Medida,
                        esMaterialDirecto = model.esMaterialDirecto,
                        Categoria_Material = categoriaMaterial
                    };

                    _materialesDb.Create(material);
                    _uow.SaveChanges();
                    TempData["message"] = "El material se agregó correctamente";

                    return RedirectToAction("Materiales");
                }
                catch (Exception e)
                {
                    logger.Error(e, "Error al agregar material");
                    ModelState.AddModelError("", "Se produjo un error al intentar agregar este material");
                    return View(model);
                }
            }

            model.Categorias = _categoriasDb.FindAll()
                                .Select(c => new SelectListItem
                                {
                                    Value = c.Id.ToString(),
                                    Text = c.NombreCategoria
                                });

            return View(model);
        }
        public ActionResult EditarMaterial(MaterialViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var material = _materialesDb.GetById(model.Id);
                    var categoria = _categoriasDb.GetById(model.CategoriaId);

                    material.Codigo = model.Codigo;
                    material.Costo_Unitario = model.Costo_Unitario;
                    material.Unidad_Medida = model.Unidad_Medida;
                    material.Descripcion_Material = model.Descripcion_Material;
                    material.Categoria_Material = categoria;
                    material.esMaterialDirecto = model.esMaterialDirecto;

                    _materialesDb.Update(material);
                    _uow.SaveChanges();

                    TempData["message"] = "Registro modificado correctamente";
                    return RedirectToAction("Materiales");
                }
                catch (Exception e)
                {
                    logger.Error(e, "Se produjo un error al editar un material");
                    ModelState.AddModelError("", "Se produjo un error al intentar editar el material");
                    return View(model);
                }
            }

            model.Categorias = _categoriasDb.FindAll()
                                .Select(c => new SelectListItem
                                {
                                    Value = c.Id.ToString(),
                                    Text = c.NombreCategoria
                                });
            return View(model);
        }
        // GET: NuevoMaterial
        public ActionResult NuevoMaterial()
        {
            var model = new MaterialViewModel
            {
                Categorias = _categoriasDb.FindAll()
                .Select(c => new SelectListItem
                {
                    Value = c.Id.ToString(),
                    Text = c.NombreCategoria
                })
            };

            return View(model);
        }
        // GET: EditarMaterial
        public ActionResult EditarMaterial(int id)
        {
            var material = _materialesDb.GetById(id);

            if (material == null)
            {
                TempData["message_error"] = "No se pudo encontrar el registro especificado";
                return RedirectToAction("Materiales");
            }

            var model = new MaterialViewModel
            {
                Id = material.Id,
                CategoriaId = material.Categoria_Material.Id,
                Codigo = material.Codigo,
                Descripcion_Material = material.Descripcion_Material,
                Costo_Unitario = material.Costo_Unitario,
                Unidad_Medida = material.Unidad_Medida,
                esMaterialDirecto = material.esMaterialDirecto,
                Categorias = _categoriasDb.FindAll()
                                .Select(c => new SelectListItem
                                {
                                    Value = c.Id.ToString(),
                                    Text = c.NombreCategoria
                                })
            };

            return View(model);
        }