예제 #1
0
        public IActionResult Purchase(bool succesful = true)
        {
            ViewData["UserID"] = User.FindFirstValue(ClaimTypes.NameIdentifier);
            var vm = new AdvertPurchaseViewModel()
            {
                Successful = succesful,
                Businesses = _businessManager.GetBusinesses().Data,
                Packages   = _packageManager.GetPackages(PackageType.Advert).Data
            };

            return(View(vm));
        }
예제 #2
0
        public IActionResult Purchase(AdvertPurchaseViewModel vm)
        {
            if (ModelState.IsValid)
            {
                string  userID          = User.FindFirstValue(ClaimTypes.NameIdentifier);
                Package selectedPackage = _packageManager.GetPackage(vm.SelectedPackageID);
                if (selectedPackage != null)
                {
                    if (_creditManager.SubtractCredit(userID, selectedPackage.Price))
                    {
                        Advert newAdvert = new Advert
                        {
                            BusinessID = vm.BusinessID,
                            Shows      = selectedPackage.Amount
                        };
                        if (vm.PhotoData != null)
                        {
                            using (var ms = new MemoryStream())
                            {
                                vm.PhotoData.CopyTo(ms);
                                newAdvert.PhotoData = ms.ToArray();
                            }
                        }
                        newAdvert = _advertManager.CreateAdvert(newAdvert);

                        // Create empty order
                        Order advertOrder = new Order
                        {
                            UserID    = userID,
                            OrderType = OrderType.AdvertPurchase,
                            Status    = OrderStatus.Finished
                        };
                        advertOrder = _orderManager.CreateOrder(advertOrder);

                        // Create advertline and link to order
                        AdvertLine advertLine = new AdvertLine
                        {
                            OrderID       = advertOrder.ID,
                            AdvertID      = newAdvert.ID,
                            OriginalShows = newAdvert.Shows,
                            PricePaid     = selectedPackage.Price
                        };
                        _advertLineManager.CreateAdvertLine(advertLine);

                        return(RedirectToAction(nameof(Index)));
                    }
                    else
                    {
                        return(RedirectToAction(nameof(Purchase),
                                                new
                        {
                            succesful = false
                        }
                                                ));
                    }
                }
                else
                {
                    return(RedirectToAction(nameof(Purchase),
                                            new
                    {
                        succesful = false
                    }
                                            ));
                }
            }

            ViewData["UserID"] = User.FindFirstValue(ClaimTypes.NameIdentifier);
            return(View(vm));
        }