Esempio n. 1
0
        public ActionResult Index(string form, string user, string country)
        {
            //validaciones iniciales
            if (String.IsNullOrWhiteSpace(form))
            {
                throw new HttpException(404, "Debes indicar el parametro FORM");
            }

            if (String.IsNullOrWhiteSpace(user))
            {
                throw new HttpException(404, "Debes indicar el parametro USER");
            }



            ViewBag.Pais       = country;
            ViewBag.Formulario = form;

            //obtengo el formulario
            var formulario = productsFormsRepository.GetProductForm(form);

            if (formulario == null)
            {
                throw new HttpException(404, "Formulario no existe");
            }

            if (formulario.IdProduct == null)
            {
                throw new HttpException(404, "Formulario no relacionado a un producto");
            }

            if (!usersRepository.UserExist(user, (int)formulario.IdProduct))
            {
                // throw new HttpException(404, "El usuario no existe para este producto");
                //usersRepository.CreateUser(user, (int)formulario.IdProduct);
            }


            //obtengo listado de perfiles
            var perfiles = profilesRepository.GetProfiles((int)formulario.IdProduct).Where(e => e.Featured == true);

            //obtengo perfiles del servicio de COBRO
            var cobros = cobrosRepository.GetCobros((int)formulario.IdProduct); //IDAPP es IDPROD

            List <Planes> planes = new List <Planes>();

            foreach (var item in perfiles)
            {
                var cobro = cobros.FirstOrDefault(e => e.IdPlan == item.IdProfile && e.Principal == 1);

                planes.Add(new Planes
                {
                    Nombre           = item.Name,
                    Valor            = (cobro != null)? cobro.Monto : "-",
                    Plan             = item.IdProfile,
                    Caracteristicas  = item.Description.Split(','),
                    Featured         = item.Featured == null ? false : (bool)item.Featured,
                    Motivator        = item.MotivatorText,
                    ShortDescription = item.ShortDescription,
                });
            }

            ViewBag.User = user;

            //obtengo usuario
            var u = usersRepository.GetUser(user, (int)formulario.IdProduct);

            //obtengo suscripcion actual del usuario
            var subs = subscriptionsRepository.GetUserCurrentSubscription(u.IdUser);

            int IdProfile = 0;

            if (subs == null)
            {
                //si no tiene suscripcion, le crea una en el estándar de suscrito sin suscripción.
                var profile = profilesRepository.GetStandardFreeSuscription(u.IdUser);
                IdProfile = profile.IdProfile;
            }
            else
            {
                IdProfile = (int)subs.IdProfile;

                if (subs.PromoActive == true)
                {
                    ViewBag.ActivePromo = 1;
                }
            }

            //datos del formulario
            ViewBag.UrlLogo          = formulario.UrlLogo;
            ViewBag.UrlBackground    = formulario.UrlBackground;
            ViewBag.ColorSuperiorBar = formulario.ColorSuperiorBar;
            ViewBag.CssClassFeatured = formulario.CssClassFeatured;
            ViewBag.CssClassActual   = formulario.CssClassActual;
            ViewBag.TitleColor       = formulario.TitleColor;
            ViewBag.FormTitle        = formulario.Title;
            ViewBag.CurrentIdProfile = IdProfile;

            return(View(planes));
        }