public ActionResult Create()
 {
     Publicacion p = new Publicacion();
     p.Precios = new List<Precio>();
     p.Precios.Add(new Precio());
     p.Precios.Add(new Precio());
     p.Precios[0].Tipo = "TB";
     p.Precios[1].Tipo = "TA";
     return View();
 }
        public virtual bool Equals(Publicacion obj)
        {
            if (obj == null) return false;

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

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

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

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

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

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

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

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

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

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

            return true;
        }
        public ActionResult Create(Publicacion p,FormCollection collection)
        {
            //Empresa
            var nombreEmpresa = collection[0];
            var repoEmp = new EmpresaRepositorio();
            var listaEmp = repoEmp.GetAll();
            foreach (var empresa in listaEmp.Where(empresa => empresa.Nombre == nombreEmpresa))
            {
                p.IdEmpresa = empresa.IdEmpresa;
            }
            if (String.IsNullOrEmpty(nombreEmpresa) || p.IdEmpresa == 0)
            {
                ModelState.AddModelError("NombreE", "Nombre Empresa es Necesario");
                return View(p);
            }
            if (String.IsNullOrEmpty(p.Pais) || p.Pais.CompareTo("--Seleccione--")==0)
            {
                ModelState.AddModelError("Pais", "Pais es Necesario");
                return View(p);
            }
            if (String.IsNullOrEmpty(p.Estado) || p.Estado.CompareTo("--Seleccione--") == 0)
            {
                ModelState.AddModelError("Estado", "Estado es Necesario");
                return View(p);
            }
            if (String.IsNullOrEmpty(p.Ciudad) || p.Ciudad.CompareTo("--Seleccione--") == 0)
            {
                ModelState.AddModelError("Ciudad", "Ciudad es Necesario");
                return View(p);
            }

            //fin Empresa
            //Sub Categoria
            var repoSub = new SubCategoriumRepositorio();
            var listaSub = repoSub.GetAll();
            var subCategorias = p.SubCategorium.Nombre.Split('-');
            var subCategoria = "";
            subCategoria = subCategorias[1].Substring(1);
            p.SubCategorium = new SubCategorium();
            foreach (var subCategorium in listaSub.Where(subCategorium => subCategorium.Nombre == subCategoria))
            {
                p.IdSubCategoria = subCategorium.IdSubCategoria;
            }
            //fin Sub Categoria
            var repoPubli = new PublicacionRepositorio();
            IList<Idioma> myIdiomas = p.Idioma;
            p.Idioma = null;
            var repoLug = new LugarRepositorio();
            p.Ciudad = repoLug.GetById(Convert.ToInt32(p.Ciudad)).Nombre;
            p.Estado = repoLug.GetById(Convert.ToInt32(p.Estado)).Nombre;
            var idPublicacion = repoPubli.Save(p);

            //Precios
            IList<Precio> listaPrecios = p.Precios;
            var repoPrecios = new PrecioRepositorio();
            foreach (var precio in listaPrecios)
            {
                precio.IdPublicacion = idPublicacion;
                repoPrecios.Save(precio);
            }

            //fin Precios
            p.Idioma = myIdiomas;
            //Servicios
            if (p.Servicios != null){
                var misServicios = new List<Servicio>(p.Servicios);
                foreach (var misServicio in misServicios)
                {
                    if (misServicio.IdServicio == 0) continue;
                    var pB = new PublicacionServicio
                                 {
                                     IdPublicacion = idPublicacion,
                                     IdServicio = misServicio.IdServicio
                                 };
                    var repoPubSer = new PublicacionServicioRepositorio();
                    repoPubSer.Save(pB);
                }
            }

            //fin Servicios
            //Idioma
            var repoIdioma = new IdiomaRepositorio();
            var idioma = p.Idioma[0];
            idioma.IdPublicacion = idPublicacion;
            if(p.Idioma[0].Categoria != "Otra")
            {
                p.Idioma[0].Categoria.Substring(0, 1);
               repoIdioma.Save(idioma);
            }
            else
            {
                idioma.Categoria = p.Idioma[1].Categoria;
                repoIdioma.Save(idioma);
            }
            //fin Idioma
            //Session para las fotos
            Session["IdPublicacion"] = idPublicacion;

               return RedirectToAction("Upload");
        }
        public ActionResult Edit(Publicacion p, FormCollection collection)
        {
            int idPublicacion = p.IdPublicacion;
            //Precios
            IList<Precio> listaPrecios = p.Precios;
            var repoPrecios = new PrecioRepositorio();
            foreach (var precio in listaPrecios)
            {
                precio.IdPublicacion = idPublicacion;
                bool update = repoPrecios.Update(precio);
            }

            //fin Precios
            //Servicios

            var misServicios = new List<Servicio>(p.Servicios);
            var repoPubSer = new PublicacionServicioRepositorio();
            var repoSer = new ServicioRepositorio();
            var listaPubServ = repoPubSer.GetAll();
            bool flag = false;
            bool flag2 = false;
            foreach (var misServicio in misServicios)
            {
                if (misServicio.IdServicio != 0)
                {
                    foreach (var publicacionServicio in listaPubServ)
                    {
                        if(publicacionServicio.IdPublicacion==idPublicacion)
                        {
                            if(publicacionServicio.IdServicio==misServicio.IdServicio)
                            {
                                flag = true;
                                break;
                            }
                        }
                    }
                    if(!flag)
                    {
                        var pB = new PublicacionServicio
                        {
                            IdPublicacion = idPublicacion,
                            IdServicio = misServicio.IdServicio

                        };
                        repoPubSer.Save(pB);
                    }
                    flag = false;
                }else
                {
                    foreach (var publicacionServicio in listaPubServ)
                    {
                        if (publicacionServicio.IdPublicacion == idPublicacion)
                        {
                            if (publicacionServicio.IdServicio==misServicio.FkIdServicio)
                            {
                                flag2 = true;
                                misServicio.IdServicio = publicacionServicio.IdServicio;
                                break;
                            }
                        }
                    }
                    if (flag2)
                    {
                        var pB = new PublicacionServicio
                        {
                            IdPublicacion = idPublicacion,
                            IdServicio = misServicio.IdServicio

                        };
                        repoPubSer.Delete(pB);
                    }
                    flag2 = false;

                }

            }
            Idioma i = p.Idioma[0];
            var repoIdioma = new IdiomaRepositorio();
            i.IdPublicacion = p.IdPublicacion;
            repoIdioma.Update(i);

            var repoPubli = new PublicacionRepositorio();
            var b = repoPubli.Update(p);
            Session["IdPublicacion"] = idPublicacion;
            return RedirectToAction("EditForPublicacion","Imagene", new {idPubli = idPublicacion});
        }