public ActionResult NuevoCosto(CostoViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var departamentoCosto = _departamentosDb.GetById(model.DepartamentoId);
                    var costo = new Costo
                    {
                        Descripcion = model.Descripcion,
                        Comentario = model.Comentario,
                        esCostoDirecto = (bool)model.esCostoDirecto,
                        Departamento = departamentoCosto
                    };

                    _costosDb.Create(costo);
                    _uow.SaveChanges();

                    TempData["message"] = "Registro agregado correctamente";
                    return RedirectToAction("Costos");
                }
                catch (Exception e)
                {
                    logger.Error(e, "Error al agregar un costo");
                    ModelState.AddModelError("", "Se produjo un error al intentar agregar este costo");
                }
            }

            return View(model);
        }
        public ActionResult EditarCosto(CostoViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var costo = _costosDb.GetById(model.Id);
                    var departamentoCosto = _departamentosDb.GetById(model.DepartamentoId);

                    costo.Descripcion = model.Descripcion;
                    costo.Comentario = model.Comentario;
                    costo.esCostoDirecto = (bool)model.esCostoDirecto;
                    costo.Departamento = departamentoCosto;

                    _costosDb.Update(costo);
                    _uow.SaveChanges();

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

            return View(model);
        }
        // GET: NuevoCosto
        public ActionResult NuevoCosto()
        {
            var model = new CostoViewModel()
            {
                Departamentos = _departamentosDb.FindAll()
                .Select(d => new SelectListItem
                {
                    Value = d.Id.ToString(),
                    Text = d.Nombre_Departamento
                })
            };

            return View(model);
        }
        // GET: EditarCosto
        public ActionResult EditarCosto(int id)
        {
            var costo = _costosDb.GetById(id);

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

            var model = new CostoViewModel
            {
                Id = costo.Id,
                Descripcion = costo.Descripcion,
                Comentario = costo.Comentario,
                esCostoDirecto = (bool)costo.esCostoDirecto,
                DepartamentoId = costo.Departamento.Id,
                Departamentos = _departamentosDb.FindAll()
                .Select(d => new SelectListItem
                {
                    Value = d.Id.ToString(),
                    Text = d.Nombre_Departamento
                })
            };

            return View(model);
        }