示例#1
0
        public string GetReportHTML(DateTime from, DateTime to)
        {
            var reportLocationIds = LocationIds;
            var locations         = Db.FindLocation(new LocationDiscriminator()
            {
                Filter = x => reportLocationIds.Contains(x.LocationId)
            }, null, null);
            var reportAddresses = locations.Select(l => l.Location.AddressId).ToArray();
            var addresses       = Db.FindAddress(new AddressDiscriminator()
            {
                Filter = x => reportAddresses.Contains(x.AddressId)
            });
            var trns = Db.FindCreditTransaction(new CreditTransactionDiscriminator()
            {
                Filter = x => reportLocationIds.Contains(x.LocationId) && x.TransactionTime >= from && x.TransactionTime < to
            });
            var productIds    = trns.Select(x => x.CreditTransaction.ProductId).Distinct().ToArray();
            var productFilter = new ProductDiscriminator()
            {
                Filter = x => productIds.Contains(x.ProductId)
            };
            var products = Db.FindProduct(productFilter, null, null, default(int));
            var prices   = Db.FindProductPriceHistory(productFilter, true);
            var userIds  = trns.Select(t => t.CreditTransaction.UserId).Distinct().ToArray();
            var users    = SecrityDB.FindUserProfile(new UserProfileDiscriminator()
            {
                Filter = x => userIds.Contains(x.UserId)
            });

            var trnTemplate = new LocationTransactions();

            trnTemplate.Locations          = locations.Select(l => l.Location);
            trnTemplate.Addresses          = addresses.Select(a => a.Address);
            trnTemplate.From               = from;
            trnTemplate.To                 = to;
            trnTemplate.CreditTransactions = trns.Select(x => x.CreditTransaction);
            trnTemplate.Products           = products.Select(x => x.Product);
            trnTemplate.Prices             = prices.Select(x => x.ProductPriceHistory);
            trnTemplate.Users              = users.Select(u => u.UserProfile);
            return(trnTemplate.TransformText());
        }