示例#1
0
        public static ITrackSaleStatistic GetTrackSaleStatistic()
        {
            var invoiceLines = Logic.Factory.GetAllInvoiceLines();
            var tracks       = Logic.Factory.GetALlTracks();

            var numberOfSells = invoiceLines.Join(tracks,
                                                  invoiceLine => invoiceLine.TrackId,
                                                  tracks => tracks.Id,
                                                  (invoiceLine, tracks) => new { InvoiceLine = invoiceLines, Track = tracks }
                                                  )
                                .GroupBy(elm => elm.Track)
                                .Select(elm => new { Track = elm.Key, NumberSold = elm.Count() })
                                .OrderBy(elm => elm.NumberSold);

            var result = new Marketing.Models.TrackSaleStatistic
            {
                MostRevenue     = numberOfSells.Last().Track,
                MostNumberSold  = numberOfSells.Last().NumberSold,
                MostSold        = numberOfSells.Last().Track,
                LeastRevenue    = numberOfSells.First().Track,
                LeastNumberSold = numberOfSells.First().NumberSold,
                LeastSold       = numberOfSells.First().Track
            };

            return(result);
        }
示例#2
0
        public static Contracts.Report.Marketing.ITrackSaleStatistic GetTrackSaleStatistic()
        {
            var invoicesLines = Logic.Factory.GetAllInvoicesLines();
            var tracks        = Logic.Factory.GetAllTracks();
            var result        = new Marketing.Models.TrackSaleStatistic();

            var item = (from i in invoicesLines
                        group i.Quantity by i.TrackId).Select(i => (i.Key, i.Sum()));

            var max = tracks.Where(q => q.Id == item.Max().Key).SingleOrDefault();
            var min = tracks.Where(q => q.Id == item.Min().Key).SingleOrDefault();

            result.maxSaleName   = max.Name;
            result.maxSaleNumber = item.Max().ToString();

            result.minSaleName   = min.Name;
            result.minSaleNumber = item.Min().ToString();

            var query = (from i in invoicesLines
                         join t in tracks on i.TrackId equals t.Id
                         group i.Quantity by t.Name)
                        .Select(j => (j.Key, j.Sum()))
                        .OrderBy(a => a.Item2);

            result.minPaidSaleName = query.First().Key;
            result.minPaidSaleName = query.First().Item2.ToString();

            result.minPaidSaleName = query.Last().Key;
            result.minPaidSaleName = query.Last().Item2.ToString();

            return(result);
        }