Integrate new Title and Subtitle properties into Libation

This commit is contained in:
Mbucari 2023-06-29 19:55:16 -06:00
parent 2195574422
commit 83fa73cef5
27 changed files with 109 additions and 98 deletions

View file

@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using Dinah.Core;
using Microsoft.EntityFrameworkCore;
@ -34,9 +33,11 @@ namespace DataLayer
// immutable
public string AudibleProductId { get; private set; }
public string Title { get; set; }
public string Subtitle { get; set; }
public string Description { get; private set; }
public string Title { get; private set; }
public string Subtitle { get; private set; }
private string _titleWithSubtitle;
public string TitleWithSubtitle => _titleWithSubtitle ??= string.IsNullOrEmpty(Subtitle) ? Title : $"{Title}: {Subtitle}";
public string Description { get; private set; }
public int LengthInMinutes { get; private set; }
public ContentType ContentType { get; private set; }
public string Locale { get; private set; }
@ -101,9 +102,8 @@ namespace DataLayer
Category = category;
// simple assigns
Title = title.Trim() ?? "";
Subtitle = subtitle?.Trim() ?? "";
Description = description?.Trim() ?? "";
UpdateTitle(title, subtitle);
Description = description?.Trim() ?? "";
LengthInMinutes = lengthInMinutes;
ContentType = contentType;
@ -111,10 +111,16 @@ namespace DataLayer
ReplaceAuthors(authors);
ReplaceNarrators(narrators);
}
public void UpdateTitle(string title, string subtitle)
{
Title = title?.Trim() ?? "";
Subtitle = subtitle?.Trim() ?? "";
_titleWithSubtitle = null;
}
#region contributors, authors, narrators
// use uninitialised backing fields - this means we can detect if the collection was loaded
private HashSet<BookContributor> _contributorsLink;
#region contributors, authors, narrators
// use uninitialised backing fields - this means we can detect if the collection was loaded
private HashSet<BookContributor> _contributorsLink;
// i'd like this to be internal but migration throws this exception when i try:
// Value cannot be null.
// Parameter name: property
@ -237,6 +243,6 @@ namespace DataLayer
Category = category;
}
public override string ToString() => $"[{AudibleProductId}] {Title}";
public override string ToString() => $"[{AudibleProductId}] {TitleWithSubtitle}";
}
}