public void CheckForClearedOutSubAccounts(Order order, OrderViewModel.Split[] splits, OrderViewModel model) { try { if (splits == null || !splits.Any()) { var orderViewModelSplit = new OrderViewModel.Split{Account = model.Account,SubAccount = model.SubAccount,LineItemId = null}; splits = new OrderViewModel.Split[] { orderViewModelSplit }; } var lastLineId = 0; var count = 0; foreach (var split in splits) { if (string.IsNullOrWhiteSpace(split.SubAccount)) { Split orderSplit = null; if (split.LineItemId.HasValue) { if (split.LineItemId.Value != lastLineId) { lastLineId = split.LineItemId.Value; count = 0; } else { count++; } var lineItem = order.LineItems.ElementAtOrDefault(split.LineItemId.Value - 1); if (lineItem != null) { orderSplit = lineItem.Splits.ElementAtOrDefault(count); } } else { orderSplit = order.Splits.FirstOrDefault(a => a.LineItem == null && a.Account == split.Account); } if (orderSplit != null) { if (orderSplit.Account == split.Account && !string.IsNullOrWhiteSpace(orderSplit.SubAccount)) { //ok, the sub account has been cleared out. var bugTracking = new BugTracking(); bugTracking.OrderId = order.Id; bugTracking.UserId = _userIdentity.Current; bugTracking.SplitId = orderSplit.Id; bugTracking.TrackingMessage = string.Format("SubAccount Cleared Out for Account {0}. Previous value {1}", orderSplit.Account, orderSplit.SubAccount); bugTracking.LineItemId = orderSplit.LineItem != null ? (int?)orderSplit.LineItem.Id : null; _bugTrackingRepository.EnsurePersistent(bugTracking); } } } } } catch (Exception) { } }