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 ActualizarAlgoritmoPersonalizacion(Personalizacion pers) { try { chequearTienda(pers.PersonalizacionID); using (var context = ChebayDBPublic.CreatePublic()) { Personalizacion p = context.personalizaciones.Find(pers.PersonalizacionID); p.algoritmo = pers.algoritmo; context.SaveChanges(); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
//--PERSONALIZACIÓN DE LA TIENDA-- public void PersonalizarTienda(Personalizacion pr, string idTienda) { try { chequearTienda(idTienda); using (var context = ChebayDBPublic.CreatePublic()) { var qPers = from per in context.personalizaciones where per.PersonalizacionID == idTienda select per; if (qPers.Count() == 0) //Si no existe personalización. { context.personalizaciones.Add(pr); context.SaveChanges(); } else //Si existe y hay que actualizarla. { Personalizacion p = qPers.FirstOrDefault(); p.datos = pr.datos; p.template = pr.template; p.backgroud_image = pr.backgroud_image; p.css = pr.css; context.SaveChanges(); } } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
//--TIENDAS-- public void AgregarTienda(Tienda tienda, string idAdmin) { try { if (tienda == null) throw new Exception("Debe pasar una tienda."); using (var context = ChebayDBPublic.CreatePublic()) { var qAdmin = from ad in context.administradores where ad.AdministradorID == idAdmin select ad; if (tienda.administradores == null) tienda.administradores = new HashSet<Administrador>(); tienda.administradores.Add(qAdmin.FirstOrDefault()); Personalizacion p = new Personalizacion { PersonalizacionID = tienda.TiendaID, template = 1, algoritmo = null }; context.personalizaciones.Add(p); context.tiendas.Add(tienda); context.SaveChanges(); Debug.WriteLine("Creando schema..."); ChebayDBContext.ProvisionTenant(tienda.TiendaID); Debug.WriteLine("Tienda " + tienda.TiendaID + " creada con éxito."); //Crea la Categoria Raiz. var schema = ChebayDBContext.CreateTenant(tienda.TiendaID); CategoriaCompuesta raiz = new CategoriaCompuesta(); raiz.Nombre = "/"; raiz.hijas = new List<Categoria>(); schema.categorias.Add(raiz); schema.SaveChanges(); Debug.WriteLine("Categoría raíz de " + tienda.TiendaID + " creada con éxito."); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; //Dropear las tablas creadas. } }