Exemplo n.º 1
0
        public async Task <IActionResult> Index()
        {
            Client client = await _cm.FindByEmailAsync(User.Identity.Name);

            int borrowMax = client.BorrowMax;
            int numModels = await _identityMap.CountModelCopiesOfClient(client.clientId);

            int cartCount = HttpContext.Session.GetInt32("ItemsCount") ?? 0;

            TempData["totalBorrowed"] = cartCount + numModels;
            TempData["canBorrow"]     = cartCount + numModels <= borrowMax;
            TempData["borrowMax"]     = borrowMax;
            var modelCopies = await _identityMap.FindModelCopiesByClient(client.clientId);

            var returnViewModels = new List <ReturnViewModel>(modelCopies.Count);

            foreach (ModelCopy element in modelCopies)
            {
                string title = "";
                switch (element.modelType)
                {
                case TypeEnum.Book:
                {
                    title = (await _identityMap.FindBook(element.modelID)).Title;
                    break;
                }

                case TypeEnum.Magazine:
                {
                    title = (await _identityMap.FindMagazine(element.modelID)).Title;
                    break;
                }

                case TypeEnum.Movie:
                {
                    title = (await _identityMap.FindMovie(element.modelID)).Title;
                    break;
                }

                case TypeEnum.Music:
                {
                    title = (await _identityMap.FindMusic(element.modelID)).Title;
                    break;
                }
                }

                returnViewModels.Add(new ReturnViewModel {
                    BorrowDate  = element.borrowedDate,
                    ModelCopyId = element.id,
                    ModelId     = element.modelID,
                    ModelType   = element.modelType,
                    ReturnDate  = element.returnDate,
                    Title       = title
                });
            }

            return(View(returnViewModels));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Index()
        {
            Client client = await _cm.FindByEmailAsync(User.Identity.Name);

            int borrowMax = client.BorrowMax;
            int numModels = await _identityMap.CountModelCopiesOfClient(client.clientId);

            int cartCount             = HttpContext.Session.GetInt32("ItemsCount") ?? 0;
            List <SessionModel> Items = HttpContext.Session.GetObject <List <SessionModel> >("Items") ?? new List <SessionModel>();

            TempData["totalBorrowed"] = cartCount + numModels;
            TempData["canBorrow"]     = cartCount + numModels <= borrowMax;
            TempData["borrowMax"]     = borrowMax;
            List <Task <Book> >     bookTasks     = new List <Task <Book> >(Items.Count);
            List <Task <Magazine> > magazineTasks = new List <Task <Magazine> >(Items.Count);
            List <Task <Movie> >    movieTasks    = new List <Task <Movie> >(Items.Count);
            List <Task <Music> >    musicTasks    = new List <Task <Music> >(Items.Count);

            foreach (SessionModel element in Items)
            {
                switch (element.ModelType)
                {
                case TypeEnum.Book:
                {
                    bookTasks.Add(_bookc.FindByIdAsync(element.Id.ToString()));
                    break;
                }

                case TypeEnum.Magazine:
                {
                    magazineTasks.Add(_magazinec.FindByIdAsync(element.Id.ToString()));
                    break;
                }

                case TypeEnum.Movie:
                {
                    movieTasks.Add(_moviec.GetMovieByIdAsync(element.Id));
                    break;
                }

                case TypeEnum.Music:
                {
                    musicTasks.Add(_musicc.FindMusicByIdAsync(element.Id.ToString()));
                    break;
                }
                }
            }

            List <CartViewModel> result = new List <CartViewModel>(Items.Count);

            result.AddRange(bookTasks.Select(t =>
            {
                t.Wait();
                Book b = t.Result;
                return(new CartViewModel {
                    ModelId = b.BookId, Title = b.Title, Type = TypeEnum.Book
                });
            }));

            result.AddRange(magazineTasks.Select(t =>
            {
                t.Wait();
                Magazine m = t.Result;
                return(new CartViewModel {
                    ModelId = m.MagazineId, Title = m.Title, Type = TypeEnum.Magazine
                });
            }));

            result.AddRange(movieTasks.Select(t =>
            {
                t.Wait();
                Movie m = t.Result;
                return(new CartViewModel {
                    ModelId = m.MovieId, Title = m.Title, Type = TypeEnum.Movie
                });
            }));

            result.AddRange(musicTasks.Select(t =>
            {
                t.Wait();
                Music m = t.Result;
                return(new CartViewModel {
                    ModelId = m.MusicId, Title = m.Title, Type = TypeEnum.Music
                });
            }));


            return(View(result));
        }