protected string SerializeReservation(FlowerOrder order) { return(JsonSerializer.Serialize(order, new JsonSerializerOptions { DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull })); }
public FlowerOrder Update(FlowerOrder entity) { var flowerOrder = context.FlowerOrders.Attach(entity); flowerOrder.State = Microsoft.EntityFrameworkCore.EntityState.Modified; context.SaveChanges(); return(entity); }
// GET: Order/Details/5 public ActionResult Details(int id) { FlowerOrderManager manager = new FlowerOrderManager(); FlowerOrder model = manager.GetFlowerOrderById(id); IList <Flower> flowers = new FlowerManager().GetFlowers(); model.OrderItems = manager.GetOrderItems(model.Id); foreach (OrderItem orderItem in model.OrderItems) { orderItem.Flower = flowers.First(f => f.Id == orderItem.FlowerId); } return(View(model)); }
public void CreateOrder(FlowerOrder order) { using (DbConnection conn = new SqlConnection(ConnectionStr)) { using (DbCommand cmd = conn.CreateCommand()) { cmd.CommandText = @"udpCreateOrder"; cmd.CommandType = CommandType.StoredProcedure; cmd.AddParameter("@customer_id", DbType.Int32, order.CustomerId); cmd.AddParameter("@created_at", DbType.DateTime, order.CreatedAt); cmd.AddParameter("@delivery_address", DbType.String, order.DeliveryAddress); cmd.AddParameter("@delivery_phone", DbType.String, order.DeliveryPhone); cmd.AddParameter("@process_status", DbType.Int32, order.ProcessStatus); conn.Open(); cmd.ExecuteNonQuery(); } } }
public IList <FlowerOrder> GetFlowerOrdersByCustomer(int customerId) { IList <FlowerOrder> list = new List <FlowerOrder>(); using (DbConnection conn = new SqlConnection(ConnectionStr)) { using (DbCommand cmd = conn.CreateCommand()) { cmd.CommandText = @"SELECT [id] ,[customer_id] ,[created_at] ,[delivery_address] ,[delivery_phone] ,[process_status] FROM [dbo].[flower_order] WHERE [customer_id] = @customer_id ORDER BY [created_at] ASC"; conn.Open(); cmd.AddParameter("@customer_id", System.Data.DbType.Int32, customerId); using (DbDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { FlowerOrder order = new FlowerOrder() { Id = reader.GetInt32(0), CustomerId = reader.GetInt32(1), CreatedAt = reader.GetDateTime(2), DeliveryAddress = reader.GetString(3), DeliveryPhone = reader.IsDBNull(4) ? null : reader.GetString(4), ProcessStatus = reader.GetInt32(5) }; list.Add(order); } } } } return(list); }
public FlowerOrder GetFlowerOrderById(int id) { FlowerOrder order = null; using (DbConnection conn = new SqlConnection(ConnectionStr)) { using (DbCommand cmd = conn.CreateCommand()) { cmd.CommandText = @"SELECT [id] ,[customer_id] ,[created_at] ,[delivery_address] ,[delivery_phone] ,[process_status] FROM [dbo].[flower_order] WHERE [id] = @id"; conn.Open(); cmd.AddParameter("@id", System.Data.DbType.Int32, id); using (DbDataReader reader = cmd.ExecuteReader()) { if (reader.Read()) { order = new FlowerOrder() { Id = reader.GetInt32(0), CustomerId = reader.GetInt32(1), CreatedAt = reader.GetDateTime(2), DeliveryAddress = reader.GetString(3), DeliveryPhone = reader.IsDBNull(4) ? null : reader.GetString(4), ProcessStatus = reader.GetInt32(5) }; } } } } return(order); }
public ActionResult Checkout(FlowerOrder order) { try { Customer user = this.getCustomer(); ShoppingCartManager cartManager = new ShoppingCartManager(); FlowerOrderManager orderManager = new FlowerOrderManager(); order.CustomerId = user.Id; order.CreatedAt = DateTime.Now; order.ProcessStatus = FlowerOrder.UNDER_PROCESS; orderManager.CreateOrder(order); // refetching just created order from db, // since id property is required for the following logic order = orderManager.GetLastFlowerOrderFOrCustomer(user.Id); IList <ShoppingCartItem> cartItems = cartManager.GetItemsByCustomer(user.Id); foreach (ShoppingCartItem cartItem in cartItems) { OrderItem orderItem = new OrderItem() { OrderId = order.Id, FlowerId = cartItem.FlowerId, Quantity = cartItem.Quantity }; orderManager.CreateOrderItem(orderItem); // delete cart item afterwards cartManager.DeleteItem(cartItem.Id, user.Id); } return(RedirectToAction("Index")); } catch { return(View()); } }
public async Task <IActionResult> Index(CheckoutModel model, string nonce) { if (ModelState.IsValid) { FlowerOrder order = new FlowerOrder { City = model.City, State = model.State, Email = model.Email, StreetAddress = model.StreetAddress, ZipCode = model.ZipCode, DateCreated = DateTime.Now, DateLastModified = DateTime.Now }; FlowerCart cart = null; if (User.Identity.IsAuthenticated) { var currentUser = _userManager.GetUserAsync(User).Result; cart = _context.FlowerCarts.Include(x => x.FlowerCartProducts).ThenInclude(x => x.FlowerProduct).Single(x => x.ApplicationUserID == currentUser.Id); } else if (Request.Cookies.ContainsKey("cart_id")) { int existingCartID = int.Parse(Request.Cookies["cart_id"]); cart = _context.FlowerCarts.Include(x => x.FlowerCartProducts).ThenInclude(x => x.FlowerProduct).FirstOrDefault(x => x.ID == existingCartID); } foreach (var cartItem in cart.FlowerCartProducts) { order.FlowerOrderProducts.Add(new FlowerOrderProduct { DateCreated = DateTime.Now, DateLastModified = DateTime.Now, Quantity = cartItem.Quantity ?? 1, ProductID = cartItem.ID, ProductDescription = cartItem.FlowerProduct.Description, ProductName = cartItem.FlowerProduct.Name, ProductPrice = cartItem.FlowerProduct.Price ?? 0 }); } _context.FlowerCartProducts.RemoveRange(cart.FlowerCartProducts); _context.FlowerCarts.Remove(cart); if (Request.Cookies.ContainsKey("cart_id")) { Response.Cookies.Delete("cart_id"); } _context.FlowerOrders.Add(order); _context.SaveChanges(); //await _braintreeGateway.Transaction.SaleAsync(new TransactionRequest //{ // Amount = (decimal)order.FlowerOrderProducts.Sum(x => x.Quantity * x.ProductPrice), //You can also do 1m here // CreditCard = new TransactionCreditCardRequest // { // CardholderName = "Test Cardholder", // CVV = "123", // ExpirationMonth = DateTime.Now.AddMonths(1).ToString("MM"), // ExpirationYear = DateTime.Now.AddMonths(1).ToString("yyyy"), // Number = "4111111111111111" // } //}); Customer c = null; var csr = new CustomerSearchRequest(); csr.Email.Is(model.Email); var customerSearchResult = await _braintreeGateway.Customer.SearchAsync(csr); if (customerSearchResult.Ids.Any()) { c = customerSearchResult.FirstItem; } else { var cusResult = await _braintreeGateway.Customer.CreateAsync(new CustomerRequest { Email = model.Email }); c = cusResult.Target; } var card = await _braintreeGateway.PaymentMethod.CreateAsync(new PaymentMethodRequest { PaymentMethodNonce = nonce, CustomerId = c.Id }); if (card.IsSuccess()) { var result = await _braintreeGateway.Transaction.SaleAsync(new TransactionRequest { Amount = (decimal)order.FlowerOrderProducts.Sum(x => x.Quantity *x.ProductPrice), PaymentMethodToken = card.Target.Token }); await _emailSender.SendEmailAsync(model.Email, "Your order " + order.ID, "Thanks for ordering! You bought : " + String.Join(",", order.FlowerOrderProducts.Select(x => x.ProductName))); //TODO: Save this information to the database so we can ship the order return(RedirectToAction("Index", "Receipt", new { id = order.ID })); } else { ModelState.AddModelError("CreditCard", "Problem with credit card"); } } //TODO: we have an error! Redisplay the form! return(View()); }
public FlowerOrder Add(FlowerOrder entity) { context.FlowerOrders.Add(entity); context.SaveChanges(); return(entity); }