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)); }
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); }