示例#1
0
        /// <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);
            }
        }
示例#2
0
        /// <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();
            }
        }
示例#3
0
 /// <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();
 }
示例#4
0
 /// <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);
 }
示例#5
0
        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"));
        }