Exemple #1
0
        public ActionResult Index()
        {
            var resultCategories = this.indexService.GetTopCategories().To<HomeCategoryDTO>().ToList();

            var resultProducts = this.indexService.GetTopProducts().Select(p => new HomeProductDTO
            {
                Id = p.Id,
                CategoryName = p.Category.Name,
                FileName = p.Images.AsQueryable().Where(i => i.ProductId == p.Id).FirstOrDefault().FileName,
                Price = p.Price,
                Title = p.Title,
                Discount = p.Discount
            });
            //this.indexService.GetTopProducts().To<HomeProductDTO>().ToList();

            var resultDTO = new HomePageDTO { categories = resultCategories, products = resultProducts };

            return View(resultDTO);
        }
Exemple #2
0
        public HomePageDTO GetHomePage()
        {
            IEnumerable <Product> products = _dbContext.Products.Include(p => p.Page).Include(p => p.MainImage).OrderByDescending(p => p.DateAdded).Take(8);

            IMapper mapper = new MapperConfiguration(cfg =>
            {
                cfg.CreateMap <Product, ProductPageDTO>()
                .ForMember(prodDTO => prodDTO.Alias, opt => opt.MapFrom(p => p.Page.Alias));
                cfg.CreateMap <Image, ImageDTO>();
            }).CreateMapper();

            IEnumerable <ProductPageDTO> productsDTO = mapper.Map <IEnumerable <ProductPageDTO> >(products);

            HomePageDTO homePage = new HomePageDTO {
                Products = productsDTO, Title = "Главная"
            };

            return(homePage);
        }
        public async Task <ActionResult <HomePageDTO> > Get()
        {
            var limite = 3;
            var peliculasEnCartelera = await context.Movies
                                       .Where(x => x.EnCartelera).Take(limite)
                                       .OrderByDescending(x => x.ReleaseDate)
                                       .ToListAsync();

            var fechaActual      = DateTime.Today;
            var proximosEstrenos = await context.Movies
                                   .Where(x => x.ReleaseDate > fechaActual)
                                   .OrderBy(x => x.ReleaseDate).Take(limite)
                                   .ToListAsync();

            var response = new HomePageDTO()
            {
                PeliculasEnCartelera = peliculasEnCartelera,
                ProximosEstrenos     = proximosEstrenos
            };

            return(response);
        }
        public async Task <IActionResult> Index()
        {
            var statisticsForHome = await statisticsService.GetStatisticsDetails();

            var browserTable = await statisticsService.getBrowserTable();

            var osTable = await statisticsService.GetOsTable();

            var referrer = await statisticsService.GetReferrer();

            var pageView = await statisticsService.GetPageViewDetails();

            var homeDetails = new HomePageDTO
            {
                Statistics    = statisticsForHome,
                BrowserTables = browserTable,
                osTables      = osTable,
                pageViews     = pageView,
                referrers     = referrer,
            };

            return(View(homeDetails));
        }
Exemple #5
0
        public async Task <ActionResult <HomePageDTO> > Get()
        {
            var limit            = 6;
            var today            = DateTime.Today;
            var filmsOnBillboard = await _context.Films
                                   .Where(x => x.OnBillboard)
                                   .Take(limit)
                                   .OrderByDescending(x => x.ReleaseDate)
                                   .ToListAsync();

            var upcomingReleases = await _context.Films
                                   .Where(x => x.ReleaseDate > today)
                                   .OrderBy(x => x.ReleaseDate)
                                   .Take(limit)
                                   .ToListAsync();

            var response = new HomePageDTO()
            {
                FilmsOnBillboard = filmsOnBillboard,
                UpcomingReleases = upcomingReleases
            };

            return(response);
        }
Exemple #6
0
        /// <summary>
        /// Return Main Page DTO from analytics to get trending products
        /// </summary>
        /// <returns></returns>
        public static HomePageDTO HomePageProducts()
        {
            try
            {
                HomePageDTO homePageDTO = new HomePageDTO();
                var         OrderedList = TopProductsData.GetTopProducts().Products.OrderBy(x => x.Category.Id).ThenByDescending(cat => cat.TotalQuantitySale).ToList();

                for (int j = 0; j < Constants.TotalCategories; j++)
                {
                    TrendingDTO category = new TrendingDTO()
                    {
                        Category = OrderedList[j * (5)].Category,
                        Rank     = j + 1
                    };

                    List <ProductDTO> temp = new List <ProductDTO>();
                    for (int i = 0; i < Constants.ProductsToDisplay; i++)
                    {
                        temp.Add(OrderedList[(j * 5) + i]);
                    }
                    var         sortedProducts = temp.OrderByDescending(x => x.TotalQuantitySale).ToList();
                    ProductsDTO pt             = new ProductsDTO();
                    for (int i = 0; i < Constants.ProductsToDisplay; i++)
                    {
                        pt.Products.Add(sortedProducts[i]);
                    }
                    category.TopProducts.Add(pt);
                    homePageDTO.Trending.Add(category);
                }
                return(homePageDTO);
            }
            catch
            {
                return(null);
            }
        }
        public ActionResult Index()
        {
            HomePageDTO td = TopProductsLogic.HomePageProducts();

            return(View(td));
        }
        public async Task <ActionResult <HomePageDTO> > Get(bool entregarapida, bool entregaprogramada)
        {
            //usuario
            var user = await userManager.FindByEmailAsync(HttpContext.User.Identity.Name);

            //coordenadas del usuario
            double latitudusario = user.Latitude;
            double longitudsario = user.Longitude;

            //lista de productos inicial
            List <ProductoMercado> productosgenerales = new List <ProductoMercado>();


            //valores de la lista
            var queryablemer = context.Mercados.AsQueryable();
            var mercadoDB    = await queryablemer.ToListAsync();

            var queryablepromer   = context.ProductosMercados.AsQueryable();
            var productomercadoDB = await queryablepromer.ToListAsync();

            var queryablepro = context.Productos.AsQueryable();
            var productoDB   = await queryablepromer.ToListAsync();

            //metodo de seleccion
            foreach (var mer in mercadoDB)
            {
                var usuario = await userManager.FindByIdAsync(mer.UserId);

                double latitudmer  = usuario.Latitude;
                double longitudmer = usuario.Longitude;
                //double latitudmer = mer.User.Latitude;
                //double longitudmer = mer.User.Longitude;


                double constante   = Math.PI / 180;
                double radiotierra = 6371;

                double angulolatitud  = (latitudusario - latitudmer) * constante / 2;
                double angulolongitud = (longitudsario - longitudmer) * constante / 2;
                //prueba de seno cuadrado
                //double sin2x = 0.5 - 0.5 * Math.Cos(angulolatitud*2);
                //double sin2y = 0.5 + 0.5 * Math.Cos(angulolatitud * 2);
                double cosu = Math.Cos(latitudusario * constante);
                double cosm = Math.Cos(latitudmer * constante);

                double sin2x = Math.Pow(angulolatitud, 2);
                double sin2y = Math.Pow(angulolongitud, 2);

                double distancia = Math.Sqrt(sin2x + cosu * cosm * sin2y);
                distancia = Math.Asin(distancia) * 2;
                distancia = distancia * radiotierra * 1000;

                if (distancia <= 700) //FIX!!!
                {
                    foreach (var promer in productomercadoDB)
                    {
                        if (mer.Id == promer.MercadoId)
                        {
                            var producto = await context.Productos.FirstOrDefaultAsync(x => x.Id == promer.ProductoId);

                            if (producto.estado == true)
                            {
                                if (promer.Stock > 0)
                                {
                                    /*int idpro = promer.ProductoId;
                                     * var prod = await context.Productos.FirstAsync(x => x.Id == idpro);*/
                                    productosgenerales.Add(promer);
                                }
                            }
                        }
                    }
                }
            }

            //lista especifica de productos segun la orden
            List <Producto>        productosespecificos         = new List <Producto>();
            List <ProductoMercado> productosmercadosespecificos = new List <ProductoMercado>();

            //clacificacion por orden
            foreach (var pro in productosgenerales)
            {
                var prod = await context.Productos.FirstOrDefaultAsync(x => x.Id == pro.ProductoId);

                pro.Producto = prod;
                if (Boolean.Equals(entregarapida, prod.EntregaRapida))
                {
                    productosespecificos.Add(prod);
                    productosmercadosespecificos.Add(pro);
                }
                else if (Boolean.Equals(entregaprogramada, prod.EntregaProgramada))
                {
                    productosespecificos.Add(prod);
                    productosmercadosespecificos.Add(pro);
                }
            }

            var response = new HomePageDTO()                        //Inicializamos el modelo
            {
                ProductosEnvioRapido        = productosespecificos, //Asignamos los productos de Envio Rapido al modelo
                ProductosMercadoEnvioRapido = productosmercadosespecificos,
                ProductosEnvioProg          = productosespecificos, //Asignamos los productos de Envio programado al modelo
                ProductosMercadoEnvioProg   = productosmercadosespecificos
            };

            return(response);
        }