Пример #1
0
        public static IEnumerable <ICommission> GetCommissionPeriodList(int customerID, bool getRealTime = false)
        {
            // Historical Commissions
            var commissions = new List <ICommission>();

            using (var context = Exigo.Sql())
            {
                commissions.AddRange(context.Query <HistoricalCommission, Period, HistoricalCommission>(@"
                                SELECT c.CommissionRunID
                                      ,c.CustomerID
                                      ,c.CurrencyCode
                                      ,c.Earnings
                                      ,c.PreviousBalance
                                      ,c.BalanceForward
                                      ,c.Fee
                                      ,c.Total
                                      ,cr.CommissionRunDescription
                                      ,cr.PeriodTypeID
                                      ,cr.PeriodID
                                      ,cr.RunDate
                                      ,cr.AcceptedDate
                                      ,cr.CommissionRunStatusID
                                      ,cr.HideFromWeb
                                      ,cr.PlanID
                                      ,p.PeriodID
                                      ,p.PeriodDescription
                                      ,p.PeriodTypeID
                                      ,p.StartDate
                                      ,p.EndDate
                                      ,p.AcceptedDate
                                FROM Commissions c
	                                LEFT JOIN CommissionRuns cr
		                                ON c.CommissionRunID = cr.CommissionRunID
	                                LEFT JOIN Periods p
		                                ON cr.PeriodID = p.PeriodID
		                                AND cr.PeriodTypeID = p.PeriodTypeID
                                WHERE c.CustomerID = @customerID
                                ORDER BY cr.CommissionRunID DESC
                    ", (hc, p) =>
                {
                    hc.Period = p;
                    return(hc);
                }
                                                                                                        , splitOn: "PeriodID"
                                                                                                        , param: new
                {
                    customerID
                }).ToList());
            }

            if (getRealTime)
            {
                var realTimeCommissions = Exigo.GetCustomerRealTimeCommissions(new GetCustomerRealTimeCommissionsRequest
                {
                    CustomerID       = customerID,
                    GetPeriodVolumes = false
                });

                if (realTimeCommissions.Count() > 0)
                {
                    commissions.AddRange(realTimeCommissions);
                }
            }


            if (commissions == null)
            {
                return(null);
            }

            return(commissions);
        }