// GET: Admin/Integrantes
        public ActionResult Integrantes()
        {
            ViewBag.Estados = IntegrantesManager.GetEstados();
            List <Integrante> integrantes = IntegrantesManager.GetIntegrantes();

            return(View(integrantes));
        }
        public ActionResult NuevoIntegrante()
        {
            IntegrantesViewModel model = new IntegrantesViewModel
            {
                Estados = new SelectList(IntegrantesManager.GetEstados(), "Id", "Nombre")
            };

            return(View(model));
        }
        public ActionResult EditarIntegrante(IntegrantesViewModel model)
        {
            if (model.Imagen != null && !model.Imagen.ContentType.Equals("image/jpeg"))
            {
                ModelState.AddModelError("Imagen", "La imagen debe ser jpg.");
            }

            if (ModelState.IsValid)
            {
                string imageUri = ""; //inicializo..
                if (!string.IsNullOrEmpty(model.ImagenUri))
                {
                    //Si no es vacio, la inicializo con el valor q tenia..
                    imageUri = model.ImagenUri;
                }
                if (model.Imagen != null && model.Imagen.ContentLength > 0)
                {
                    var fileName  = Path.GetFileName(model.Imagen.FileName);
                    var uploadDir = "~/Uploads/integrantes";
                    var imagePath = Path.Combine(Server.MapPath(uploadDir), fileName);
                    model.Imagen.SaveAs(imagePath);
                    imageUri = string.Format("{0}/{1}", uploadDir, fileName);
                }
                //Obtengo mi entidad, y la actualizo mi entidad a partir del ViewModel.

                Integrante integrante = IntegrantesManager.GetById(model.Id);
                integrante.ImagenUri          = imageUri;
                integrante.Nombre             = model.Nombre;
                integrante.Apellido           = model.Apellido;
                integrante.Email              = model.Email;
                integrante.Telefono           = model.Telefono;
                integrante.TelefonoEmergencia = model.TelefonoEmergencia;
                integrante.Direccion          = model.Direccion;
                integrante.Estado             = new Estado {
                    Id = model.EstadoId
                };



                //edito pasandole la entidad modificada...
                IntegrantesManager.EditarIntegrante(integrante);

                TempData[Strings.KeyMensajeDeAccion] = "se modificó correctamente la información de este integrante.";
                return(RedirectToAction("Integrantes"));
            }
            else
            {
                model.Estados = new SelectList(IntegrantesManager.GetEstados(), "Id", "Nombre");
            }

            return(View(model));
        }
        public ActionResult NuevoIntegrante(IntegrantesViewModel model)
        {
            //verifico, si subio imagen, que la imagen sea jpg
            if (model.Imagen != null && !model.Imagen.ContentType.Equals("image/jpeg"))
            {
                ModelState.AddModelError("Imagen", "La imagen debe ser jpg.");
            }

            if (ModelState.IsValid)
            {
                string imageUri = "";
                if (model.Imagen != null && model.Imagen.ContentLength > 0)
                {
                    var fileName  = Path.GetFileName(model.Imagen.FileName);
                    var uploadDir = "~/Uploads/integrantes";
                    var imagePath = Path.Combine(Server.MapPath(uploadDir), fileName);
                    model.Imagen.SaveAs(imagePath);
                    imageUri = string.Format("{0}/{1}", uploadDir, fileName);
                }
                //Creo mi entidad a partir del ViewModel.


                Integrante integrantes = new Integrante
                {
                    Nombre             = model.Nombre,
                    ImagenUri          = imageUri,
                    Apellido           = model.Apellido,
                    Email              = model.Email,
                    Telefono           = model.Telefono,
                    TelefonoEmergencia = model.TelefonoEmergencia,
                    Direccion          = model.Direccion,
                    Estado             = new Estado {
                        Id = model.EstadoId
                    },
                };

                //le paso la entidad. NUNCA se pasa un viewModel (Los viewModel son para las vistas!!!)
                IntegrantesManager.NuevoIntegrante(integrantes);

                TempData[Strings.KeyMensajeDeAccion] = "Se ha cargado un nuevo integrante";
                return(RedirectToAction("Integrantes"));
            }
            else
            {
                model.Estados = new SelectList(IntegrantesManager.GetEstados(), "Id", "Nombre");
            }

            return(View(model));
        }
        public ActionResult Integrantes(int?estadoId)  //int? significa que es un int nulleable.
        {
            ViewBag.Estados = IntegrantesManager.GetEstados();
            List <Integrante> integrantes;

            if (estadoId.HasValue)                                             //HasValue nos dice si el nulleable tiene valor.
            {
                integrantes = IntegrantesManager.GetPorEstado(estadoId.Value); //.Value sobre un nulleable nos retorna el valor.
            }
            else
            {
                integrantes = IntegrantesManager.GetIntegrantes();
            }

            return(View(integrantes));
        }
        public ActionResult EditarIntegrante(int id)
        {
            //obtengo la entidad
            Integrante integrante = IntegrantesManager.GetById(id);

            //a partir de la entidad, armo el viewModel que necesita la vista.
            IntegrantesViewModel model = new IntegrantesViewModel
            {
                Id                 = integrante.Id,
                ImagenUri          = integrante.ImagenUri,
                Nombre             = integrante.Nombre,
                Apellido           = integrante.Apellido,
                Email              = integrante.Email,
                Telefono           = integrante.Telefono,
                TelefonoEmergencia = integrante.TelefonoEmergencia,
                Direccion          = integrante.Direccion,
                Estados            = new SelectList(IntegrantesManager.GetEstados(), "Id", "Nombre"),
            };

            return(View(model));
        }