Пример #1
0
        public ActionResult ChooseDeliveryAddress()
        {
            AddressesToChooseViewModel model = new AddressesToChooseViewModel();

            foreach (DeliveryAddress address in _userService.ReturnUserByUsername(User.Identity.Name).DeliveryAddresses.ToList())
            {
                model.Addresses.Add(new DeliveryAddressViewModel()
                {
                    DeliveryAddressId = address.DeliveryAddressId,
                    CompanyName       = address.CompanyName,
                    Name           = (address.Name != null && address.Surname != null)?address.Name + " " + address.Surname:address.Name ?? address.Surname,
                    StreetName     = address.StreetName,
                    City           = (address.Postcode != null && address.City != null) ? address.Postcode + " " + address.City : address.Postcode ?? address.City,
                    PhoneNumber    = address.PhoneNumber,
                    AdditionalInfo = address.AdditionalInfo
                });
            }

            HttpWebRequest  req  = (HttpWebRequest)WebRequest.Create("http://api.paczkomaty.pl/?do=listmachines_csv");
            HttpWebResponse resp = (HttpWebResponse)req.GetResponse();

            StreamReader sr = new StreamReader(resp.GetResponseStream());

            string fileList = "";

            string[] tempStr;
            bool     correct;

            while (sr.Peek() >= 0)
            {
                correct  = true;
                fileList = sr.ReadLine();
                ParcelLockerAddressViewModel address = new ParcelLockerAddressViewModel();
                tempStr = fileList.Split(';');
                for (int i = 0; i < tempStr.Length; i++)
                {
                    if (tempStr.Length < 16 || (i >= 1 && i <= 4 && string.IsNullOrEmpty(tempStr[i])))
                    {
                        correct = false;
                        continue;
                    }
                    switch (i)
                    {
                    case 1:
                        address.Street = tempStr[i];
                        break;

                    case 2:
                        address.Street += " " + tempStr[i];
                        break;

                    case 3:
                        address.Postcode = tempStr[i];
                        break;

                    case 4:
                        address.City = tempStr[i];
                        break;
                    }
                }
                if (correct)
                {
                    address.Displayed = address.City + ", " + address.Street;
                    model.ParcelLockers.Add(address);
                }
            }
            sr.Close();
            model.ParcelLockers = model.ParcelLockers.OrderBy(o => o.City).ToList();
            return(View("DeliveryAddress", model));
        }
Пример #2
0
        public Guid Create(ParcelLockerAddressViewModel parcel, ApplicationUser user)
        {
            DeliveryAddress address = _dbContext.DeliveryAddresses.FirstOrDefault(a => a.StreetName == parcel.Street && a.City == parcel.Street && a.Postcode == parcel.Postcode);

            if (address == null)
            {
                address = new DeliveryAddress()
                {
                    StreetName = parcel.Street,
                    Postcode   = parcel.Postcode,
                    City       = parcel.City
                };
                _dbContext.DeliveryAddresses.Add(address);
                _dbContext.SaveChanges();
            }

            List <Product> products = new List <Product>();

            foreach (ItemInCartViewModel item in GetCart())
            {
                if (item.Quantity <= item.Product.ItemsAvailable)
                {
                    for (int i = 0; i < item.Quantity; i++)
                    {
                        products.Add(item.Product);
                    }
                }
                else
                {
                    throw new Exception("Not enough products in stock");
                }
            }
            Order newOrder = new Order();

            newOrder.OrderId           = Guid.NewGuid();
            newOrder.DateOfPurchase    = DateTime.Now;
            newOrder.OrderState        = OrderState.New;
            newOrder.DeliveryAddressId = address.DeliveryAddressId;
            newOrder.UserId            = user.Id;
            _dbContext.Orders.Add(newOrder);

            foreach (Product product in products)
            {
                Product tempProd = _dbContext.Products.FirstOrDefault(p => p.ProductId == product.ProductId);
                if (tempProd.ItemsAvailable > 0)
                {
                    ProductCopy newCopy = new ProductCopy();
                    newCopy.ProductCopyId = Guid.NewGuid();
                    newCopy.ProductId     = product.ProductId;
                    newCopy.Price         = product.Price;
                    newCopy.OrderId       = newOrder.OrderId;
                    _dbContext.ProductsCopies.Add(newCopy);
                    tempProd.ItemsAvailable--;
                    _dbContext.Entry(tempProd).Property(p => p.ItemsAvailable).IsModified = true;
                    _dbContext.SaveChanges();
                }
            }
            _dbContext.SaveChanges();
            EmptyCart();
            return(newOrder.OrderId);
        }