Exemplo n.º 1
0
        /// <summary>
        /// Gets all finance result for admin user
        /// </summary>
        /// <returns></returns>
        private PayResultsViewModel GetAllPays(int currencyID)
        {
            using (var payTransRepo = Factory.GetPaymentTransactionRepository())
            {
                //var s = payTransRepo.GetAll(a => a.Currency).Sum(z => z.Totals);
                var s = payTransRepo.GetAll(a => a.Currency)
                        .GroupBy(z => z.Currency)
                        .Select(g => new PayResultViewModel
                {
                    Currency    = g.Key,
                    Totals      = g.Sum(t => t.Totals),
                    Royalties   = g.Sum(t => t.Totals) * (decimal).9,
                    CurrencyID  = g.Key.Id,
                    CrossCourse = Factory.GetCurrencyRateRepository()
                                  .FirstOrDefault(Rate => Rate.TargetCurrencyId == currencyID && Rate.CurrencyId == g.Key.Id) == null ? 1 :
                                  Factory.GetCurrencyRateRepository()
                                  .FirstOrDefault(Rate => Rate.TargetCurrencyId == currencyID && Rate.CurrencyId == g.Key.Id).CrossCourse,
                }).ToArray();

                if (s != null)
                {
                    var result = new PayResultsViewModel()
                    {
                        Payments  = s,
                        Total     = s.Sum(t => t.Totals * t.CrossCourse),
                        Royalties = s.Sum(t => t.Totals * t.CrossCourse * (decimal)0.9)
                    };
                    return(result);
                }
            }
            return(new PayResultsViewModel());
        }
Exemplo n.º 2
0
        /// <summary>
        /// Gets financial result for admin or seller user in certain currency
        /// </summary>
        /// <param name="currentUser">user</param>
        /// <param name="currentUserCurrencyId">target currency id</param>
        /// <returns></returns>
        public PayResultsViewModel GetPaysForUser(CurrentUser currentUser, int currentUserCurrencyId)
        {
            PayResultsViewModel pays = new PayResultsViewModel()
            {
                Payments = new List <PayResultViewModel>()
            };

            if (currentUser.IsInRole(UserRoles.Seller))
            {
                pays = GetSellerPays(currentUser.Id, currentUserCurrencyId);
            }
            ;
            if (currentUser.IsInRole(UserRoles.Admin))
            {
                pays = GetAllPays(currentUserCurrencyId);
            }
            return(pays);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Get pay results view model for certain seller items
        /// </summary>
        /// <param name="userID">seller user id</param>
        /// <param name="currencyID">current currency id</param>
        /// <returns></returns>
        private PayResultsViewModel GetSellerPays(int userID, int currencyID)
        {
            var result = new PayResultsViewModel()
            {
                Payments  = new List <PayResultViewModel>(),
                Total     = 0,
                Royalties = 0
            };

            using (var purchasedItems = Factory.GetPurchasedAlbumRepository())
            {
                var s = purchasedItems.GetAll(a => a.Album.OwnerId == userID, a => a.Currency)
                        .GroupBy(z => z.Currency)
                        .Select(g => new PayResultViewModel
                {
                    Currency    = g.Key,
                    Totals      = g.Sum(t => t.Price),
                    Royalties   = g.Sum(t => t.Price) * (decimal).9,
                    CurrencyID  = g.Key.Id,
                    CrossCourse = Factory.GetCurrencyRateRepository()
                                  .FirstOrDefault(Rate => Rate.TargetCurrencyId == currencyID && Rate.CurrencyId == g.Key.Id) == null ? 1 :
                                  Factory.GetCurrencyRateRepository()
                                  .FirstOrDefault(Rate => Rate.TargetCurrencyId == currencyID && Rate.CurrencyId == g.Key.Id).CrossCourse
                }).ToArray();

                if (s != null)
                {
                    result = new PayResultsViewModel()
                    {
                        Payments  = s,
                        Total     = s.Sum(t => t.Totals * t.CrossCourse),
                        Royalties = s.Sum(t => t.Totals * t.CrossCourse * (decimal)0.9)
                    };
                }
            };

            using (var purchasedItems = Factory.GetPurchasedTrackRepository())
            {
                var s = purchasedItems.GetAll(a => a.Track.OwnerId == userID, a => a.Currency)
                        .GroupBy(z => z.Currency)
                        .Select(g => new PayResultViewModel
                {
                    Currency    = g.Key,
                    Totals      = g.Sum(t => t.Price),
                    Royalties   = g.Sum(t => t.Price) * (decimal).9,
                    CurrencyID  = g.Key.Id,
                    CrossCourse = Factory.GetCurrencyRateRepository()
                                  .FirstOrDefault(Rate => Rate.TargetCurrencyId == currencyID && Rate.CurrencyId == g.Key.Id) == null ? 1 :
                                  Factory.GetCurrencyRateRepository()
                                  .FirstOrDefault(Rate => Rate.TargetCurrencyId == currencyID && Rate.CurrencyId == g.Key.Id).CrossCourse
                }).ToArray();

                if (s != null)
                {
                    if (result.Total > 0)
                    {
                        var s1 = result.Payments.ToList();
                        s1.AddRange(s);
                        result.Payments  = s1;
                        result.Total     = result.Payments.Sum(a => a.Totals * a.CrossCourse);
                        result.Royalties = result.Payments.Sum(a => a.Royalties * a.CrossCourse);
                    }
                    else
                    {
                        result = new PayResultsViewModel()
                        {
                            Payments  = s,
                            Total     = s.Sum(t => t.Totals * t.CrossCourse),
                            Royalties = s.Sum(t => t.Totals * t.CrossCourse * (decimal)0.9)
                        };
                    }
                }
            };

            return(result);
        }