示例#1
0
 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;
     }
 }
示例#2
0
 //--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;
     }
 }
示例#3
0
 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;
     }
 }
示例#4
0
 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;
     }
 }
示例#5
0
 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;
     }
 }
示例#6
0
        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;
            }
        }
示例#7
0
 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;
     }
 }
示例#8
0
        //--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;
            }
        }
示例#9
0
 //--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;
     }
 }
示例#10
0
        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;
            }
        }
示例#11
0
        //--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;
            }
        }
示例#12
0
        //--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.
            }
        }
示例#13
0
        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();
            }
        }
示例#14
0
        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);
            }
        }
示例#15
0
 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;
     }
 }
示例#16
0
 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;
     }
 }
示例#17
0
 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;
     }
 }
示例#18
0
 //--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;
     }
 }
示例#19
0
 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;
     }
 }
示例#20
0
 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;
     }
 }
示例#21
0
 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;
     }
 }
示例#22
0
 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;
     }
 }
示例#23
0
 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;
     }
 }
示例#24
0
 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;
     }
 }
示例#25
0
 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;
     }
 }
示例#26
0
 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;
     }
 }
示例#27
0
        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;
            }
        }
示例#28
0
 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;
     }
 }
示例#29
0
        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;
        }
示例#30
0
        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");
        }
示例#31
0
        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;
            }
        }