public async Task <int> PurchaseProduct(int id, AddToShoppingCart addToShoppingCart) { if (Session["authenticatedUser"] != null && Session["authenticatedToken"] != null) { client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", Session["authenticatedToken"].ToString()); HttpResponseMessage response = await client.PostAsJsonAsync("api/PurchaseProduct/AddtoShoppingCart/" + id, addToShoppingCart); if (response.IsSuccessStatusCode) { var addedItem = await response.Content.ReadAsAsync <AddToShoppingCart>(); if (addedItem != null) { return(1); } return(-1); } return(-1); } return(0); }
public async Task <AddToShoppingCart> AddtoShoppingCart(int id, AddToShoppingCart addToShoppingCart) { try { if (ModelState.IsValid) { var customer = await(from c in db.Customers where c.CustomerID == id select c).FirstOrDefaultAsync(); if (customer != null && customer.Addresses.Count == 0) { Address address = new Address(); address.AddressType = 1; address.Street = ""; address.Suburb = ""; address.City = ""; address.Country = ""; address.PostalCode = "Dummy"; customer.Addresses.Add(address); await db.SaveChangesAsync(); var query = await(from o in db.Orders where o.CustomerID == id && o.Complete == false && o.IsBackOrder == false select o).FirstOrDefaultAsync(); if (query == null) { Order order = new Order(); order.AddressID = address.AddressID; order.CustomerID = id; order.OrderDate = DateTime.Now; order.Complete = false; order.IsBackOrder = false; db.Orders.Add(order); customer.Orders.Add(order); await db.SaveChangesAsync(); OrderDetail orderDetail = new OrderDetail(); orderDetail.OrderID = order.OrderID; orderDetail.ProductID = addToShoppingCart.ProductId; orderDetail.Quantity = addToShoppingCart.Quantity; orderDetail.Packaged = false; db.OrderDetails.Add(orderDetail); order.OrderDetails.Add(orderDetail); await db.SaveChangesAsync(); return(addToShoppingCart); } else { var orderDetail = await(from od in db.OrderDetails where od.OrderID == query.OrderID && od.ProductID == addToShoppingCart.ProductId select od).FirstOrDefaultAsync(); if (orderDetail == null) { OrderDetail newDetail = new OrderDetail(); newDetail.OrderID = query.OrderID; newDetail.ProductID = addToShoppingCart.ProductId; newDetail.Quantity = addToShoppingCart.Quantity; newDetail.Packaged = false; db.OrderDetails.Add(newDetail); query.OrderDetails.Add(newDetail); await db.SaveChangesAsync(); return(addToShoppingCart); } else { orderDetail.Quantity = orderDetail.Quantity + addToShoppingCart.Quantity; await db.SaveChangesAsync(); return(addToShoppingCart); } } } else if (customer != null && customer.Addresses.Count != 0) { var query = await(from o in db.Orders where o.CustomerID == id && o.Complete == false && o.IsBackOrder == false select o).FirstOrDefaultAsync(); if (query == null) { var address = (from a in customer.Addresses select a).FirstOrDefault(); Order order = new Order(); order.AddressID = address.AddressID; order.CustomerID = id; order.OrderDate = DateTime.Now; order.Complete = false; order.IsBackOrder = false; db.Orders.Add(order); customer.Orders.Add(order); await db.SaveChangesAsync(); OrderDetail orderDetail = new OrderDetail(); orderDetail.OrderID = order.OrderID; orderDetail.ProductID = addToShoppingCart.ProductId; orderDetail.Quantity = addToShoppingCart.Quantity; orderDetail.Packaged = false; db.OrderDetails.Add(orderDetail); order.OrderDetails.Add(orderDetail); await db.SaveChangesAsync(); return(addToShoppingCart); } else { var orderDetail = await(from od in db.OrderDetails where od.OrderID == query.OrderID && od.ProductID == addToShoppingCart.ProductId select od).FirstOrDefaultAsync(); if (orderDetail == null) { OrderDetail newDetail = new OrderDetail(); newDetail.OrderID = query.OrderID; newDetail.ProductID = addToShoppingCart.ProductId; newDetail.Quantity = addToShoppingCart.Quantity; newDetail.Packaged = false; db.OrderDetails.Add(newDetail); query.OrderDetails.Add(newDetail); await db.SaveChangesAsync(); return(addToShoppingCart); } else { orderDetail.Quantity = orderDetail.Quantity + addToShoppingCart.Quantity; await db.SaveChangesAsync(); return(addToShoppingCart); } } } return(null); } return(null); } catch (Exception) { return(null); } }