public static void CheckForBasket()
 {
     try
     {
         if (Models.Customer.Catalog[CurrentUser.User[0]].BasketID != 0)
         {
             if (Models.Basket.Catalog[Models.Customer.Catalog[CurrentUser.User[0]].BasketID] != null)
             {
                 basket = Models.Basket.Catalog[Models.Customer.Catalog[CurrentUser.User[0]].BasketID];
             }
             else
             {
                 throw new ArgumentException();
             }
         }
         else
         {
             throw new ArgumentException();
         }
     }
     catch (ArgumentException)
     {
         Models.Basket.Create(basket);
         Models.Customer.Catalog[CurrentUser.User[0]].BasketID = basket.ID;
         Helpers.JsonFileHelper <Models.Customer> .WriteToJson(Models.Customer.Catalog, Models.Customer.JsonCustomers);
     }
 }
Ejemplo n.º 2
0
 public static Basket ToBasketViewModel(this Models.Basket basket)
 {
     return(new Basket
     {
         Items = basket.Items.ToBasketItemViewModels()
     });
 }
        public IActionResult Edit(Models.Basket model)
        {
            if (model != null)
            {
                // Temporary remove many to many selected collections,
                // as they will cause invalid model state if there are any required fields on the many to many selected.
                ModelState.Clear();
                TryValidateModel(model);
            }
            if (ModelState.IsValid)
            {
                try
                {
                    _unitOfWork.Baskets.Add(model.GetCore());

                    return(View(model));
                }
                catch
                {
                    ModelState.AddModelError(
                        "Error",
                        "Problem saving the basket.");

                    return(View(model));
                }
            }
            else
            {
                return(View(model));
            }
        }
        public IActionResult Edit(int?Id)
        {
            Services.Data.Core.Domain.Basket basket;

            if (Id == null)
            {
                basket = new Services.Data.Core.Domain.Basket();
            }
            else
            {
                basket = _unitOfWork.Baskets.Get((int)Id);

                if (basket == null)
                {
                    return(Redirect(
                               "/../Basket"));
                }
            }

            var model = new Models.Basket(basket);

            // Model parents and children
            //model.PopulateChilden();

            return(View(model));
        }
Ejemplo n.º 5
0
        public IActionResult PutItemsInBasket(int id, Models.Basket basket)
        {
            basket.Id = id;
            var serializedBasket = JsonConvert.SerializeObject(basket);

            cachingProvider.Set("Basket_" + id, serializedBasket, TimeSpan.FromDays(15));
            return(NoContent());
        }
        /// <summary>
        /// Gets basket total without delivery.
        /// </summary>
        /// <param name="basket"></param>
        /// <returns></returns>
        public static Price GetBasketTotalWithoutDelivery(this Models.Basket basket)
        {
            var total = basket.GetBasketTotalInOfficeCurrency();

            return(total != null && basket.Delivery?.Charge != null
                ? total.Subtract(basket.Delivery.Charge)
                : total);
        }
Ejemplo n.º 7
0
 public static Basket ToBasketViewModel(this Models.Basket basket)
 {
     return(new Basket
     {
         Items = basket.Items.ToBasketItemViewModels(),
         GrossTotal = basket.GrossTotal,
         NetTotal = basket.NetTotal,
         TaxTotal = basket.TaxTotal
     });
 }
Ejemplo n.º 8
0
        public async Task <Order> CreateOrder(Models.Basket basket, Payment payment)
        {
            Order order = new Order(basket, payment);
            ICollectionReference collection = CrossCloudFirestore.
                                              Current.Instance.
                                              GetCollection("Orders");

            await collection.AddDocumentAsync(order);

            return(await Task.FromResult(order));
        }
 public static Models.Order ToOrderModel(this Models.Basket basket)
 {
     return(new Models.Order
     {
         ID = Guid.NewGuid(),
         GrossTotal = basket.GetGrossTotal(),
         NetTotal = basket.Items.Sum(item => item.NetPrice),
         TaxTotal = basket.Items.Sum(item => item.NetPrice * item.TaxRate),
         Items = basket.Items.ToOrderItemModels()
     });
 }
Ejemplo n.º 10
0
        public Basket GetUserBasket(string user)
        {
            Basket basket = baskets.FirstOrDefault(item => item.User == user);

            if (basket == null)
            {
                basket = new Models.Basket {
                    User = user, Products = new List <Models.ProductQty>()
                };
                baskets.Add(basket);
            }
            return(basket);
        }
Ejemplo n.º 11
0
        public static Basket ToBasketViewModel(this Models.Basket basket)
        {
            var totalUnrounded = basket.Items.Sum(item => item.GrossPrice * basket.Discount);
            var totalRounded   = Math.Round(totalUnrounded, 2);

            return(new Basket
            {
                Items = basket.Items.ToBasketItemViewModels(),
                Total = totalRounded,
                Discount = basket.Discount,
                DiscountApplied = basket.DiscountApplied
            });
        }
Ejemplo n.º 12
0
        public IActionResult Post([FromBody] User user)
        {
            var basketId = Guid.NewGuid().ToString("D");

            var basket = new Models.Basket()
            {
                Created = DateTime.Now,
                Id      = basketId,
                UserId  = user.Id
            };

            _database.StringSet(basketId, _serializer.Serialize(basket), new TimeSpan(0, 30, 0));
            return(Json(basket));
        }
Ejemplo n.º 13
0
        // GET: Basket
        public ActionResult Index()
        {
            Models.Basket basket = new Models.Basket();
            using (Models.ShopEntities1 db = new Models.ShopEntities1())
            {
                basket.Amount       = 1000;
                basket.Id           = 1;
                basket.Registerdate = DateTime.Now;
                basket.Status       = 0;
                db.Baskets.Add(basket);
                db.SaveChanges();
            }

            return(View(basket));
        }
Ejemplo n.º 14
0
        public async Task <IActionResult> Get(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get")] HttpRequest req,
            [SignalR(HubName = "basket")] IAsyncCollector <SignalRMessage> signalRMessage)
        {
            string userId = _authorize.GetUserId(req);

            Models.Basket basket = _mongoBase.Find(Guid.Parse(userId));

            await signalRMessage.AddAsync(
                new SignalRMessage {
                Target    = "basket",
                UserId    = userId.ToString(),
                Arguments = new[] { JsonConvert.SerializeObject(basket) }
            });

            return(new OkObjectResult(basket));
        }
Ejemplo n.º 15
0
        public IActionResult OnPost()
        {
            if (ModelState.IsValid)
            {
                SessionDemo.Models.Basket basket = new Models.Basket();
                basket.Description = BasketForm.Description;
                basket.Price       = BasketForm.Price;

                dm.AddItem(basket);

                dm.SaveData();

                return(RedirectToPage("/Index"));
            }

            return(Page());
        }
        private static double GetGrossTotal(this Models.Basket basket)
        {
            var netSubTotal = basket.Items.Sum(item => item.GrossPrice);

            if (basket.Discount != null)
            {
                switch (basket.Discount.Type)
                {
                case Models.DiscountType.Percentage:
                    return(netSubTotal * (1 - basket.Discount.Amount));

                case Models.DiscountType.FlatAmount:
                    return(netSubTotal - basket.Discount.Amount);
                }
            }

            return(netSubTotal);
        }
        public IActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(Redirect("~/basket"));
            }

            var basket = _unitOfWork.Baskets.Get(id);

            if (basket == null)
            {
                return(Redirect("/../Basket"));
            }
            else
            {
                var model = new Models.Basket(basket);
                return(View(model));
            }
        }
        public IActionResult Delete(Models.Basket model)
        {
            if (ModelState.IsValid)
            {
                if (model == null)
                {
                    return(View(model));
                }

                if (model.Id == null)
                {
                    return(View(model));
                }

                try
                {
                    if (_unitOfWork.Baskets
                        .Remove((int)model.Id,
                                out string errorMessage) != Services.Data.DataStoreResult.Success)
                    {
                        ModelState.AddModelError("Error",
                                                 errorMessage);
                        return(View(model));
                    }


                    _unitOfWork.Complete();

                    return(Redirect(
                               "/../Basket"));
                }
                catch
                {
                    ModelState.AddModelError("Error",
                                             "Cannot delete the Basket.");
                    return(View(model));
                }
            }
            else
            {
                return(View(model));
            }
        }
Ejemplo n.º 19
0
        public async Task <IActionResult> Update(
            [HttpTrigger(AuthorizationLevel.Anonymous, "put")] HttpRequest req,
            [SignalR(HubName = "basket")] IAsyncCollector <SignalRMessage> signalRMessage)
        {
            string userId      = _authorize.GetUserId(req);
            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();

            var input = JsonConvert.DeserializeObject <Models.Basket>(requestBody);

            List <Models.BrokerRules> invalids = input.Valid();

            if (invalids.Count > 0)
            {
                return(new BadRequestObjectResult(JsonConvert.SerializeObject(invalids)));
            }

            var basket = new Models.Basket
            {
                Id       = input.Id,
                Created  = DateTime.Now,
                IsActive = input.IsActive,
                Items    = input.Items,
                UserId   = Guid.Parse(userId)
            };

            basket.UpdateTotal();

            _mongoBase.Update(basket);

            await signalRMessage.AddAsync(
                new SignalRMessage {
                Target    = "basket",
                UserId    = userId,
                Arguments = new[] { JsonConvert.SerializeObject(basket) }
            });

            return(new OkObjectResult(basket));
        }
Ejemplo n.º 20
0
        public ActionResult Post([FromBody] Models.Basket basket)
        {
            basket = _serializer.Deserialize <Models.Basket>(_database.StringGet(basket.Id));

            var basketCheckedOut = new BasketCheckedOut()
            {
                Basket = new Events.Basket()
                {
                    Created = basket.Created,
                    Id      = basket.Id,
                    UserId  = basket.UserId,
                    Items   = basket.Items.Select(x => new Events.BasketItem()
                    {
                        Quantity = x.Quantity,
                        Id       = x.Id
                    }).ToList()
                }
            };

            _bus.Publish(basketCheckedOut);
            _database.KeyDelete(basket.Id);
            return(Json(basket));
        }
Ejemplo n.º 21
0
 public static Models.Basket Handle(Models.Basket basket, IEvent evt)
 {
     if (evt is CreatedBasketEvent)
     {
         return(basket);
     }
     else if (evt is AddedLineItemToBasketEvent)
     {
         var newBasket = basket;
         newBasket.LineItems.Add((evt as AddedLineItemToBasketEvent).LineItem);
         return(newBasket);
     }
     else if (evt is RemovedLineItemFromBasketEvent)
     {
         var newBasket = basket;
         basket.LineItems = basket.LineItems.Where(
             li =>
             li.Id != (evt as RemovedLineItemFromBasketEvent).LineItem.Id)
                            .ToList();
         return(newBasket);
     }
     throw new NotImplementedException($"Unable to handle {evt}");
 }
        public IActionResult Index()
        {
            try
            {
                IEnumerable <Services.Data.Core.Domain.Basket> baskets = null;

                baskets = _unitOfWork.Baskets.GetAll();

                var Models = new List <Models.Basket>();

                if (baskets != null)
                {
                    foreach (var core in baskets)
                    {
                        var model = new Models.Basket(core);
                        Models.Add(model);
                    }
                }

                var summary = new Models.Summary <Models.Basket>
                {
                    Models = Models,
                    Count  = Models.Count,
                };

                return(View(summary));
            }
            catch
            {
                ModelState.AddModelError(
                    "Error",
                    "Cannot get the baskets");

                return(View());
            }
        }
Ejemplo n.º 23
0
 /// <summary>
 /// Determines whether the basket has any NON automatic promotions.
 /// </summary>
 /// <param name="basket"></param>
 /// <returns></returns>
 public static bool HasNonAutomaticPromotion(this Models.Basket basket)
 => basket.Coupon != null && basket.HasPromotion();
Ejemplo n.º 24
0
 /// <summary>
 /// Determines whether the basket has any promotions.
 /// </summary>
 /// <param name="basket"></param>
 /// <returns></returns>
 public static bool HasPromotion(this Models.Basket basket)
 => basket.AppliedPromotion != null;
Ejemplo n.º 25
0
        public IActionResult Index()
        {
#if DEBUG
            // You may want to create a UAT (user exceptance tester) role and check for this:
            // "if(_unitOfWork.IsUATTester(GetUserId())"
            // Company SANDBOX Client Id. To go live replace this with the live ID.
            //ViewBag.ClientId = "{SANDBOX Client Id}"; // Get from a data store or stettings
            ViewBag.ClientId = PayPal.PayPalClient.SandboxClientId; // Get from a data store or stettings

            if (PayPal.PayPalClient.SandboxClientId == "{PayPal SANDBOX Client Id}" &&
                PayPal.PayPalClient.SandboxClientSecret == "{PayPal SANDBOX Client Secret}")
            {
                ViewBag.ShowErrorMessage = true;
            }
            else
            {
                ViewBag.ShowErrorMessage = false;
            }
#else
            // Company LIVE Client Id. To go live replace this with the live ID.
            ViewBag.ClientId = PayPal.PayPalClient.LiveClientId; // Get from a data store or stettings

            if (PayPal.PayPalClient.LiveClientId == "{PayPal LIVE Client Id}" &&
                PayPal.PayPalClient.LiveClientSecret == "{PayPal LIVE Client Secret}")
            {
                ViewBag.ShowErrorMessage = true;
            }
            else
            {
                ViewBag.ShowErrorMessage = false;
            }
#endif

            if (PayPal.PayPalClient.SandboxClientId == "{PayPal SANDBOX Client Id}")
            {
                ViewBag.CurrencyCode = "GBP"; // Get from a data store
            }
            ViewBag.CurrencySign = "£";       // Get from a data store

            Models.Basket model = null;

            if (_unitOfWork.Baskets.GetAll().Count() == 0)
            {
                var basket = new Services.Data.Core.Domain.Basket()
                {
                    Id             = 0,
                    CurrencyCode   = "GBP",
                    CurrencySymbol = "£",
                    Discount       = 0,
                };

                _unitOfWork.Baskets.Add(basket);


                var product = new Services.Data.Core.Domain.Product()
                {
                    Id          = 0,
                    Name        = "Sargon Object Database",
                    Description = "A app for managing information about archaeological objects.",
                    Price       = 40,
                    Quantity    = 1,
                    Basket      = basket,
                };

                _unitOfWork.Products.Add(product);
                basket.Products.Add(product);


                product = new Services.Data.Core.Domain.Product()
                {
                    Id          = 1,
                    Name        = "Delaney's Photo Renamer",
                    Description = "Photo Renamer automatically prefixes photos with date taken.",
                    Price       = 7,
                    Quantity    = 1,
                    Basket      = basket,
                };

                _unitOfWork.Products.Add(product);
                basket.Products.Add(product);


                _unitOfWork.Complete();

                model = new Models.Basket(basket);
            }
            else
            {
                var basket = _unitOfWork.Baskets.GetAll().FirstOrDefault();
                model = new Models.Basket(basket);
            }
            return(View(model));
        }
Ejemplo n.º 26
0
 /// <summary>
 /// Gets total adjustment amount in shopper currency.
 /// </summary>
 /// <param name="basket"></param>
 /// <returns></returns>
 public static Price GetTotalDiscountInShopperCurrency(this Models.Basket basket)
 => basket.GetTotalFromAllReservations(r => r.GetTotalAdjustmentAmountInShopperCurrency());
Ejemplo n.º 27
0
 /// <summary>
 /// Gets total face value in shopper currency.
 /// </summary>
 /// <param name="basket"></param>
 /// <returns></returns>
 public static Price GetTotalFaceValueInShopperCurrency(this Models.Basket basket)
 => basket.GetTotalFromAllReservations(r => r.GetTotalFaceValueInShopperCurrency());
Ejemplo n.º 28
0
 private static Models.Basket CreateBasket()
 {
     var basket = new Models.Basket {Items = new List<Item>()};
     BasketStore.Save(basket);
     return basket;
 }
Ejemplo n.º 29
0
 public void Insert(Models.Basket basket) => _collection.InsertOne(basket);
Ejemplo n.º 30
0
 /// <summary>
 /// Gets total adjusted amount in office currency.
 /// </summary>
 /// <param name="basket"></param>
 /// <returns></returns>
 public static Price GetBasketTotalInOfficeCurrency(this Models.Basket basket)
 => basket.GetTotalFromAllReservations(r => r.GetTotalAdjustedAmountInOfficeCurrency());
Ejemplo n.º 31
0
 public void Update(Models.Basket basket) => _collection.ReplaceOne(p => p.UserId == basket.UserId, basket);