/// <summary> /// Populates collections within table. The tables used will be removed from /// the table collection. /// Override this method to populate your custom collection objects. /// </summary> /// <param name="tables">The tables.</param> /// <param name="filter">The filter.</param> protected override void PopulateCollections(DataTableCollection tables, string filter) { base.PopulateCollections(tables, filter); // Populate object collections DataView view = DataHelper.CreateDataView(tables["OrderForm"], filter); // Read until we are done, since this is a collection foreach (DataRowView row in view) { // Populate Forms Collection OrderForm orderForm = (OrderForm)OrderContext.Current.OrderFormClassInfo.CreateInstance(); orderForm.Load(row); orderForm.PopulateCollectionsInternal(tables, filter); OrderForms.Add(orderForm); } view = DataHelper.CreateDataView(tables["OrderGroupAddress"], filter); foreach (DataRowView row in view) { // Populate Address Collection OrderAddress orderAddress = (OrderAddress)OrderContext.Current.OrderAddressClassInfo.CreateInstance(); orderAddress.Load(row); OrderAddresses.Add(orderAddress); } }
/// <summary> /// Accepts the changes. /// </summary> public override void AcceptChanges() { using (TransactionScope scope = new TransactionScope()) { // Save base object first base.AcceptChanges(); if (this.ObjectState != MetaObjectState.Deleted) { // Populate object primary key here // Save forms OrderForms.AcceptChanges(); // Save addresses OrderAddresses.AcceptChanges(); } scope.Complete(); } }
/// <summary> /// Marks current instance as new which will cause new record to be created in the database for the specified object. /// This is useful for creating duplicates of existing objects. /// </summary> internal override void MarkNew() { base.MarkNew(); OrderAddresses.MarkNew(); OrderForms.MarkNew(); }
/// <summary> /// Sets the parent. /// </summary> /// <param name="parent">The parent.</param> public override void SetParent(object parent) { OrderAddresses.SetParent((OrderGroup)parent); OrderForms.SetParent((OrderGroup)parent); }
public IActionResult Charge(int PaymentId, string stripeEmail, string stripeToken, int UserId, OrderAddresses orderAddress) { int userId = GetLoggedInUserId(); TempData["Id"] = userId; var vehiclesInCart = HttpContext.Session.GetObjectFromJson <List <VehiclesCarts> >("Cart").ToList(); var cart = vehiclesInCart.Where(o => o.MachineName.Contains(machineName) || o.UserId == userId).ToList(); var amount = cart.Select(o => o.SpGetVehicleDetail.SalesPrice).Sum(); var charges = (cart.Select(o => o.SpGetVehicleDetail.SalesPrice).Sum() * 4) / 100; var totalAmount = (amount + charges) * 100; var user = _context.Users.FirstOrDefault(o => o.Id == userId); var customerService = new StripeCustomerService(); var chargeService = new StripeChargeService(); var customer = customerService.Create(new StripeCustomerCreateOptions { Email = stripeEmail, SourceToken = stripeToken }); var charge = chargeService.Create(new StripeChargeCreateOptions { Amount = Convert.ToInt32(totalAmount), Currency = "usd", CustomerId = customer.Id, Description = user != null ? (user.FullName + "_" + user.Id) : machineName + " has been made transaction" }); var payment = new Payments { StripeCustomerId = customer.Id, TotalAmount = totalAmount, CreatedDate = DateTime.Now, UserId = user != null ? user.Id : (int?)null, IpAddress = user != null ? null : machineName }; _context.Payments.Add(payment); _context.SaveChanges(); var order = new OrderAddresses { PaymentId = payment.Id, BillingName = orderAddress.BillingName, BillingCompany = orderAddress.BillingCompany, BillingAddress1 = orderAddress.BillingAddress1, BillingAddress2 = orderAddress.BillingAddress2, BillingCity = orderAddress.BillingCity, BillingCountry = orderAddress.BillingCountry, BillingZipCode = orderAddress.BillingZipCode, ShippingName = orderAddress.ShippingName, ShippingCompany = orderAddress.ShippingCompany, ShippingAddress1 = orderAddress.ShippingAddress1, ShippingAddress2 = orderAddress.ShippingAddress2, ShippingCity = orderAddress.ShippingCity, ShippingCountry = orderAddress.ShippingCountry, ShippingZipCode = orderAddress.ShippingZipCode }; _context.OrderAddresses.Add(order); _context.SaveChanges(); var paymentVehicleList = new List <PaymentVehicles>(); foreach (var item in cart) { var paymentVehicle = new PaymentVehicles { PaymentId = payment.Id, VehicleId = item.VehicleId, }; paymentVehicleList.Add(paymentVehicle); } _context.PaymentVehicles.AddRange(paymentVehicleList); HttpContext.Session.SetObjectAsJson("Cart", new List <VehiclesCarts>()); _context.SaveChanges(); TempData["Success"] = "Transaction has been made successfully"; return(RedirectToAction("Cart", "Buyer")); }