Example #1
0
        private void WriteOutputSheet(Dictionary <CReleaseNoteAsset, Dictionary <int, string> > parsedDictionary, Worksheet xLWorksheet)
        {
            Dictionary <string, List <CReleaseNoteAsset> > outputCollection = new ClientOrdering()
                                                                              .GetAssetOrdering(parsedDictionary, ExtractedXml);
            DataTable outputTab = SetUpOutputDataTable(outputCollection);

            ExcelConvertDataTable(outputTab, xLWorksheet);
            FormatExcelWorksheet(xLWorksheet, "Output");
        }
Example #2
0
        /// <summary>
        /// Find first day of a client and ordering by <paramref name="ordering"/>.
        /// </summary>
        /// <param name="clients">The list of clients.</param>
        /// <param name="ordering">The way ofordering results.</param>
        /// <returns>The dictionary, where the keys are first day of client and values are clients ordered by <paramref name="ordering"/>.</returns>
        /// <exception cref="ArgumentNullException"></exception>
        public static ILookup <DateTime, ClientModel> FindFirstDayOfClients(this IList <ClientModel> clients, ClientOrdering ordering = ClientOrdering.ByFirstOrderDate)
        {
            if (clients == null)
            {
                throw new ArgumentNullException(nameof(clients));
            }
            var result =
                clients.Where(c => c.Orders.Any())
                .Select(x => new { FirstDay = x.Orders.Min(o => o.OrderDate), Client = x });

            switch (ordering)
            {
            case ClientOrdering.ByFirstOrderDate:
                result = result.OrderBy(x => x.FirstDay);
                break;

            case ClientOrdering.ByMonthOfFirstOrderDate:
                result = result.OrderBy(x => x.FirstDay.Month);
                break;

            case ClientOrdering.ByYearOfFirstOrderDate:
                result = result.OrderBy(x => x.FirstDay.Year);
                break;

            case ClientOrdering.ByNameOfClient:
                result = result.OrderBy(x => x.Client.CompanyName);
                break;

            case ClientOrdering.ByTurnoverOfClient:
                result = result.OrderBy(x => x.Client.Orders.Sum(o => o.TotalPrice));
                break;
            }
            return(result.ToLookup(e => e.FirstDay, e => e.Client));
        }