Пример #1
0
        public async Task <ActionResult> ExternalLoginCallback(string returnUrl)
        {
            var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();

            if (loginInfo == null)
            {
                return(RedirectToAction("Login"));
            }

            // Sign in the user with this external login provider if the user already has a login
            var result = await SignInManager.ExternalSignInAsync(loginInfo, isPersistent : false);

            switch (result)
            {
            case SignInStatus.Success:
                IDALUsuario dalU = new DALUsuarioEF();
                Usuario     userChebay;
                try {
                    userChebay         = dalU.ObtenerUsuario(loginInfo.Email, Session["Tienda_Nombre"].ToString());
                    Session["Usuario"] = userChebay;
                } catch (Exception e) {
                    userChebay = new Usuario {
                        UsuarioID = loginInfo.Email,
                        Email     = loginInfo.Email
                    };
                    try
                    {
                        Debug.WriteLine(e.Message);
                        dalU.AgregarUsuario(userChebay, Session["Tienda_Nombre"].ToString());
                        Session["Usuario"] = userChebay;
                    }
                    catch (Exception e2)
                    {
                        Debug.WriteLine(e2.Message);
                        ViewBag.ErrorMessage = e2.Message;
                        return(View("Error"));
                    }
                }
                if (userChebay != null)
                {
                }

                return(RedirectToLocal(returnUrl));

            case SignInStatus.LockedOut:
                return(View("Lockout"));

            case SignInStatus.RequiresVerification:
                return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = false }));

            case SignInStatus.Failure:
            default:
                // If the user does not have an account, then prompt the user to create an account
                ViewBag.ReturnUrl     = returnUrl;
                ViewBag.LoginProvider = loginInfo.Login.LoginProvider;
                return(View("ExternalLoginConfirmation", new ExternalLoginConfirmationViewModel {
                    Email = loginInfo.Email
                }));
            }
        }
Пример #2
0
        public void custom_algorithm(Personalizacion personalizacion, List <Producto> products, Usuario user, string tiendaID)
        {
            Assembly          ddl = Assembly.Load(personalizacion.algoritmo);
            var               t   = ddl.GetType("Chebay.AlgorithmDLL.ChebayAlgorithm");
            dynamic           c   = Activator.CreateInstance(t);
            DataRecomendacion dr  = new DataRecomendacion {
                UsuarioID = user.UsuarioID
            };
            Thread timeThread = new Thread(() =>
            {
                try
                {
                    dr.productos     = (List <DataProducto>)c.getProducts(products, user);
                    IDALUsuario udal = new DALUsuarioEF();
                    udal.AgregarRecomendacionesUsuario(tiendaID, dr);
                }
                catch (Exception e)
                {
                    //si falla entonces default
                    default_recomendation_algorithm(products, user, tiendaID);
                }
            });

            timeThread.Start();

            bool finished = timeThread.Join(5000);

            if (!finished)
            {
                Debug.WriteLine("ALGORITMO PERSONALIZADO SUSPENDIDO... EXCESO TIEMPO");
                timeThread.Abort();
                default_recomendation_algorithm(products, user, tiendaID);
            }
        }
Пример #3
0
        public void TestInicialSubasta()
        {
            IDALUsuario iu = new DALUsuarioEF();
            Usuario     u  = new Usuario {
                UsuarioID = "userPrueba"
            };

            iu.AgregarUsuario(u, urlTest);
            u = new Usuario {
                UsuarioID = "otroUserPrueba"
            };
            iu.AgregarUsuario(u, urlTest);
        }
Пример #4
0
        //default algorithm return the mosts visited product
        public void default_recomendation_algorithm(List <Producto> products, Usuario user, String tiendaID)
        {
            IDALUsuario udal = new DALUsuarioEF();

            var query = from p in products
                        orderby(p.visitas.Count) descending
                        select p;

            DataRecomendacion dr = new DataRecomendacion {
                UsuarioID = user.UsuarioID, productos = new List <DataProducto>()
            };

            foreach (var p in query.ToList())
            {
                dr.productos.Add(new DataProducto(p));
            }
            udal.AgregarRecomendacionesUsuario(tiendaID, dr);
        }
Пример #5
0
        public async Task <ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl)
        {
            if (User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Index", "Manage"));
            }

            if (ModelState.IsValid)
            {
                // Get the information about the user from the external login provider
                var info = await AuthenticationManager.GetExternalLoginInfoAsync();

                if (info == null)
                {
                    return(View("ExternalLoginFailure"));
                }
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await UserManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    result = await UserManager.AddLoginAsync(user.Id, info.Login);

                    if (result.Succeeded)
                    {
                        IDALUsuario dalU      = new DALUsuarioEF();
                        Usuario     userNuevo = new Usuario {
                            UsuarioID = model.Email, Email = model.EmailNotification
                        };
                        dalU.AgregarUsuario(userNuevo, Session["Tienda_Nombre"].ToString());
                        await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                        return(RedirectToLocal(returnUrl));
                    }
                }
                AddErrors(result);
            }

            ViewBag.ReturnUrl = returnUrl;
            return(View(model));
        }
Пример #6
0
        public void Run(string tiendaID)
        {
            IDALUsuario udal = new DALUsuarioEF();
            IDALTienda  tdal = new DALTiendaEF();
            IDALSubasta sdat = new DALSubastaEF();

            Tienda          tienda    = tdal.ObtenerTienda(tiendaID);
            List <Producto> productos = sdat.ObtenerTodosProductos(tienda.TiendaID);
            //obtengo algoritmo
            Personalizacion pers             = tdal.ObtenerPersonalizacionTienda(tienda.TiendaID);
            List <Usuario>  usuarios         = udal.ObtenerTodosUsuariosFull(tienda.TiendaID);
            bool            defaultalgorithm = false;

            if (pers.algoritmo == null || pers.algoritmo.Length == 0)
            {
                defaultalgorithm = true;
            }

            //creo indice
            Task index = udal.InicializarColeccionRecomendaciones(tienda.TiendaID);

            index.Wait();

            foreach (var user in usuarios)
            {
                if (defaultalgorithm)
                {
                    Algorithms def = new Algorithms();
                    def.default_recomendation_algorithm(productos, user, tienda.TiendaID);
                }
                else
                {
                    Algorithms a = new Algorithms();
                    a.custom_algorithm(pers, productos, user, tienda.TiendaID);
                }
            }//IF tienda es de instancia...
        }
Пример #7
0
        private void procesarSubasta(DataProductoQueue p)
        {
            IDALSubasta      ip  = new DALSubastaEF();
            BLNotificaciones bl  = new BLNotificaciones();
            IDALUsuario      ubl = new DALUsuarioEF();

            //obtengo producto
            Producto prod = ip.ObtenerProducto(p.ProductoID, p.TiendaID);

            //Si no fue comprado por CompraDirecta
            if (!ip.ExisteCompra(p.ProductoID, p.TiendaID))
            {
                //vendedor
                Usuario vendedor = ubl.ObtenerUsuario(p.OwnerProducto, p.TiendaID);

                if (ip.TieneOfertas(p.ProductoID, p.TiendaID))
                {
                    //Obtengo la oferta ganadora.
                    Oferta o = ip.ObtenerOfertaGanadora(p.ProductoID, p.TiendaID);

                    //Creo una compra entre el Producto y el Usuario.
                    Compra c = new Compra
                    {
                        fecha_compra = p.fecha_cierre,
                        monto        = o.monto,
                        ProductoID   = o.ProductoID,
                        UsuarioID    = o.UsuarioID
                    };
                    //se envia mensaje al vendedor en AgregarCompra
                    ip.AgregarCompraPostSubasta(c, p.TiendaID);

                    //obtengo mail ganador
                    Usuario u = ubl.ObtenerUsuario(c.UsuarioID, p.TiendaID);
                    //Notifico al ganador.
                    String linkTienda  = "http://chebuynow.azurewebsites.net/" + p.TiendaID;
                    String linkCalif   = "http://chebuynow.azurewebsites.net/" + p.TiendaID + "/Usuario/CalificarUsuario?prodId=" + p.ProductoID;
                    string bodyMensaje = getBodyMailHTML(p.TiendaID + ": Subasta ganada!", "Has ganado una nueva subasta!", u, prod, c.monto, true, linkCalif, linkTienda);

                    string asunto = "Chebay: Subasta de producto!";
                    bl.sendEmailNotification(u.Email, asunto, bodyMensaje);


                    //en agregar compra se notifica al vendedor.

                    //mail a vendedor
                    //obtengo vendedor
                    IDALUsuario udal = new DALUsuarioEF();

                    string asuntovendedor      = "Chebay: Venta de producto!";
                    string bodyMensajeVendedor = getBodyMailHTML(p.TiendaID + ": Producto vendido!", "Has vendido un nuevo producto!", vendedor, prod, c.monto, false, "", linkTienda);

                    if (vendedor.Email != null)
                    {
                        bl.sendEmailNotification(vendedor.Email, asuntovendedor, bodyMensajeVendedor);
                    }
                    else
                    {
                        if (IsValidMail(vendedor.UsuarioID))
                        {
                            bl.sendEmailNotification(vendedor.UsuarioID, asuntovendedor, bodyMensajeVendedor);
                        }
                        //else... por algun error no tiene mail
                    }
                }
                else
                {
                    //no fue comprado
                    Debug.WriteLine("NO TIENE COMPRAS MAIL AL VENDEDOR");
                    String linkTienda          = "http://chebuynow.azurewebsites.net/" + p.TiendaID;
                    string asunto              = "Chebay: Producto no vendido...";
                    string bodyMensajeVendedor = getBodyMailHTML(p.TiendaID + ": Producto no vendido...", "No se ha logrado subastar su producto.", vendedor, prod, 0, false, "", linkTienda);
                    bl.sendEmailNotification(vendedor.Email, asunto, bodyMensajeVendedor);
                }
            }//si fue comprado se descarta el mensaje.
        }