diff --git a/RMuseum/Models/Ganjoor/ViewModels/PoetOrCatWordStat.cs b/RMuseum/Models/Ganjoor/ViewModels/PoetOrCatWordStat.cs new file mode 100644 index 00000000..c51c672d --- /dev/null +++ b/RMuseum/Models/Ganjoor/ViewModels/PoetOrCatWordStat.cs @@ -0,0 +1,11 @@ +namespace RMuseum.Models.Ganjoor.ViewModels +{ + public class PoetOrCatWordStat + { + public int Id { get; set; } + public string Name { get; set; } + public int Count { get; set; } + public int RowNmbrInCat { get; set; } + public int TotalWordCount { get; set; } + } +} diff --git a/RMuseum/RMuseum.xml b/RMuseum/RMuseum.xml index bafc2548..4c230796 100644 --- a/RMuseum/RMuseum.xml +++ b/RMuseum/RMuseum.xml @@ -19233,6 +19233,14 @@ + + + comparison of word counts for poets + + + + + build word counts diff --git a/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-CategoryWordCounts.cs b/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-CategoryWordCounts.cs index 8a8925ef..747a2af3 100644 --- a/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-CategoryWordCounts.cs +++ b/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-CategoryWordCounts.cs @@ -9,6 +9,7 @@ using RSecurityBackend.Services.Implementation; using System.Threading.Tasks; using RSecurityBackend.Models.Generic.Db; using RSecurityBackend.Models.Generic; +using RMuseum.Models.Ganjoor.ViewModels; namespace RMuseum.Services.Implementation { @@ -66,6 +67,43 @@ namespace RMuseum.Services.Implementation } } + /// + /// comparison of word counts for poets + /// + /// + /// + /// + public async Task> GetCategoryWordCountsByPoetsAsync(string term, PagingParameterModel paging) + { + try + { + var source = + from cwd in _context.CategoryWordCounts + join catsum in _context.CategoryWordCountSummaries on cwd.Id equals catsum.Id + join cat in _context.GanjoorCategories on cwd.CatId equals cat.Id + where cat.ParentId == 0 && cwd.Word == term + orderby cwd.Count + select + new PoetOrCatWordStat() + { + Id = cat.PoetId, + Name = cat.Title, + Count = cwd.Count, + RowNmbrInCat = cwd.RowNmbrInCat, + TotalWordCount = catsum.TotalWordCount, + }; + + (PaginationMetadata PagingMeta, PoetOrCatWordStat[] Items) paginatedResult = + await QueryablePaginator.Paginate(source, paging); + + return new RServiceResult<(PaginationMetadata PagingMeta, PoetOrCatWordStat[] Items)>(paginatedResult); + } + catch (Exception exp) + { + return new RServiceResult<(PaginationMetadata PagingMeta, PoetOrCatWordStat[] Items)>((null, null), exp.ToString()); + } + } + /// /// build word counts