using Elwig.Documents;
using Elwig.Helpers;
using Elwig.Models.Dtos;

namespace Tests.DocumentTests {
    [TestFixture]
    public class DeliveryJournalTest {

        [Test]
        public async Task Test_01_AllDeliveries2020() {
            using var ctx = new AppDbContext();
            var data = await DeliveryJournalData.FromQuery(ctx.Deliveries.Where(d => d.Year == 2020).SelectMany(d => d.Parts), ["Saison 2020"]);
            using var doc = new DeliveryJournal("Saison 2020", data);
            var text = await Utils.GeneratePdfText(doc, true);
            var table = Utils.ExtractTable(text);
            Assert.Multiple(() => {
                Assert.That(text, Contains.Substring("Lieferjournal"));
                Assert.That(text, Contains.Substring("Saison 2020"));
                Assert.That(table, Is.EqualTo(new string[][] {
                    ["20201001X001", "1", "01.10.2020 09:03", "101 MUSTERMANN Max",       "Grüner Veltliner",   "73", "15,0",  "3 219"],
                    ["20201001X002", "1", "01.10.2020 09:35", "102 WEINBAUER Wernhardt",  "Grüner Veltliner",   "86", "17,5",  "2 987"],
                    ["20201001X002", "2", "01.10.2020 09:35", "102 WEINBAUER Wernhardt",  "Grüner Veltliner",   "87", "17,7",  "1 873"],
                    ["20201001X003", "1", "01.10.2020 10:24", "101 MUSTERMANN Max",       "Grüner Veltliner",   "75", "15,4",  "2 561"],
                    ["20201001X003", "2", "01.10.2020 10:24", "101 MUSTERMANN Max",       "Grüner Veltliner",   "87", "17,6",  "3 129"],
                    ["20201001X003", "3", "01.10.2020 10:24", "101 MUSTERMANN Max",       "Grüner Veltliner",   "79", "16,1",  "1 280"],
                    ["20201001X004", "1", "01.10.2020 11:13", "102 WEINBAUER Wernhardt",  "Grüner Veltliner",   "82", "16,7",  "4 002"],
                    ["20201001X004", "2", "01.10.2020 11:13", "102 WEINBAUER Wernhardt",  "Grüner Veltliner",   "75", "15,3",    "481"],
                    ["20201001X005", "1", "01.10.2020 12:45", "101 MUSTERMANN Max",       "Welschriesling",     "84", "17,0",  "3 192"],
                    ["20201001X005", "2", "01.10.2020 12:45", "101 MUSTERMANN Max",       "Welschriesling",     "84", "17,1",  "2 190"],
                    ["20201001X006", "1", "01.10.2020 13:18", "102 WEINBAUER Wernhardt",  "Grüner Veltliner",   "74", "15,2",  "1 732"],
                    ["20201002X001", "1", "02.10.2020 09:13", "103 MUSTERBAUER Matthäus", "Grüner Veltliner",   "80", "16,3",  "3 198"],
                    ["20201002X001", "2", "02.10.2020 09:13", "103 MUSTERBAUER Matthäus", "Grüner Veltliner",   "75", "15,4",  "2 134"],
                    ["20201002X002", "1", "02.10.2020 09:28", "103 MUSTERBAUER Matthäus", "Grüner Veltliner",   "78", "16,0",  "2 901"],
                    ["20201002X002", "2", "02.10.2020 09:28", "103 MUSTERBAUER Matthäus", "Grüner Veltliner",   "85", "17,3",  "3 321"],
                    ["20201002X003", "1", "02.10.2020 10:11", "103 MUSTERBAUER Matthäus", "Welschriesling",     "85", "17,2",  "3 998"],
                    ["20201003X001", "1", "03.10.2020 14:13", "104 WINZER Waltraud",      "Zweigelt",           "73", "15,0",  "1 212"],
                    ["20201003X001", "2", "03.10.2020 14:13", "104 WINZER Waltraud",      "Zweigelt",           "74", "15,2",  "2 471"],
                    ["20201003X001", "3", "03.10.2020 14:13", "104 WINZER Waltraud",      "Zweigelt",           "77", "15,7",    "842"],
                    ["20201003X002", "1", "03.10.2020 14:39", "104 WINZER Waltraud",      "Zweigelt",           "84", "17,0",  "3 578"],
                    ["20201003X002", "2", "03.10.2020 14:39", "104 WINZER Waltraud",      "Zweigelt",           "85", "17,2",  "3 862"],
                    ["20201003X003", "1", "03.10.2020 15:15", "104 WINZER Waltraud",      "Blauer Portugieser", "89", "18,0",  "2 410"],
                    ["20201003X003", "2", "03.10.2020 15:15", "104 WINZER Waltraud",      "Blauer Portugieser", "89", "18,1",  "2 313"],
                    ["Gesamt:",           "(Teil-)Lieferungen: 12 (23)",                                        "82", "16,6", "58 886"],
                }));
            });
        }
    }
}