diff --git a/HaWeb/Controllers/BriefeContoller.cs b/HaWeb/Controllers/BriefeContoller.cs index 17a276a..cdeadb7 100644 --- a/HaWeb/Controllers/BriefeContoller.cs +++ b/HaWeb/Controllers/BriefeContoller.cs @@ -58,9 +58,9 @@ public class Briefecontroller : Controller { // Model creation var hasMarginals = false; if (marginals != null && marginals.Any()) hasMarginals = true; - var model = new BriefeViewModel(id, index, generateMetaViewModel(lib, meta, hasMarginals)); - if (nextmeta != null) model.MetaData.Next = (generateMetaViewModel(lib, nextmeta, false), url + nextmeta.Autopsic); - if (prevmeta != null) model.MetaData.Prev = (generateMetaViewModel(lib, prevmeta, false), url + prevmeta.Autopsic); + var model = new BriefeViewModel(id, index, GenerateMetaViewModel(lib, meta)); + if (nextmeta != null) model.MetaData.Next = (GenerateMetaViewModel(lib, nextmeta), url + nextmeta.Autopsic); + if (prevmeta != null) model.MetaData.Prev = (GenerateMetaViewModel(lib, prevmeta), url + prevmeta.Autopsic); if (hands != null && hands.Any()) model.ParsedHands = HaWeb.HTMLHelpers.LetterHelpers.CreateHands(lib, hands); if (editreasons != null && editreasons.Any()) model.ParsedEdits = HaWeb.HTMLHelpers.LetterHelpers.CreateEdits(lib, _readerService, editreasons); model.DefaultCategory = lib.Apps.ContainsKey("-1") ? lib.Apps["-1"].Category : null; @@ -119,14 +119,38 @@ public class Briefecontroller : Controller { return Redirect("/Error404"); } - private BriefeMetaViewModel generateMetaViewModel(ILibrary lib, Meta meta, bool hasMarginals) { + internal static BriefeMetaViewModel GenerateMetaViewModel(ILibrary lib, Meta meta) { + var hasMarginals = lib.MarginalsByLetter.Contains(meta.Index) ? true : false; var senders = meta.Senders.Select(x => lib.Persons[x].Name) ?? new List(); var recivers = meta.Receivers.Select(x => lib.Persons[x].Name) ?? new List(); var zhstring = meta.ZH != null ? HaWeb.HTMLHelpers.LetterHelpers.CreateZHString(meta) : null; return new BriefeMetaViewModel(meta, hasMarginals) { ParsedZHString = zhstring, - ParsedSenders = HTMLHelpers.StringHelpers.GetEnumerationString(senders), - ParsedReceivers = HTMLHelpers.StringHelpers.GetEnumerationString(recivers) + SenderReceiver = generateSendersRecievers(senders, recivers) }; } + + + private static List<(string Sender, string Receiver)> generateSendersRecievers(IEnumerable? senders, IEnumerable? receivers) { + var res = new List<(string Sender, string Receiver)>(); + if (senders != null && receivers != null) { + if (senders.Any(x => receivers.Contains(x))) { + var s = senders.ToList(); + var r = receivers.ToList(); + for (var i = 0; i < r.Count || i < s.Count; i++) { + res.Add(( + s[i], + r[i] + )); + } + } + else { + res.Add(( + HTMLHelpers.StringHelpers.GetEnumerationString(senders), + HTMLHelpers.StringHelpers.GetEnumerationString(receivers) + )); + } + } + return res; + } } \ No newline at end of file diff --git a/HaWeb/Controllers/IndexController.cs b/HaWeb/Controllers/IndexController.cs index 6c72dd1..babc8aa 100644 --- a/HaWeb/Controllers/IndexController.cs +++ b/HaWeb/Controllers/IndexController.cs @@ -96,18 +96,6 @@ public class IndexController : Controller { .ToList(); } - internal static BriefeMetaViewModel GenerateMetaViewModel(ILibrary lib, Meta meta) { - var hasMarginals = lib.MarginalsByLetter.Contains(meta.Index) ? true : false; - var senders = meta.Senders.Select(x => lib.Persons[x].Name) ?? new List(); - var recivers = meta.Receivers.Select(x => lib.Persons[x].Name) ?? new List(); - var zhstring = meta.ZH != null ? HaWeb.HTMLHelpers.LetterHelpers.CreateZHString(meta) : null; - return new BriefeMetaViewModel(meta, hasMarginals) { - ParsedZHString = zhstring, - ParsedSenders = HTMLHelpers.StringHelpers.GetEnumerationString(senders), - ParsedReceivers = HTMLHelpers.StringHelpers.GetEnumerationString(recivers) - }; - } - internal static List<(int StartYear, int EndYear)>? Paginate(List>? letters, int lettersForPage) { if (letters == null || !letters.Any()) return null; List<(int StartYear, int EndYear)>? res = null; @@ -146,7 +134,7 @@ public class IndexController : Controller { letters = metasbyyear .Where(x => x.Key >= pages[page].StartYear && x.Key <= pages[page].EndYear) .Select(x => (x.Key, x - .Select(y => GenerateMetaViewModel(lib, y)) + .Select(y => Briefecontroller.GenerateMetaViewModel(lib, y)) .OrderBy(x => x.Meta.Sort) .ThenBy(x => x.Meta.Order) .ToList())) diff --git a/HaWeb/Controllers/SucheController.cs b/HaWeb/Controllers/SucheController.cs index 225843d..28951f3 100644 --- a/HaWeb/Controllers/SucheController.cs +++ b/HaWeb/Controllers/SucheController.cs @@ -137,7 +137,7 @@ public class SucheController : Controller { letters = metasbyyear .Where(x => x.Key >= pages[page].StartYear && x.Key <= pages[page].EndYear) .Select(x => (x.Key, x - .Select(y => IndexController.GenerateMetaViewModel(lib, y)) + .Select(y => Briefecontroller.GenerateMetaViewModel(lib, y)) .OrderBy(x => x.Meta.Sort) .ThenBy(x => x.Meta.Order) .ToList())) diff --git a/HaWeb/Models/BriefeMetaViewModel.cs b/HaWeb/Models/BriefeMetaViewModel.cs index 9f560e1..2bd61ec 100644 --- a/HaWeb/Models/BriefeMetaViewModel.cs +++ b/HaWeb/Models/BriefeMetaViewModel.cs @@ -6,30 +6,20 @@ public class BriefeMetaViewModel { public bool HasMarginals { get; private set; } public bool HasText { get; set; } = true; - private string? _ParsedSenders; - private string? _ParsedReceivers; + private List<(string Sender, string Receiver)>? _SenderReceiver; private string? _ParsedZHString; private string? _Startline; private string? _Startpage; - public string? ParsedSenders { - get => _ParsedSenders; + public List<(string Sender, string Receiver)>? SenderReceiver { + get => _SenderReceiver; set { if (value != null) - _ParsedSenders = HttpUtility.HtmlEncode(value); - else - _ParsedSenders = value; - } - } - - public string? ParsedReceivers { - get => _ParsedReceivers; - set { - if (value != null) - _ParsedReceivers = HttpUtility.HtmlEncode(value); - else - _ParsedReceivers = value; - + value.ForEach(x => { + HttpUtility.HtmlEncode(x.Sender); + HttpUtility.HtmlEncode(x.Receiver); + }); + _SenderReceiver = value; } } diff --git a/HaWeb/README.md b/HaWeb/README.md index 93d230f..a83d41c 100644 --- a/HaWeb/README.md +++ b/HaWeb/README.md @@ -82,11 +82,7 @@ Vor dem internen release: A TODO Jahreszahlen auf der Startseite B TODO Suchergebnisse beschränken B TODO Mobile Menüs bei der Seitennavigation (Jahrszahlen, Buchstabenindex usw) -A TODO Fehlerseiten bei nicht gefundenen Seiten C TODO Traditions durchsuchen -A TODO Briefe, in welchen Sender / Empfänger jeweils doppelt / getauscht sind 876 -A TODO SEO Description & Titel -A TODO fixed width briefe kommentar bisschen nach links 306, 309 Liste für Janina/Luca: tabellen ok, ausser 939 @@ -95,5 +91,4 @@ KOmmentare verschobem 202 Anhang 458 leeren lettertext löschen 935 leeren lettertext löschen -doppel- empfänder sender 876 Evtl finetuning von note \ No newline at end of file diff --git a/HaWeb/Views/Shared/_LetterHead.cshtml b/HaWeb/Views/Shared/_LetterHead.cshtml index 11f20fc..d6c91e8 100644 --- a/HaWeb/Views/Shared/_LetterHead.cshtml +++ b/HaWeb/Views/Shared/_LetterHead.cshtml @@ -8,7 +8,7 @@ } - @if (!String.IsNullOrWhiteSpace(Model.Letter.ParsedReceivers)) { + @if (Model.Letter.SenderReceiver != null && Model.Letter.SenderReceiver.Any()) {