using System.Collections.Generic; using System.Linq; using DeclarationAutomatization.Models; namespace DeclarationAutomatization.Services; public class TransformService { // Строит позиции Листа2 из ИТОГО-строк Листа1. // Рег. номера берёт из СПРАВКИ по ТН ВЭД. public List BuildDeclarationItems( IEnumerable groups, IEnumerable spravkaItems) { // Индекс: (ТН ВЭД, Страна) → уникальные (рег. номер, дата) из СПРАВКИ var regByKey = spravkaItems .Where(s => !string.IsNullOrWhiteSpace(s.RegNumber)) .GroupBy(s => (s.TnVed, s.CountryId)) .ToDictionary( g => g.Key, g => g.Select(s => new RegEntry(s.RegNumber, s.RegDate)) .Distinct() .ToList() ); return groups.Select(group => new DeclarationItem { SequentialNumber = group.SequentialNumber, Description = group.Description, TnVed = group.TnVed, CountryId = group.CountryId, Quantity = group.Quantity, AmountWithVat = group.AmountWithVat, GrossWeight = group.GrossWeight, NetWeight = group.NetWeight, RegEntries = regByKey.TryGetValue((group.TnVed, group.CountryId), out var regs) ? regs : new List(), }).ToList(); } }