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 })); } }
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); } }
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); }
//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); }
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)); }
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... }
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. }