mirror of
https://github.com/Theodor-Springmann-Stiftung/hamann-ausgabe-core.git
synced 2025-10-30 01:35:32 +00:00
- Commentboxes work (marginals) + mouseover
- Basic Briefe Controller - Generic XML reader
This commit is contained in:
@@ -1,20 +1,81 @@
|
||||
using System.Diagnostics;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using HaWeb.Models;
|
||||
using HaDocument.Interfaces;
|
||||
using HaXMLReader.Interfaces;
|
||||
using HaDocument.Models;
|
||||
|
||||
namespace HaWeb.Controllers;
|
||||
|
||||
public class Briefecontroller : Controller
|
||||
{
|
||||
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
|
||||
public IActionResult Error()
|
||||
[BindProperty(SupportsGet = true)]
|
||||
public string? id { get; set; }
|
||||
|
||||
// DI
|
||||
private ILibrary _lib;
|
||||
private IReaderService _readerService;
|
||||
|
||||
public Briefecontroller(ILibrary lib, IReaderService readerService)
|
||||
{
|
||||
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
|
||||
_lib = lib;
|
||||
_readerService = readerService;
|
||||
}
|
||||
|
||||
[Route("Briefe")]
|
||||
[Route("Briefe/{id?}")]
|
||||
public IActionResult Index(int? id) {
|
||||
return View();
|
||||
public IActionResult Index(string? id)
|
||||
{
|
||||
// Setup settings and variables
|
||||
var url = "/Briefe/";
|
||||
var defaultID = "1";
|
||||
|
||||
// Normalisation and Validation, (some) data aquisition
|
||||
if (id == null) return Redirect(url + defaultID);
|
||||
this.id = id.ToLower();
|
||||
var preliminarymeta = _lib.Metas.Where(x => x.Value.Autopsic == this.id);
|
||||
if (preliminarymeta == null || !preliminarymeta.Any()) return error404();
|
||||
|
||||
// Get all neccessary data
|
||||
var index = preliminarymeta.First().Key;
|
||||
var meta = preliminarymeta.First().Value;
|
||||
var text = _lib.Letters.ContainsKey(index) ? _lib.Letters[index] : null;
|
||||
var marginals = _lib.MarginalsByLetter.Contains(index) ? _lib.MarginalsByLetter[index] : null;
|
||||
var tradition = _lib.Traditions.ContainsKey(index) ? _lib.Traditions[index] : null;
|
||||
var editreasons = _lib.Editreasons.ContainsKey(index) ? _lib.EditreasonsByLetter[index] : null; // TODO: Order
|
||||
var hands = _lib.Hands.ContainsKey(index) ? _lib.Hands[index] : null;
|
||||
var nextmeta = meta != _lib.MetasByDate.Last() ? _lib.MetasByDate.ItemRef(_lib.MetasByDate.IndexOf(meta) + 1) : null;
|
||||
var prevmeta = meta != _lib.MetasByDate.First() ? _lib.MetasByDate.ItemRef(_lib.MetasByDate.IndexOf(meta) - 1) : null;
|
||||
|
||||
// More Settings and variables
|
||||
ViewData["Title"] = "Brief " + id.ToLower();
|
||||
ViewData["SEODescription"] = "Johann Georg Hamann: Kommentierte Briefausgabe. Brief " + id.ToLower();
|
||||
ViewData["Filename"] = "HKB_" + meta.Autopsic + ".pdf";
|
||||
|
||||
// Model creation
|
||||
var model = new BriefeViewModel(this.id, index, generateMetaViewModel(meta));
|
||||
if (nextmeta != null) model.Next = generateMetaViewModel(nextmeta);
|
||||
if (prevmeta != null) model.Prev = generateMetaViewModel(prevmeta);
|
||||
|
||||
|
||||
// Return
|
||||
return View(model);
|
||||
}
|
||||
|
||||
private IActionResult error404()
|
||||
{
|
||||
Response.StatusCode = 404;
|
||||
return Redirect("/Error404");
|
||||
}
|
||||
|
||||
private BriefeMetaViewModel generateMetaViewModel(Meta meta)
|
||||
{
|
||||
var senders = meta.Senders.Select(x => _lib.Persons[x].Name) ?? new List<string>();
|
||||
var recivers = meta.Receivers.Select(x => _lib.Persons[x].Name) ?? new List<string>();
|
||||
return new BriefeMetaViewModel(meta) {
|
||||
ParsedSenders = HTMLHelpers.StringHelpers.GetEnumerationString(senders),
|
||||
ParsedReceivers = HTMLHelpers.StringHelpers.GetEnumerationString(recivers)
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user