コード例 #1
0
 public PurchaseViewModel(Purchase purchase)
 {
     this.Id = purchase.Id;
     this.Price = purchase.Price;
     this.DateOfPurchase = purchase.DateOfPurchase;
     this.IsRecalled = purchase.IsRecalled;
     this.ApplicationUser = purchase.ApplicationUser.UserName;
     this.Book = purchase.Book.Title;
 }
コード例 #2
0
 public static PurchaseViewModel CreateViewModel(Purchase purchase)
 {
     return new PurchaseViewModel
     {
         Id = purchase.Id,
         BookTitle = purchase.Book.Title,
         Price = purchase.Price,
         SoldAt = purchase.DateOfPurchase.ToShortDateString(),
         IsRecalled = purchase.isRecalled
     };
 }
コード例 #3
0
ファイル: PurchaseViewModel.cs プロジェクト: nok32/SoftUni
        public static PurchaseViewModel Create(Purchase purchase)
        {
            var purchaseView = new PurchaseViewModel
            {
                Id = purchase.Id,
                BookTitle = purchase.Book.Title,
                Price = purchase.Price,
                DateOfPurchase = purchase.DateOfPurchase,
                IsRecalled = purchase.IsRecalled
            };

            return purchaseView;
        }
コード例 #4
0
        public static PurchaseViewModel ConvertToPurchaseViewModel(Purchase purchase)
        {
            PurchaseViewModel purchaseViewModel = new PurchaseViewModel
            {
                Username = purchase.User.UserName,
                BookTitle = purchase.Book.Title,
                Price = purchase.Price,
                DateOfPurchase = purchase.DateOfPurchase,
                IsRecalled = purchase.IsRecalled
            };

            return purchaseViewModel;
        } 
コード例 #5
0
        public IHttpActionResult CreatePurchase(int id)
        {
            var book = this.Data.Books.Find(id);
            var currentUserId = this.User.Identity.GetUserId();
            var user = this.Data.Users
                .First(u => u.Id == currentUserId);

            if (book == null)
            {
                return this.BadRequest("invalid book id");
            }

            var purchase = new Purchase()
            {
                Book = book,
                User = user,
                Price = book.Price,
                DateOfPurchase = DateTime.Now,
                IsRecalled = false
            };

            if (book.Copies == 0)
            {
                return this.BadRequest("no book's copies");
            }

            book.Copies = book.Copies - 1;
            this.Data.Purchases.Add(purchase);
            this.Data.SaveChanges();

            var purchaseResult = new
            {
                Price = purchase.Price,
                PurchaseDate = purchase.DateOfPurchase,
                IsRecalled = purchase.IsRecalled,
                PurchasePrice = purchase.Price,
                BookTitle = purchase.Book.Title
            };

            return this.Ok(purchaseResult);
        }
コード例 #6
0
        public IHttpActionResult BuyBook(int id)
        {
            var existingBook = this.BookShopData.Books.Find(id);
            if (existingBook == null)
            {
                return this.BadRequest("No book with the specified id exists.");
            }

            if (existingBook.Copies == 0)
            {
                return this.BadRequest("Insufficient book copies.");
            }

            var newPurchase = new Purchase
            {
                BookId = existingBook.Id,
                UserId = this.User.Identity.GetUserId(),
                Price = existingBook.Price,
                DateOfPurchase = DateTime.Now,
                isRecalled = false
            };

            existingBook.Copies--;
            existingBook.Purchases.Add(newPurchase);

            this.BookShopData.Books.Update(existingBook);
            this.BookShopData.SaveChanges();

            var purchaseViewModel = PurchaseViewModel.CreateViewModel(newPurchase);

            return this.Ok(purchaseViewModel);
        }
コード例 #7
0
        public IHttpActionResult PurchaseBook(int id)
        {
            var book = context.Books.FirstOrDefault(b => b.Id == id);
            if (book == null)
            {
                return this.NotFound();
            }

            if (book.Copies <= 0)
            {
                return this.BadRequest("No available books left!");
            }

            book.Copies--;

            var purchase = new Purchase()
            {
                Price = book.Price,
                DateOfPurchase = DateTime.Now,
                BookId = book.Id,
                ApplicationUser = context.Users.FirstOrDefault(u => u.UserName == this.User.Identity.Name),
                IsRecalled = false
            };

            context.Purchases.Add(purchase);
            context.SaveChanges();

            var data = new PurchaseViewModel(purchase);

            return this.Ok(data);
        }
コード例 #8
0
ファイル: BooksController.cs プロジェクト: ivan4otopa/SoftUni
        public IHttpActionResult BuyBook(int id, [FromBody]BuyBookBindingModel model)
        {
            var loggedUserId = this.User.Identity.GetUserId();

            if (loggedUserId == null)
            {
                return this.Unauthorized();
            }

            if (!this.ModelState.IsValid)
            {
                return this.BadRequest(this.ModelState);
            }

            var book = db.Books.Find(id);
            var user = db.Users.Find(loggedUserId);
            var purchase = new Purchase()
            {
                Price = model.Price,
                DateOfPurchase = DateTime.Now,
                IsRecalled = false,
                ApplicationUser = user,
                Book = book
            };

            db.Purchases.Add(purchase);
            book.Copies--;
            db.SaveChanges();

            return this.Ok(new PurchaseViewModel(purchase));
        }
コード例 #9
0
        public IHttpActionResult BuyBook(int id)
        {
            string loggedUserId = this.userIdProvider.GetUserId();
            var loggedUser = this.data.Users.Find(loggedUserId);
            if (loggedUser == null)
            {
                return this.BadRequest("Invalid session token.");
            }

            var existingBook = this.data.Books.Find(id);
            if (existingBook == null)
            {
                return this.BadRequest("Book does not exist - invalid id!");
            }

            if (existingBook.Copies == 0)
            {
                return this.BadRequest("Unable to make purchase - insufficient book copies quantity.");
            }

            Purchase purchase = new Purchase()
            {
                Book = existingBook,
                BookId = existingBook.Id,
                DateOfPurchase = DateTime.Now,
                Price = existingBook.Price,
                User = loggedUser,
                UserId = loggedUserId,
                IsRecalled = false
            };

            existingBook.Copies--;

            this.data.Purchases.Add(purchase);
            this.data.Save();

            PurchaseViewModel purchaseViewModel = PurchaseViewModel.ConvertToPurchaseViewModel(purchase);

            return this.Ok(purchaseViewModel);
        }
コード例 #10
0
ファイル: BooksController.cs プロジェクト: nok32/SoftUni
        public IHttpActionResult BuyBook(int id)
        {
            var book = this.BookShopData.Books.FirstOrDefault(b => b.Id == id);

            if (book == null)
            {
                return this.NotFound();
            }

            if (--book.Copies <= 0)
            {
                return this.BadRequest("There is not enough book copies.");
            }
            
            var loggedUserId = this.User.Identity.GetUserId();
            if (loggedUserId == null)
            {
                return this.BadRequest("Invalid session token.");
            }

            var user = this.BookShopData.Users.Find(loggedUserId);

            var purchase = new Purchase
            {
                Book = book,
                User = user,
                Price = book.Price,
                DateOfPurchase = DateTime.Now,
                IsRecalled = false
            };

            this.BookShopData.Purchases.Add(purchase);
            this.BookShopData.SaveChanges();

            return this.Ok(PurchaseViewModel.Create(purchase));
        }
コード例 #11
0
 public PurchaseViewModel(Purchase purchase)
 {
     User = purchase.ApplicationUser.UserName;
     BookTitle = purchase.Book.Title;
     Price = purchase.Book.Price;
 }