Replaced all EnvelopeGenerator.GeneratorAPI namespaces with EnvelopeGenerator.API across controllers, models, extensions, middleware, and annotation-related files. Updated using/import statements and namespace declarations accordingly. Added wwwroot folder to project file. Minor code adjustments made for consistency. This unifies API naming for improved clarity and maintainability.
81 lines
2.7 KiB
C#
81 lines
2.7 KiB
C#
using EnvelopeGenerator.API.Models.PsPdfKitAnnotation;
|
|
using System.Text.Json.Serialization;
|
|
|
|
namespace EnvelopeGenerator.API.Models.PsPdfKitAnnotation;
|
|
|
|
public class AnnotationParams
|
|
{
|
|
public AnnotationParams()
|
|
{
|
|
_AnnotationJSObjectInitor = new(CreateAnnotationJSObject);
|
|
}
|
|
|
|
public Background? Background { get; init; }
|
|
|
|
#region Annotation
|
|
[JsonIgnore]
|
|
public Annotation? DefaultAnnotation { get; init; }
|
|
|
|
private readonly List<Annotation> _annots = new List<Annotation>();
|
|
|
|
public bool TryGet(string name, out Annotation annotation)
|
|
{
|
|
#pragma warning disable CS8601 // Possible null reference assignment.
|
|
annotation = _annots.FirstOrDefault(a => a.Name == name);
|
|
#pragma warning restore CS8601 // Possible null reference assignment.
|
|
return annotation is not null;
|
|
}
|
|
|
|
public required IEnumerable<Annotation> Annotations
|
|
{
|
|
get => _annots;
|
|
init
|
|
{
|
|
_annots = value.ToList();
|
|
|
|
if (DefaultAnnotation is not null)
|
|
foreach (var annot in _annots)
|
|
annot.Default = DefaultAnnotation;
|
|
|
|
for (int i = 0; i < _annots.Count; i++)
|
|
{
|
|
#region set bound annotations
|
|
// horizontal
|
|
if (_annots[i].HorBoundAnnotName is string horBoundAnnotName)
|
|
if (TryGet(horBoundAnnotName, out var horBoundAnnot))
|
|
_annots[i].HorBoundAnnot = horBoundAnnot;
|
|
else
|
|
throw new InvalidOperationException($"{horBoundAnnotName} added as bound anotation. However, it is not defined.");
|
|
|
|
// vertical
|
|
if (_annots[i].VerBoundAnnotName is string verBoundAnnotName)
|
|
if (TryGet(verBoundAnnotName, out var verBoundAnnot))
|
|
_annots[i].VerBoundAnnot = verBoundAnnot;
|
|
else
|
|
throw new InvalidOperationException($"{verBoundAnnotName} added as bound anotation. However, it is not defined.");
|
|
#endregion
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region AnnotationJSObject
|
|
private Dictionary<string, IAnnotation> CreateAnnotationJSObject()
|
|
{
|
|
var dict = _annots.ToDictionary(a => a.Name.ToLower(), a => a as IAnnotation);
|
|
|
|
if (Background is not null)
|
|
{
|
|
Background.Locate(_annots);
|
|
dict.Add(Background.Name.ToLower(), Background);
|
|
}
|
|
|
|
return dict;
|
|
}
|
|
|
|
private readonly Lazy<Dictionary<string, IAnnotation>> _AnnotationJSObjectInitor;
|
|
|
|
public Dictionary<string, IAnnotation> AnnotationJSObject => _AnnotationJSObjectInitor.Value;
|
|
#endregion
|
|
}
|