using Journal.Core.Dtos; using Journal.Core.Models; namespace Journal.Core.Services.Entries; internal static class JournalEntryDtoMapper { public static JournalEntryDto ToDto(this JournalEntry entry) { ArgumentNullException.ThrowIfNull(entry); return new JournalEntryDto( Date: entry.Date, Fragments: [ .. entry.Fragments.Select(fragment => new FragmentDto( Id: fragment.Id, Type: fragment.Type, Description: fragment.Description, Time: fragment.Time, Tags: [.. fragment.Tags])) ], RawContent: entry.RawContent, Sections: entry.Sections.ToDictionary( section => section.Key, section => new ParsedSectionDto( Title: section.Value.Title, Content: [.. section.Value.Content], Checkboxes: section.Value.Checkboxes.ToDictionary(checkbox => checkbox.Key, checkbox => checkbox.Value)), StringComparer.Ordinal)); } }