Exemplo n.º 1
0
        public async Task <ActionResult> BeneficiosExtra(int?idPaquete, int?anuncio)
        {
            if (!idPaquete.HasValue)
            {
                return(RedirectToAction("CarritoDeCompra"));
            }
            if (!anuncio.HasValue)
            {
                return(RedirectToAction("CarritoDeCompra"));
            }
            var paquete = await ObtenerPaquete(idPaquete);

            if (paquete == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Id de paquete invalido"));
            }
            string nombreAnuncio = string.Empty;
            var    carrito       = Startup.GetCarritoDeCompra(Request.Cookies);

            if (anuncio.Value != -1)
            {
                var usuario = Startup.GetAplicacionUsuariosManager().getUsuarioPortalActual(Request);
                if (usuario == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Para renovar un anuncio debe de hacer login"));
                }

                string value;
                if (!ValidaAnuncio(anuncio.Value, usuario.Id, out value))
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "El id del anuncio a renovar es invalido"));
                }
                nombreAnuncio = value;
                PaqueteCarrito outPaqueteCarrito;
                if (carrito.ActualizaRenovacionSiExiste(anuncio.Value, nombreAnuncio, paquete, out outPaqueteCarrito))
                {
                    Startup.UpdateCarritoCookie(carrito, Response);
                    return(View(new BeneficiosExtraViewModel(outPaqueteCarrito, await ObtenerBeneficios(), carrito.TotalCarrito)));
                }
            }

            var paqueteCarrito = carrito.insertarPaqueteEnCarrito(paquete.Id, paquete.Nombre, paquete.Meses, paquete.Precio, anuncio.Value, nombreAnuncio);

            Startup.UpdateCarritoCookie(carrito, Response);
            BeneficiosExtraViewModel model = new BeneficiosExtraViewModel(paqueteCarrito, await ObtenerBeneficios(), carrito.TotalCarrito);

            return(View(model));
        }
Exemplo n.º 2
0
        public async Task <ActionResult> BeneficiosExtra(int?idPaquete, int?anuncio)
        {
            if (!idPaquete.HasValue || !anuncio.HasValue)
            {
                return(RedirectToAction("CarritoDeCompra"));
            }
            var paquete = await ObtenerPaquete(idPaquete);

            if (paquete == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Id de paquete invalido"));
            }
            string            nombreAnuncio = string.Empty;
            Anuncio_Beneficio ofertaDelDia  = null;
            var     carrito = Startup.GetCarritoDeCompra(Request.Cookies);
            Anuncio value   = null;

            using (MercampoEntities _dbContext = new MercampoEntities())
            {
                Startup.OpenDatabaseConnection(_dbContext);
                if (_dbContext.Database.Connection.State != ConnectionState.Open)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.InternalServerError, "Error interno, favor de volver a intentarlo"));
                }

                if (anuncio.Value != -1)
                {
                    var usuario = Startup.GetAplicacionUsuariosManager().getUsuarioPortalActual(Request);
                    if (usuario == null)
                    {
                        return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Para renovar un anuncio debe de hacer login"));
                    }

                    if (!ValidaAnuncio(anuncio.Value, usuario.Id, ref value, _dbContext))
                    {
                        return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, "El id del anuncio a renovar es invalido"));
                    }
                    nombreAnuncio = value.titulo;
                    ofertaDelDia  = value.Anuncio_Beneficio.Where(ab => ab.Beneficio.tipo == (int)BeneficiosExtraTipo.OfertaDelDia).FirstOrDefault();
                    PaqueteCarrito outPaqueteCarrito;
                    if (carrito.ActualizaRenovacionSiExiste(anuncio.Value, nombreAnuncio, paquete, ofertaDelDia != null, out outPaqueteCarrito))
                    {
                        Startup.UpdateCarritoCookie(carrito, Response);
                        if (ofertaDelDia != null)
                        {
                            return(RedirectToAction("CarritoDeCompra"));
                        }
                        return(View(new BeneficiosExtraViewModel(outPaqueteCarrito, await ObtenerBeneficios(), carrito.TotalCarrito)));
                    }
                }

                var paqueteCarrito = carrito.insertarPaqueteEnCarrito(paquete.Id, paquete.Nombre, paquete.Meses, paquete.Precio, anuncio.Value, nombreAnuncio);
                if (value != null && anuncio.Value != -1)
                {
                    foreach (var anuncioBeneficio in value.Anuncio_Beneficio)
                    {
                        var beneficio = anuncioBeneficio.Beneficio;
                        carrito.Paquetes[paqueteCarrito.Index].agregaBeneficioAPaquete(new BeneficioCarrito(beneficio.id, beneficio.descripcion, beneficio.precio, beneficio.tipo, beneficio.numero));
                    }
                }
                Startup.UpdateCarritoCookie(carrito, Response);
                if (ofertaDelDia != null)
                {
                    return(RedirectToAction("CarritoDeCompra"));
                }
                BeneficiosExtraViewModel model = new BeneficiosExtraViewModel(paqueteCarrito, await ObtenerBeneficios(), carrito.TotalCarrito);
                return(View(model));
            }
        }