public ActionResult Edit(Empresa empresa)
        {
            if (empresa.Nombre != null && empresa.Rif != null && empresa.Direccion != null && empresa.Ciudad != null && empresa.Localidad != null &&
                empresa.Telefonos[0].CodigoLoc != 0 && empresa.Telefonos[0].CodigoInt != 0 && empresa.Telefonos[0].Numero != 0 &&
                empresa.Contacto[0].Nombre != null && empresa.Contacto[0].ListaTelefonos[0].CodigoInt != 0 &&
                empresa.Contacto[0].ListaTelefonos[0].CodigoLoc != 0 && empresa.Contacto[0].ListaTelefonos[0].Numero != 0)
            {
                IRepositorio<Empresa> myRepoEmpresa = new EmpresaRepositorio();
                myRepoEmpresa.Update(empresa);

                IRepositorio<Telefono> repositorioTelefono = new TelefonoRepositorio();
                empresa.Telefonos[0].IdEmpresa = empresa.IdEmpresa;
                empresa.Telefonos[0].Tipo = "E";
                repositorioTelefono.Update(empresa.Telefonos[0]);

                IRepositorio<Contacto> repositorioContacto = new ContactoRepositorio();
                empresa.Contacto[0].IdEmpresa = empresa.IdEmpresa;
                empresa.Contacto[0].Tipo = "E";
                repositorioContacto.Update(empresa.Contacto[0]);

                foreach (var telefono in empresa.Contacto[0].ListaTelefonos)
                {
                    telefono.Tipo = "E";
                    telefono.IdContacto = empresa.Contacto[0].IdContacto;
                    if (telefono.CodigoInt != 0 && telefono.CodigoLoc != 0 && telefono.Numero != 0)
                        if (telefono.IdTelefono != 0)
                            repositorioTelefono.Update(telefono);
                        else
                            repositorioTelefono.Save(telefono);
                }
                return RedirectToAction("Index");
            }
            return View(empresa);
        }
        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);
        }