示例#1
0
        public static void ValuateBundle(this BundleItemModel bundleModel)
        {
            if (bundleModel == null)
            {
                throw new ArgumentNullException(nameof(bundleModel));
            }

            var transactions = bundleModel.BundleDetail.TransactionItems.Where(t => t.Index == 0).ToArray();

            if (transactions.Length == 0)
            {
                bundleModel.IsConfirmed = false;
                bundleModel.Balance     = 0;
                return;
            }
            var first       = transactions.First();
            var confirmed   = transactions.FirstOrDefault(t => t.IsConfirmed);
            var isConfirmed = confirmed != null;
            var balance     = confirmed != null ? confirmed.Balance : first.Balance;
            var dateTime    = confirmed != null ? confirmed.DateTime : first.DateTime;
            var address     = confirmed != null ? confirmed.Address : first.Address;

            bundleModel.IsConfirmed = isConfirmed;
            bundleModel.Balance     = balance;
            bundleModel.DateTime    = dateTime;
            bundleModel.Address     = address;
        }
示例#2
0
        public static BundleItemModel UpdateBundleItems(this ObservableCollection <BundleItemModel> bundleItems, string bundleHash, TransactionItem[] transactionItems)
        {
            var bundle = bundleItems.FirstOrDefault(b => b.Hash == bundleHash);

            if (bundle == null)
            {
                var transactions = transactionItems.Select(t => t.ToModel()).ToArray();
                bundle = new BundleItemModel(transactions)
                {
                    Hash = bundleHash
                };
                bundle.ValuateBundle();
                bundleItems.Add(bundle);
                return(bundle);
            }

            foreach (var transaction in transactionItems)
            {
                var tModel = bundle.BundleDetail.TransactionItems.FirstOrDefault(t => t.Hash == transaction.Hash);
                if (tModel != null)
                {
                    tModel.Update(transaction);
                }
                else
                {
                    tModel = transaction.ToModel();
                    bundle.BundleDetail.TransactionItems.Add(tModel);
                }
            }

            bundle.ValuateBundle();
            return(bundle);
        }
示例#3
0
 public ShoppingCartItemModel()
 {
     Picture           = new PictureModel();
     AllowedQuantities = new List <SelectListItem>();
     Warnings          = new List <string>();
     ChildItems        = new List <ShoppingCartItemModel>();
     BundleItem        = new BundleItemModel();
 }
            public ShoppingCartItemModel()
            {
                Picture = new PictureModel();
                AllowedQuantities = new List<SelectListItem>();
                Warnings = new List<string>();
				ChildItems = new List<ShoppingCartItemModel>();
				BundleItem = new BundleItemModel();
            }
示例#5
0
        private async void BundleModel_Rebroadcast(BundleItemModel bundleModel)
        {
            var transactionItems = bundleModel.BundleDetail.TransactionItems.Select(t => t.Tag)
                                   .OfType <TransactionItem>()
                                   .OrderBy(t => long.Parse(t.Timestamp)).ToArray();

            if (transactionItems != null && transactionItems.Length > 0)
            {
                var indexString = transactionItems.First().LastIndex;
                var lastIndex   = int.Parse(indexString);

                List <TransactionItem> transactions = new List <TransactionItem>();

                for (int i = 0; i <= lastIndex; i++)
                {
                    var iString = i.ToString();
                    var tr      = transactionItems.Where(t => t.CurrentIndex == iString).First();
                    transactions.Add(tr);
                }

                await SendTransactions(transactions.ToArray(), true);
            }
        }