private string CheckAndUploadImage(NuevoModeloViewModel model)
        {
            if (model.Imagen != null)
            {
                return _modelosDb.UploadImageWithUniqueId(model.Codigo, model.Imagen, serverPath);
            }

            return null;
        }
        public ActionResult NuevoModelo(NuevoModeloViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    _modelosDb.CreateSingleModelo(model, serverPath);
                    _uow.SaveChanges();

                    TempData["message"] = "El modelo fue creado correctamente";
                    return RedirectToAction("ModelosLinea", new { id = model.IdLinea });
                }
                catch (Exception e)
                {
                    logger.Error(e, "Error al agregar nuevo modelo");
                    ModelState.AddModelError("", "Se produjo un error al agregar el modelo");
                    return View(model);
                }
            }
            else
            {
                return View(model);
            }
        }
        public ActionResult EditarModelo(NuevoModeloViewModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var curModel = _modelosDb.GetById(model.id);
                    var linea = _lineasDb.GetById(model.IdLinea);

                    curModel.Horma = model.Horma;
                    curModel.Codigo = model.Codigo;
                    curModel.Color = model.Color;
                    curModel.Numeracion = model.Numeracion;
                    curModel.Pieza = model.Pieza;
                    curModel.Planta = model.Planta;
                    curModel.Tipo_Suela = model.Tipo_Suela;
                    curModel.Linea = linea;
                    curModel.Fecha_Ultima_Modificacion = DateTime.Now;
                    curModel.Ficha = curModel.Ficha;

                    curModel.URL_Imagen = CheckAndUploadImage(model) ?? curModel.URL_Imagen;

                    _modelosDb.Update(curModel);
                    _uow.SaveChanges();

                    TempData["message"] = "Registro modificado correctamente";
                    return RedirectToAction("ModelosLinea", new { id = model.IdLinea });
                }
                catch (Exception e)
                {
                    logger.Error(e, "Error al editar modelo");

                    ModelState.AddModelError("", "Se produjo un error al editar el modelo");
                    return View(model);
                }
            }
            else
            {
                return View(model);
            }
        }
        // GET: NuevoModelo
        public ActionResult NuevoModelo(int id)
        {
            var model = new NuevoModeloViewModel
            {
                IdLinea = id
            };

            return View(model);
        }
        // GET: EditarModelo
        public ActionResult EditarModelo(int idLinea, int id)
        {
            var linea = _lineasDb.GetById(idLinea);
            var modelo = _modelosDb.GetById(id);

            if (modelo == null || linea == null)
            {
                logger.Warn("No se pudo encontrar el modelo o la linea con id {0}", id);
                TempData["message_error"] = "No se pudo encontrar el registro especificado";
                return RedirectToAction("ModelosLinea", new { id = idLinea });
            }

            var viewModel = new NuevoModeloViewModel
            {
                IdLinea = idLinea,
                id = modelo.Id,
                Horma = modelo.Horma,
                Tipo_Suela = modelo.Tipo_Suela,
                Codigo = modelo.Codigo,
                Color = modelo.Color,
                Numeracion = modelo.Numeracion,
                Pieza = modelo.Pieza,
                Planta = modelo.Planta
            };

            ViewBag.URLImagen = modelo.URL_Imagen;

            return View(viewModel);
        }