コード例 #1
0
        private StatisticItem CalculateStatisticItemData(PartnerNode partnerNode)
        {
            var statisticItem = CalculateDescendantData(partnerNode);

            foreach (var childrenPartnerNodeID in partnerNode.Children)
            {
                var childPartnerNode = PartnerNodeList[childrenPartnerNodeID];
                if (childPartnerNode.FeePercent < partnerNode.FeePercent)
                {
                    var childData = CalculateDescendantData(childPartnerNode);
                    statisticItem.TotalComission += childData.TotalPurchase * (partnerNode.FeePercent - childPartnerNode.FeePercent) / 100;
                }
            }

            return(statisticItem);
        }
コード例 #2
0
        private StatisticItem CalculateDescendantData(PartnerNode partnerNode)
        {
            var statisticItem = new StatisticItem {
                PartnerName = partnerNode.PartnerName
            };
            var     financialItemsOfPartner = _financialItemsRepository.GetFinancialItems(partnerNode.PartnerID);
            var     partnerPurchase         = financialItemsOfPartner.Sum(x => x.Amount);
            decimal descendantPurchase      = 0;

            foreach (var descendantPartnerNodeID in partnerNode.Descendants)
            {
                var descendantPartnerFeePercent = PartnerNodeList[descendantPartnerNodeID].FeePercent;
                var financialItemsOfDescendant  = _financialItemsRepository.GetFinancialItems(descendantPartnerNodeID);
                descendantPurchase          = financialItemsOfDescendant.Sum(x => x.Amount);
                statisticItem.TeamPurchase += descendantPurchase;
            }

            statisticItem.TotalPurchase  = statisticItem.TeamPurchase + partnerPurchase;
            statisticItem.TotalComission = statisticItem.TotalPurchase * partnerNode.FeePercent / 100;

            return(statisticItem);
        }
コード例 #3
0
 private void CollectPartnerNodeDescendants(IList <decimal> ancestorPartnerIDs, PartnerNode partnerNode)
 {
     if (partnerNode.Children.Count > 0)
     {
         var newAncestorPartnerIDs = ancestorPartnerIDs.ToList();
         newAncestorPartnerIDs.Add(partnerNode.PartnerID);
         foreach (var ancestorPartnerID in newAncestorPartnerIDs)
         {
             foreach (var childPartnerID in partnerNode.Children)
             {
                 if (!PartnerNodeList[ancestorPartnerID].Descendants.Contains(childPartnerID))
                 {
                     PartnerNodeList[ancestorPartnerID].Descendants.Add(childPartnerID);
                 }
                 CollectPartnerNodeDescendants(newAncestorPartnerIDs, PartnerNodeList[childPartnerID]);
             }
         }
     }
 }