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"); }
/// <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)); }