public ActionResult Create(Patrocinante patrocinante)
        {
            if (patrocinante.Nombre != null && patrocinante.Contacto[0].Nombre != null && patrocinante.Contacto[0].ListaTelefonos[0].CodigoInt != 0 &&
                patrocinante.Contacto[0].ListaTelefonos[0].CodigoLoc != 0 && patrocinante.Contacto[0].ListaTelefonos[0].Numero != 0)
            {
                if (patrocinante.File != null)
                {
                    HttpFileCollectionBase files = ControllerContext.HttpContext.Request.Files;
                    var repoImagen = new ImageneRepositorio();
                    patrocinante.Imagene = new Imagene();
                    patrocinante.Imagene.DatosOriginal = ConvertFile(patrocinante.File);
                    patrocinante.Imagene.DatosTrans = Resize(ConvertFile(patrocinante.File));
                    patrocinante.Imagene.Link = patrocinante.Link;
                    patrocinante.Contacto[0].Tipo = "P";
                    for (int i = 0; i < patrocinante.Contacto[0].ListaTelefonos.Count; i++)
                    {
                        patrocinante.Contacto[0].ListaTelefonos[i].Tipo = "P";
                    }
                    patrocinante.Contacto[0].IdEmpresa = null;

                    var tipo = Request["Logo"] as string;
                    if (tipo == "Sponsor")
                    {
                        patrocinante.Imagene.Tipo = "S";
                    }
                    else
                    {
                        patrocinante.Imagene.Tipo = "L";
                    }

                    IRepositorio<Patrocinante> repoPatrocinante = new PatrocinanteRepositorio();
                    repoPatrocinante.Save(patrocinante);

                    IRepositorio<Contacto> repoContacto = new ContactoRepositorio();
                    patrocinante.Contacto[0].IdPatrocinante = patrocinante.IdPatrocinante;
                    repoContacto.Save(patrocinante.Contacto[0]);

                    IRepositorio<Telefono> repoTelefono = new TelefonoRepositorio();
                    foreach (var telefono in patrocinante.Contacto[0].ListaTelefonos)
                    {
                        telefono.IdContacto = patrocinante.Contacto[0].IdContacto;
                        repoTelefono.Save(telefono);
                    }

                    patrocinante.Imagene.IdPatrocinante = patrocinante.IdPatrocinante;
                    repoImagen.Save(patrocinante.Imagene);

                    return RedirectToAction("Index");
               }
            }
            // Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario
            while (patrocinante.Contacto[0].ListaTelefonos.Count < 4)
            {
                patrocinante.Contacto[0].ListaTelefonos.Add(new Telefono());
            }
            return View(patrocinante);
        }
        public virtual bool Equals(Patrocinante obj)
        {
            if (obj == null) return false;

            if (Equals(Descripcion, obj.Descripcion) == false)
                return false;

            if (Equals(IdPatrocinante, obj.IdPatrocinante) == false)
                return false;

            if (Equals(Nombre, obj.Nombre) == false)
                return false;

            return true;
        }
        public ActionResult Edit(Patrocinante patrocinante)
        {
            patrocinante.Contacto[0].Tipo = "P";
            patrocinante.Contacto[0].IdPatrocinante = patrocinante.IdPatrocinante;
            foreach (var telefono in patrocinante.Contacto[0].ListaTelefonos)
            {
                telefono.Tipo = "P";
            }
            patrocinante.Contacto[0].IdEmpresa = null;

            IRepositorio<Imagene> repoImagen = new ImageneRepositorio();
            patrocinante.Contacto[0].IdEmpresa = null;

            IList<Imagene> imagenes = repoImagen.GetAll();
            patrocinante.Imagene.IdPatrocinante = patrocinante.IdPatrocinante;
            foreach (var imagene in imagenes)
            {
                if (imagene.IdPatrocinante == patrocinante.IdPatrocinante)
                {
                    patrocinante.Imagene.IdImagen = imagene.IdImagen;
                    if (patrocinante.File == null)
                    {
                        patrocinante.Imagene.DatosOriginal = imagene.DatosOriginal;
                        patrocinante.Imagene.DatosTrans = imagene.DatosTrans;
                    }
                }
            }

            var tipo = Request["Logo"] as string;
            if (tipo == "Sponsor")
            {
                patrocinante.Imagene.Tipo = "S";
            }
            else
            {
                patrocinante.Imagene.Tipo = "L";
            }
            if (patrocinante.File != null)
            {
                HttpFileCollectionBase files = ControllerContext.HttpContext.Request.Files;
                patrocinante.Imagene.DatosOriginal = ConvertFile(patrocinante.File);
                patrocinante.Imagene.DatosTrans = Resize(ConvertFile(patrocinante.File));
            }

            if (patrocinante.Nombre != null && patrocinante.Contacto[0].Nombre != null && patrocinante.Contacto[0].ListaTelefonos[0].CodigoInt != 0 &&
                patrocinante.Contacto[0].ListaTelefonos[0].CodigoLoc != 0 && patrocinante.Contacto[0].ListaTelefonos[0].Numero != 0)
            {
                IRepositorio<Patrocinante> repoPatrocinante = new PatrocinanteRepositorio();
                repoPatrocinante.Update(patrocinante);

                IRepositorio<Contacto> repoContacto = new ContactoRepositorio();
                patrocinante.Contacto[0].IdPatrocinante = patrocinante.IdPatrocinante;
                repoContacto.Update(patrocinante.Contacto[0]);

                IRepositorio<Telefono> repoTelefono = new TelefonoRepositorio();
                foreach (var telefono in patrocinante.Contacto[0].ListaTelefonos)
                {
                    telefono.IdContacto = patrocinante.Contacto[0].IdContacto;
                    if (telefono.CodigoInt != 0 && telefono.CodigoLoc != 0 && telefono.Numero != 0)
                        if (telefono.IdTelefono != 0)
                            repoTelefono.Update(telefono);
                        else
                            repoTelefono.Save(telefono);
                }

                repoImagen.Update(patrocinante.Imagene);

                return RedirectToAction("Index");
            }
            // Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario
            while (patrocinante.Contacto[0].ListaTelefonos.Count < 4)
            {
                patrocinante.Contacto[0].ListaTelefonos.Add(new Telefono());
            }
            return View(patrocinante);
        }