public List <Usuario> ObtenerTodosUsuariosFull(string idTienda) { try { chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { var query = from usr in context.usuarios .Include("publicados") .Include("visitas") .Include("favoritos") .Include("ofertas") .Include("compras") .Include("comentarios") .Include("calificaciones") .Include("calificacionesrecibidas") select usr; return(query.ToList()); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
//--CALIFICACIONES-- public void AgregarCalificacion(Calificacion c, string idTienda) { try { if (c == null) { throw new Exception("Debe pasar una calificación."); } if (c.puntaje < 1 || c.puntaje > 5) { throw new Exception("El puntaje debe ser entre 1 y 5."); } chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { context.calificaciones.Add(c); context.SaveChanges(); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
public List <TipoAtributo> ListarTipoAtributo(string idTienda) { try { chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { var qTipoA = from t in context.tipoatributos select t; List <TipoAtributo> ret = qTipoA.ToList(); if (ret == null) { return(new List <TipoAtributo>()); } else { return(qTipoA.ToList()); } } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
public Usuario ObtenerUsuarioFull(string idUsuario, string idTienda) { try { if (idUsuario == null) { throw new Exception("Debe pasar el identificador de un usuario."); } chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { var query = from usr in context.usuarios .Include("publicados") .Include("visitas") .Include("favoritos") .Include("ofertas") .Include("compras") .Include("comentarios") .Include("calificaciones") .Include("calificacionesrecibidas") where usr.UsuarioID == idUsuario select usr; if (query.Count() == 0) { throw new Exception("No existe el usuario " + idUsuario + "."); } return(query.FirstOrDefault()); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
public void AgregarCategoria(Categoria c, string idTienda) { try { if (c == null) { throw new Exception("Debe pasar una categoría."); } chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { var query = from cat in context.categorias where cat.CategoriaID == c.padre.CategoriaID select cat; CategoriaCompuesta father = (CategoriaCompuesta)query.FirstOrDefault(); c.padre = father; c.tipoatributos = new List <TipoAtributo>(); context.categorias.Add(c); context.SaveChanges(); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
public DataCalificacionFull ObtenerCalificacionUsuario(string idUsuario, string idTienda) { try { chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { var qCalif = from clf in context.calificaciones where clf.UsuarioCalificado == idUsuario select clf; List <Calificacion> CalificacionesUsuario = qCalif.ToList(); DataCalificacionFull ret = new DataCalificacionFull { cant1 = new List <DataCalificacion>(), cant2 = new List <DataCalificacion>(), cant3 = new List <DataCalificacion>(), cant4 = new List <DataCalificacion>(), cant5 = new List <DataCalificacion>() }; double prom = 0; foreach (Calificacion c in CalificacionesUsuario) { DataCalificacion tmp = new DataCalificacion { comentario = c.comentario, usuarioEvalua = c.UsuarioEvalua }; prom += c.puntaje; switch (c.puntaje) { case 1: ret.cant1.Add(tmp); break; case 2: ret.cant2.Add(tmp); break; case 3: ret.cant3.Add(tmp); break; case 4: ret.cant4.Add(tmp); break; case 5: ret.cant5.Add(tmp); break; } } return(ret); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
public void ActualizarUsuario(Usuario u, string idTienda) { try { chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { var query = from usr in context.usuarios where usr.UsuarioID == u.UsuarioID select usr; Usuario user = query.FirstOrDefault(); user.Apellido = u.Apellido; user.Nombre = u.Nombre; user.Ciudad = u.Ciudad; user.Pais = u.Pais; user.Direccion = u.Direccion; user.NumeroContacto = u.NumeroContacto; user.CodigoPostal = u.CodigoPostal; user.Email = u.Email; context.SaveChanges(); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
//--REPORTES-- public DataReporte ObtenerReporte(string idTienda) { try { using (var context = ChebayDBContext.CreateTenant(idTienda)) { DataReporte ret = new DataReporte(); //REPORTE DE USUARIOS. var qUsuarios = from usr in context.usuarios select usr; ret.cantUsuarios = qUsuarios.Count(); //REPORTE DE TRANSACCIONES. var qCompras = from cmp in context.compras select cmp; ret.cantTransacciones = qCompras.Count(); return(ret); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
//--IMAGENES-- public void AgregarImagenUsuario(ImagenUsuario iu, string idTienda) { try { chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { var qImagen = from img in context.imagenesusuario where img.UsuarioID == iu.UsuarioID select img; if (qImagen.Count() == 0) { //Agregar Imágen context.imagenesusuario.Add(iu); context.SaveChanges(); } else { //Modificar imágen ImagenUsuario imgu = qImagen.FirstOrDefault(); imgu.Imagen = iu.Imagen; context.SaveChanges(); } } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
public List <DataFactura> ObtenerFactura(string idUsuario, string idTienda) { try { if (idUsuario == null) { throw new Exception("Debe pasar el identificador de un usuario."); } chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { //Obtengo todas las compras realizadas. var qCompras = from cmp in context.compras.Include("producto") where cmp.UsuarioID == idUsuario select cmp; List <Compra> lc = qCompras.ToList(); List <DataFactura> ret = new List <DataFactura>(); foreach (Compra c in lc) { DataFactura df = new DataFactura { monto = c.monto, esCompra = true, fecha = c.fecha_compra, nombreProducto = c.producto.nombre, ProductoID = c.ProductoID }; ret.Add(df); } //Obtengo todas las ventas realizadas. var qVentas = from vnt in context.compras.Include("producto") where vnt.producto.UsuarioID == idUsuario select vnt; lc = qVentas.ToList(); foreach (Compra c in lc) { DataFactura df = new DataFactura { monto = c.monto, esCompra = false, fecha = c.fecha_compra, nombreProducto = c.producto.nombre, ProductoID = c.ProductoID }; ret.Add(df); } return(ret); } } catch (Exception e) { Debug.WriteLine(e.Message + e.StackTrace); throw; } }
//--TIPO ATRIBUTO-- public void AgregarTipoAtributo(TipoAtributo ta, long idCategoria, string idTienda) { try { chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { var qTA = from tipoAtr in context.tipoatributos where tipoAtr.TipoAtributoID == ta.TipoAtributoID select tipoAtr; TipoAtributo tipoA = qTA.FirstOrDefault(); if (tipoA == null) { var qCat = from c in context.categorias where c.CategoriaID == idCategoria select c; Categoria cat = qCat.FirstOrDefault(); if (ta.categorias == null) { ta.categorias = new HashSet <Categoria>(); } ta.categorias.Add(cat); if (cat.tipoatributos == null) { cat.tipoatributos = new HashSet <TipoAtributo>(); } cat.tipoatributos.Add(ta); context.tipoatributos.Add(ta); } else //update { Debug.WriteLine("else"); tipoA.tipodato = ta.tipodato; /*foreach (Categoria c in ta.categorias) * { * if (c.tipoatributos == null) * c.tipoatributos = new HashSet<TipoAtributo>(); * c.tipoatributos.Add(ta); * }*/ } 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. } }
private void CrearUsuarioML(string TiendaID) { string usermail = "*****@*****.**"; Usuario u = new Usuario { Nombre = "MercadoLibreWebscraping", Pais = "Uruguay", Email = usermail, UsuarioID = usermail, fecha_ingreso = DateTime.UtcNow }; using (var db = ChebayDBContext.CreateTenant(TiendaID)) { db.usuarios.Add(u); db.SaveChanges(); } }
public List <TipoAtributo> ListarTodosTipoAtributo(long idCategoria, string idTienda) { List <TipoAtributo> ac = new List <TipoAtributo>(); using (var db = ChebayDBContext.CreateTenant(idTienda)) { var query = from c in db.categorias where c.CategoriaID == idCategoria select c; if (query.Count() == 0) { throw new Exception("No existe la categoria " + idCategoria); } Categoria itcat = query.First(); bool finish = false; do { //System.Console.WriteLine(itcat.CategoriaID); var itquery = from c in db.categorias.Include("tipoatributos").Include("padre") where c.CategoriaID == itcat.CategoriaID select c; itcat = itquery.First(); foreach (var a in itcat.tipoatributos) { ac.Add(a); } if (itcat.CategoriaID != 1) { itcat = itcat.padre; } else { finish = true; } } while (!finish); //foreach (var a in ac) //{ // System.Console.WriteLine(a.TipoAtributoID); //} return(ac); } }
public List <Usuario> ObtenerTodosUsuarios(string idTienda) { try { chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { var query = from usr in context.usuarios select usr; return(query.ToList()); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
public List <Calificacion> ObtenerCalificaciones(string idTienda) { try { chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { var qCalif = from clf in context.calificaciones select clf; return(qCalif.ToList()); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
public Calificacion ObtenerCalificacion(long idCalificacion, string idTienda) { try { chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { var qCalif = from clf in context.calificaciones where clf.ID == idCalificacion select clf; return(qCalif.FirstOrDefault()); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
//--USUARIOS-- public void AgregarUsuario(Usuario u, string idTienda) { try { chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { u.fecha_ingreso = DateTime.Today; u.promedio_calificacion = 0; context.usuarios.Add(u); context.SaveChanges(); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
public void EliminarTipoAtributo(string idTipoAtributo, string idTienda) { try { chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { var qTipoA = from t in context.tipoatributos where t.TipoAtributoID == idTipoAtributo select t; context.tipoatributos.Remove(qTipoA.FirstOrDefault()); context.SaveChanges(); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
public void EliminarCategoria(long idCategoria, string idTienda) { try { chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { var qCategoria = from c in context.categorias where c.CategoriaID == idCategoria select c; context.categorias.Remove(qCategoria.FirstOrDefault()); context.SaveChanges(); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
public void EliminarUsuario(string idUsuario, string idTienda) { try { chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { var query = from usr in context.usuarios where usr.UsuarioID == idUsuario select usr; context.usuarios.Remove(query.FirstOrDefault()); context.SaveChanges(); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
public ImagenUsuario ObtenerImagenUsuario(string idUsuario, string idTienda) { try { chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { var qImg = from img in context.imagenesusuario where img.UsuarioID == idUsuario select img; ImagenUsuario ret = qImg.FirstOrDefault(); return(ret); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
public void EliminarCalificacion(long idCalificacion, string idTienda) { try { chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { var qCalif = from clf in context.calificaciones where clf.ID == idCalificacion select clf; Calificacion c = qCalif.FirstOrDefault(); context.calificaciones.Remove(c); context.SaveChanges(); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
public void ModificarCategoria(Categoria c, string idTienda) { try { chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { var qCategoria = from cat in context.categorias where cat.CategoriaID == c.CategoriaID select cat; Categoria ca = qCategoria.FirstOrDefault(); ca.Nombre = c.Nombre; ca.padre = c.padre; context.SaveChanges(); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
public Categoria ObtenerCategoria(string idTienda, long idCategoria) { if (idCategoria == 0) { throw new Exception("Tiene que pasar el identificador de una categoría."); } chequearTienda(idTienda); try { using (var context = ChebayDBContext.CreateTenant(idTienda)) { var query = from c in context.categorias where c.CategoriaID == idCategoria select c; return(query.FirstOrDefault()); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
public Usuario ObtenerUsuario(string idUsuario, string idTienda) { try { chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { var query = from usr in context.usuarios where usr.UsuarioID == idUsuario select usr; if (query.Count() == 0) { throw new Exception("No existe el usuario."); } return(query.First()); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
public List <TipoAtributo> ListarTipoAtributo(long idCategoria, string idTienda) { try { chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { var qCat = from cat in context.categorias.Include("tipoatributos") where cat.CategoriaID == idCategoria select cat; if (qCat.Count() == 0) { throw new Exception("No existe la categoria " + idCategoria); } List <TipoAtributo> ret = new List <TipoAtributo>(); Categoria c = qCat.FirstOrDefault(); while (c != null) { Debug.WriteLine("A"); ret.AddRange(c.tipoatributos.ToList()); if (c.padre == null) { Debug.WriteLine("PAPA NULL"); } c = c.padre; } return(ret); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
public List <Categoria> ListarCategorias(string idTienda) { try { chequearTienda(idTienda); using (var schema = ChebayDBContext.CreateTenant(idTienda)) { List <Categoria> ret = new List <Categoria>(); var qCat = from c in schema.categorias orderby c.CategoriaID select c; foreach (Categoria c in qCat.ToList()) { ret.Add(c); } return(ret); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }
public static ChebayDBContext CreateTenant(string schemaName) { var builder = new DbModelBuilder(); builder.Entity<Atributo>().ToTable("Atributos", schemaName); builder.Entity<Calificacion>().ToTable("Calificaciones", schemaName); builder.Entity<Categoria>() .Map<CategoriaCompuesta>(m => m.Requires("TipoCategoria").HasValue(0)) .Map<CategoriaSimple>(m => m.Requires("TipoCategoria").HasValue(1)) .ToTable("Categorias", schemaName); builder.Entity<Comentario>().ToTable("Comentarios", schemaName); builder.Entity<Compra>().ToTable("Compras", schemaName); builder.Entity<Conversacion>().ToTable("Conversaciones", schemaName); builder.Entity<Mensaje>().ToTable("Mensajes", schemaName); builder.Entity<Oferta>().ToTable("Ofertas", schemaName); builder.Entity<Producto>().ToTable("Productos", schemaName); builder.Entity<Usuario>().ToTable("Usuarios", schemaName); builder.Entity<TipoAtributo>().ToTable("TiposAtributo", schemaName); builder.Entity<ImagenProducto>().ToTable("ImagenesProducto", schemaName); builder.Entity<ImagenUsuario>().ToTable("ImagenUsuario", schemaName); //relaciones builder.Entity<Usuario>().HasMany<Producto>(s => s.visitas) .WithMany(s => s.visitas) .Map(ps => { ps.MapLeftKey("UsuarioID"); ps.MapRightKey("ProductoID"); ps.ToTable("Visitas", schemaName); }); builder.Entity<Usuario>().HasMany<Producto>(s => s.favoritos) .WithMany(s => s.favoritos) .Map(ps => { ps.MapLeftKey("UsuarioID"); ps.MapRightKey("ProductoID"); ps.ToTable("Favoritos", schemaName); }); builder.Entity<Producto>().HasMany<Oferta>(p => p.ofertas); builder.Entity<Producto>().HasMany<Comentario>(p => p.comentarios); builder.Entity<Producto>().HasMany<Atributo>(s => s.atributos) .WithMany(s => s.productos) .Map(ps => { ps.MapLeftKey("ProductoID"); ps.MapRightKey("AtributoID"); ps.ToTable("ProductoAtributo", schemaName); }); builder.Entity<CategoriaSimple>().HasMany<Producto>(s => s.productos); builder.Entity<Usuario>().HasMany<Oferta>(p => p.ofertas); builder.Entity<Usuario>().HasMany<Comentario>(p => p.comentarios); builder.Entity<Usuario>().HasMany<Compra>(p => p.compras); builder.Entity<Usuario>().HasMany<Producto>(p => p.publicados); builder.Entity<Usuario>().HasMany<Calificacion>(c => c.calificaciones); builder.Entity<Usuario>().HasMany<Calificacion>(c => c.calificacionesrecibidas); builder.Entity<Categoria>().HasMany<TipoAtributo>(s => s.tipoatributos) .WithMany(s => s.categorias) .Map(ps => { ps.MapLeftKey("CategoriaID"); ps.MapRightKey("TipoAtributoID"); ps.ToTable("CategoriaTipoAtributo", schemaName); }); builder.Entity<TipoAtributo>().HasMany<Atributo>(p => p.atributos); var model = builder.Build(connection); DbCompiledModel compModel = model.Compile(); var compiledModel = modelCache.GetOrAdd(schemaName, compModel); ChebayDBContext ret = new ChebayDBContext(compiledModel, schemaName); return ret; }
public void ObtenerProductosMLporCategoria(string TiendaID, string limit, string categoryML, long categoryLocal) { Debug.Write("DALMERCADOLIBRE::OBTENERPRODUCTOSMLPORCATEGORIA"); IDALSubasta sdal = new DALSubastaEF(); string user_ml = "*****@*****.**"; //verifico si usuario existe using (var db = ChebayDBContext.CreateTenant(TiendaID)) { var query = from u in db.usuarios where u.UsuarioID == user_ml select u; if (query.Count() == 0) { CrearUsuarioML(TiendaID); } List <Producto> productos = new List <Producto>(); dynamic json = ripJson("/sites/MLU/search?limit=" + limit + "&category=" + categoryML); int total = 0; foreach (var p in json.results) { string nombre = (string)p.title; int price = (int)double.Parse((string)p.price); int subasta = price / 2; string latitud = (string)p.seller_address.latitude; string longitud = (string)p.seller_address.longitude; DateTime fecha_cierre = Convert.ToDateTime((string)p.stop_time); Producto producto = new Producto { fecha_cierre = fecha_cierre, latitud = latitud, longitud = longitud, nombre = nombre, precio_compra = price, precio_base_subasta = subasta, UsuarioID = user_ml, CategoriaID = categoryLocal, imagenes = new List <ImagenProducto>() }; long idprod = sdal.AgregarProducto(producto, TiendaID); //agrego producto Debug.WriteLine("Se agrego producto " + nombre); var imagenes = ObtenerImagenesProducto(idprod, (string)p.id); foreach (var im in imagenes) { sdal.AgregarImagenProducto(im, TiendaID); } total++; Debug.WriteLine(producto.nombre + " " + producto.UsuarioID + " " + producto.latitud + " " + producto.longitud + " " + producto.precio_compra + " " + producto.CategoriaID ); } Debug.WriteLine("Total: " + total); } Debug.WriteLine("DALMERCADOLIBRE::TERMINO WEBSCRAPPING"); }
public DataPuedoCalificar PuedoCalificar(long idProducto, string idUsuario, string idTienda) { try { if (idProducto == 0) { throw new Exception("Debe pasar el identificador de un producto."); } if (idUsuario == null) { throw new Exception("Debe pasar el identificador de un usuario."); } chequearTienda(idTienda); using (var context = ChebayDBContext.CreateTenant(idTienda)) { DataPuedoCalificar dpc = new DataPuedoCalificar(); //Verifica si idUsuario compró idProducto var qCompra = from cmp in context.compras where cmp.ProductoID == idProducto select cmp; if (qCompra.Count() == 0) { throw new Exception("Nadie ha comprado el producto " + idProducto + "."); } Compra c = qCompra.FirstOrDefault(); //Si idUsuario NO realizó la compra, devuelve false. if (c.UsuarioID != idUsuario) { dpc.puedoCalificar = false; return(dpc); } //Si idUsuario SI realizó la compra... //Chequeo que no haya realizado la calificación. var qCalif = from clf in context.calificaciones where clf.ProductoID == idProducto where clf.UsuarioEvalua == idUsuario select clf; //Si idUsuario ya realizó la calificación, no puede volver a calificar. if (qCalif.Count() > 0) { dpc.puedoCalificar = false; return(dpc); } //Si idUsuario es el comprador y no realizó la calificación. dpc.puedoCalificar = true; //Obtengo el id del vendedor. var qProd = from prd in context.productos where prd.ProductoID == idProducto select prd; if (qProd.Count() == 0) { throw new Exception("No existe el producto " + idProducto + "."); } Producto p = qProd.FirstOrDefault(); dpc.idVendedor = p.UsuarioID; dpc.precioProd = c.monto; dpc.nombreProd = p.nombre; dpc.idProd = p.ProductoID; dpc.fecha_compra = c.fecha_compra; return(dpc); } } catch (Exception e) { Debug.WriteLine(e.Message); throw e; } }