diff --git a/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterList.cs b/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterList.cs index 5f3cbc71c..fac24bfab 100644 --- a/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterList.cs +++ b/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterList.cs @@ -48,6 +48,14 @@ public static FilterList CreatePendingApproval( throw new ArgumentException("At lest one view URL is required.", nameof(viewUrls)); } + if (urls.GroupBy(u => new { u.SegmentNumber, u.Primariness }) + .Any(g => g.Count() > 1)) + { + throw new ArgumentException( + "The segment number and primariness pair must be unique for each view URL.", + nameof(viewUrls)); + } + var list = new FilterList { Name = name, diff --git a/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterListViewUrl.cs b/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterListViewUrl.cs index 64c89dbf7..f82a90d43 100644 --- a/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterListViewUrl.cs +++ b/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterListViewUrl.cs @@ -10,6 +10,20 @@ protected FilterListViewUrl() { } internal static FilterListViewUrl Create(short segmentNumber, short primariness, Uri url) { + if (segmentNumber < 1) + { + throw new ArgumentException( + "The segment number must be greater than or equal to 1.", + nameof(segmentNumber)); + } + + if (primariness < 1) + { + throw new ArgumentException( + "The primariness must be greater than or equal to 1.", + nameof(segmentNumber)); + } + return new FilterListViewUrl { SegmentNumber = segmentNumber, Primariness = primariness, Url = url }; } }