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));
        }
        public async Task <List <PrintedLog> > GetLogs()
        {
            var logs = await _identityMap.GetAllLogs();

            List <PrintedLog>         results = new List <PrintedLog>();
            List <Task <PrintedLog> > tasker  = new List <Task <PrintedLog> >(logs.Count);

            tasker.AddRange(logs.Select(log => GetPLog(log)));

            foreach (var task in tasker)
            {
                results.Add(await task);
            }

            return(results);

            async Task <PrintedLog> GetPLog(Log log)
            {
                ModelCopy modelCopy = await _identityMap.FindModelCopy(log.ModelCopyID).ConfigureAwait(false);

                string modelName = "";

                switch (modelCopy.modelType)
                {
                case TypeEnum.Book:
                    modelName = (await _identityMap.FindBook(modelCopy.modelID))?.Title;
                    break;

                case TypeEnum.Magazine:
                    modelName = (await _identityMap.FindMagazine(modelCopy.modelID))?.Title;
                    break;

                case TypeEnum.Movie:
                    modelName = (await _identityMap.FindMovie(modelCopy.modelID))?.Title;
                    break;

                case TypeEnum.Music:
                    modelName = (await _identityMap.FindMusic(modelCopy.modelID))?.Title;
                    break;
                }

                Client client = await _clientManager.FindByIdAsync(log.ClientID.ToString());

                return(new PrintedLog(client.FirstName + " " + client.LastName, log.Transaction,
                                      modelCopy.modelType, modelName, log.ModelCopyID, log.TransactionTime));
            }
        }
Beispiel #3
0
        //Find methods (by id, isbn10, isbn13)

        public async Task <Book> FindByIdAsync(string bookId)
        {
            Book book = await _im.FindBook(int.Parse(bookId));

            return(book);
        }