コード例 #1
0
        /*
         * Mostra lo stato del carrello
         */
        public async Task <IActionResult> Index()
        {
            UpoECommerceContext context = new UpoECommerceContext();

            //legge codice prodotti salvati in session
            var SessionCart = HttpContext.Session.GetObjectFromJson <List <OrdineProdotto> >("Cart");

            //se non c'e' nessun prodotto in session, carrello vuoto
            if (SessionCart == null)
            {
                return(View(new List <CarrelloDataSource>()));
            }

            //con i codici prodotto in session, recupera tutte le info sui prodotti da db
            var query = from prodotti in context.Prodotto
                        join carrello in SessionCart on prodotti.CdProdotto equals carrello.CdProdotto
                        select new CarrelloDataSource
            {
                CdProdotto  = prodotti.CdProdotto,
                Titolo      = prodotti.Titolo,
                Descrizione = prodotti.Descrizione,
                Prezzo      = prodotti.Prezzo,
                Sconto      = prodotti.Sconto,
                Immagine    = prodotti.Immagine,
                Quantita    = carrello.Quantita
            };

            return(View(await query.ToListAsync()));
        }
コード例 #2
0
        /*
         * Espone i prodotti in offerta
         */
        public async Task <IActionResult> Index()
        {
            UpoECommerceContext context = new UpoECommerceContext();

            //prende i prodotti con sconto > 0
            var query = from prodotto in context.Prodotto
                        where prodotto.Sconto > 0
                        select prodotto;

            return(View(await query.ToListAsync()));
        }
コード例 #3
0
        /*
         * Espone i top 10 prodotti piu' venduti del mese
         */
        public async Task <IActionResult> Index()
        {
            UpoECommerceContext context = new UpoECommerceContext();

            //query top 10:
            //prende i prodotti che compaiono in acquisti con data > (data di oggi -3 mesi)
            var query = (from prodotti in context.Prodotto
                         join ordiniProdotti in context.OrdineProdotto on prodotti.CdProdotto equals ordiniProdotti.CdProdotto
                         join ordini in context.Ordine on ordiniProdotti.CdOrdine equals ordini.CdOrdine
                         where ordini.DtInserimento > DateTime.Now.AddMonths(-3)
                         orderby ordiniProdotti.Quantita
                         select prodotti)
                        .GroupBy(p => p.CdProdotto).Select(g => g.First()).Take(10);

            //raggruppa per codice prodotto e prende solo il primo (per evitare duplicati)

            return(View(await query.ToListAsync()));
        }