diff --git a/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-TOC.cs b/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-TOC.cs
index 1aafdefd..026c8809 100644
--- a/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-TOC.cs
+++ b/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-TOC.cs
@@ -242,13 +242,13 @@ namespace RMuseum.Services.Implementation
var cat = await context.GanjoorCategories.AsNoTracking().Where(c => c.Id == catId).SingleAsync();
var poet = await context.GanjoorPoets.AsNoTracking().Where(p => p.Id == cat.PoetId).SingleAsync();
var rhythms = await context.GanjoorMetres.ToListAsync();
- string html = string.IsNullOrEmpty(cat.DescriptionHtml) ? "" : $"{cat.DescriptionHtml.Replace("../", "https://ganjoor.net/") }{Environment.NewLine}";
+ string html = string.IsNullOrEmpty(cat.DescriptionHtml) ? "" : $"{cat.DescriptionHtml.Replace("../", "https://ganjoor.net/")}{Environment.NewLine}";
var subCats = await context.GanjoorCategories.AsNoTracking().Where(c => c.ParentId == catId).OrderBy(c => c.MixedModeOrder).ThenBy(c => c.Id).ToListAsync();
var poems = await context.GanjoorPoems.AsNoTracking().Where(p => p.CatId == catId).OrderBy(p => p.MixedModeOrder).ThenBy(p => p.Id).ToListAsync();
if (options == GanjoorTOC.OnlyTitles || (options == GanjoorTOC.Analyse && (cat.ParentId == null || subCats.Where(c => c.MixedModeOrder != 0).Any() || poems.Count == 0 || poems.Where(p => p.MixedModeOrder != 0).Any())))//ignore options parameter
{
- if((subCats.Count + poems.Count) > 7)
+ if ((subCats.Count + poems.Count) > 7)
{
html += $"
{Environment.NewLine}";
html += $"
{Environment.NewLine}";
@@ -329,8 +329,8 @@ namespace RMuseum.Services.Implementation
{
//poet page
var poetPage = await context.GanjoorPages.AsNoTracking().Where(p => p.ParentId == null && p.PoetId == cat.PoetId && p.GanjoorPageType == GanjoorPageType.PoetPage).SingleAsync();
-
-
+
+
html += $"
دیگر صفحات مرتبط با {poet.Nickname} در این پایگاه:
{Environment.NewLine}";
/*
// do not include stats pages
@@ -344,138 +344,142 @@ namespace RMuseum.Services.Implementation
}
*/
- if(true == await context.GanjoorQuotedPoems.AsNoTracking().Where(p => p.PoetId == poet.Id && p.Published == true).AnyAsync())
+ bool hasQuotes = await context.GanjoorQuotedPoems.AsNoTracking().Where(p => p.PoetId == poet.Id && p.Published == true).AnyAsync();
+
+ if (hasQuotes)
{
+
html += $"
{Environment.NewLine}";
- }
- var quotedFromPoetIds =
- await context.GanjoorQuotedPoems.AsNoTracking()
- .Where(q => q.PoetId == poet.Id && q.IsPriorToRelated == false && q.RelatedPoetId != null && q.Published == true)
- .GroupBy(q => q.RelatedPoetId)
- .Select(q => q.Key)
- .ToListAsync();
+ var quotedFromPoetIds =
+ await context.GanjoorQuotedPoems.AsNoTracking()
+ .Where(q => q.PoetId == poet.Id && q.IsPriorToRelated == false && q.RelatedPoetId != null && q.Published == true)
+ .GroupBy(q => q.RelatedPoetId)
+ .Select(q => q.Key)
+ .ToListAsync();
- foreach (var quotedPoetId in quotedFromPoetIds)
- {
- if (quotedPoetId == poet.Id) continue;
- if(false == await context.GanjoorPages.AsNoTracking()
- .AnyAsync(p => p.GanjoorPageType == GanjoorPageType.ProsodySimilars && p.PoetId == poet.Id && p.SecondPoetId == quotedPoetId))
+ foreach (var quotedPoetId in quotedFromPoetIds)
{
- var secondPoet = await context.GanjoorPoets.AsNoTracking().Where(p => p.Id == quotedPoetId).SingleAsync();
- if (secondPoet.DeathYearInLHijri > poet.DeathYearInLHijri) continue;
-
- var secondPoetCat = await context.GanjoorCategories.AsNoTracking().Where(c => c.PoetId == quotedPoetId && c.ParentId == null).SingleAsync();
-
-
-
- var newPageId = 1 + await context.GanjoorPages.MaxAsync(p => p.Id);
- while (await context.GanjoorPoems.Where(p => p.Id == newPageId).AnyAsync())
- newPageId++;
- GanjoorPage page = new GanjoorPage()
+ if (quotedPoetId == poet.Id) continue;
+ if (false == await context.GanjoorPages.AsNoTracking()
+ .AnyAsync(p => p.GanjoorPageType == GanjoorPageType.ProsodySimilars && p.PoetId == poet.Id && p.SecondPoetId == quotedPoetId))
{
- Id = newPageId,
- GanjoorPageType = GanjoorPageType.ProsodySimilars,
- Published = true,
- PageOrder = -1,
- Title = $"استقبالهای {poet.Nickname} از {secondPoet.Nickname}",
- FullTitle = $"{poet.Nickname} » استقبالهای {poet.Nickname} از {secondPoet.Nickname}",
- UrlSlug = secondPoetCat.UrlSlug,
- FullUrl = $"/{cat.UrlSlug}/{secondPoetCat.UrlSlug}",
- HtmlText = "
متن در حال آمادهسازی است.
",
- PoetId = poet.Id,
- PostDate = DateTime.Now,
- SecondPoetId = quotedPoetId,
- };
- context.GanjoorPages.Add(page);
- await context.SaveChangesAsync();
+ var secondPoet = await context.GanjoorPoets.AsNoTracking().Where(p => p.Id == quotedPoetId).SingleAsync();
+ if (secondPoet.DeathYearInLHijri > poet.DeathYearInLHijri) continue;
- await _RegenerateRelatedPoemsPageAsync(userId, context, poet.Id, secondPoet.Id);
+ var secondPoetCat = await context.GanjoorCategories.AsNoTracking().Where(c => c.PoetId == quotedPoetId && c.ParentId == null).SingleAsync();
+
+
+
+ var newPageId = 1 + await context.GanjoorPages.MaxAsync(p => p.Id);
+ while (await context.GanjoorPoems.Where(p => p.Id == newPageId).AnyAsync())
+ newPageId++;
+ GanjoorPage page = new GanjoorPage()
+ {
+ Id = newPageId,
+ GanjoorPageType = GanjoorPageType.ProsodySimilars,
+ Published = true,
+ PageOrder = -1,
+ Title = $"استقبالهای {poet.Nickname} از {secondPoet.Nickname}",
+ FullTitle = $"{poet.Nickname} » استقبالهای {poet.Nickname} از {secondPoet.Nickname}",
+ UrlSlug = secondPoetCat.UrlSlug,
+ FullUrl = $"/{cat.UrlSlug}/{secondPoetCat.UrlSlug}",
+ HtmlText = "
متن در حال آمادهسازی است.
",
+ PoetId = poet.Id,
+ PostDate = DateTime.Now,
+ SecondPoetId = quotedPoetId,
+ };
+ context.GanjoorPages.Add(page);
+ await context.SaveChangesAsync();
+
+ await _RegenerateRelatedPoemsPageAsync(userId, context, poet.Id, secondPoet.Id);
+ }
}
- }
- var poets = await context.GanjoorPoets.AsNoTracking().OrderBy(p => p.DeathYearInLHijri).ToListAsync();
+ var poets = await context.GanjoorPoets.AsNoTracking().OrderBy(p => p.DeathYearInLHijri).ToListAsync();
- var thisPoetsSimilarsUnSorted = await context.GanjoorPages.AsNoTracking()
- .Where(p => p.GanjoorPageType == GanjoorPageType.ProsodySimilars && p.PoetId == poet.Id).ToListAsync();
+ var thisPoetsSimilarsUnSorted = await context.GanjoorPages.AsNoTracking()
+ .Where(p => p.GanjoorPageType == GanjoorPageType.ProsodySimilars && p.PoetId == poet.Id).ToListAsync();
- List
thisPoetsSimilars = new List();
- foreach (var ganjoorPoet in poets)
- {
- if(thisPoetsSimilarsUnSorted.Any(p => p.SecondPoetId == ganjoorPoet.Id))
+ List thisPoetsSimilars = new List();
+ foreach (var ganjoorPoet in poets)
{
- thisPoetsSimilars.Add(thisPoetsSimilarsUnSorted.Single(p => p.SecondPoetId == ganjoorPoet.Id));
- }
- }
-
- foreach (var childPage in thisPoetsSimilars)
- {
- html += $"{Environment.NewLine}";
- html += $"
{childPage.Title}{Environment.NewLine}";
- html += $"
{Environment.NewLine}";
- }
-
- var quotedByPoetIds =
- await context.GanjoorQuotedPoems.AsNoTracking()
- .Where(q => q.IsPriorToRelated == true && q.RelatedPoetId == poet.Id && q.Published == true)
- .GroupBy(q => q.PoetId)
- .Select(q => q.Key)
- .ToListAsync();
-
- foreach (var quotedPoetId in quotedByPoetIds)
- {
- if (quotedPoetId == poet.Id) continue;
- if (false == await context.GanjoorPages.AsNoTracking()
- .AnyAsync(p => p.GanjoorPageType == GanjoorPageType.ProsodySimilars && p.PoetId == quotedPoetId && p.SecondPoetId == poet.Id))
- {
- var secondPoet = await context.GanjoorPoets.AsNoTracking().Where(p => p.Id == quotedPoetId).SingleAsync();
- if (secondPoet.DeathYearInLHijri < poet.DeathYearInLHijri) continue;
-
- var secondPoetCat = await context.GanjoorCategories.AsNoTracking().Where(c => c.PoetId == quotedPoetId && c.ParentId == null).SingleAsync();
- var newPageId = 1 + await context.GanjoorPages.MaxAsync(p => p.Id);
- while (await context.GanjoorPoems.Where(p => p.Id == newPageId).AnyAsync())
- newPageId++;
- GanjoorPage page = new GanjoorPage()
+ if (thisPoetsSimilarsUnSorted.Any(p => p.SecondPoetId == ganjoorPoet.Id))
{
- Id = newPageId,
- GanjoorPageType = GanjoorPageType.ProsodySimilars,
- Published = true,
- PageOrder = -1,
- Title = $"استقبالهای {secondPoet.Nickname} از {poet.Nickname}",
- FullTitle = $"{secondPoet.Nickname} » استقبالهای {secondPoet.Nickname} از {poet.Nickname}",
- UrlSlug = poetPage.UrlSlug,
- FullUrl = $"/{secondPoetCat.UrlSlug}/{poetPage.UrlSlug}",
- HtmlText = "متن در حال آمادهسازی است.
",
- PoetId = secondPoet.Id,
- PostDate = DateTime.Now,
- SecondPoetId = poet.Id,
- };
- context.GanjoorPages.Add(page);
- await context.SaveChangesAsync();
-
- await _RegenerateRelatedPoemsPageAsync(userId, context, secondPoet.Id, poet.Id);
+ thisPoetsSimilars.Add(thisPoetsSimilarsUnSorted.Single(p => p.SecondPoetId == ganjoorPoet.Id));
+ }
}
- }
- var otherPoetsSimilarsUnSorted = await context.GanjoorPages.AsNoTracking()
- .Where(p => p.GanjoorPageType == GanjoorPageType.ProsodySimilars && p.SecondPoetId == poet.Id).ToListAsync();
-
- List otherPoetsSimilars = new List();
- foreach (var ganjoorPoet in poets)
- {
- if (otherPoetsSimilarsUnSorted.Any(p => p.PoetId == ganjoorPoet.Id))
+ foreach (var childPage in thisPoetsSimilars)
{
- otherPoetsSimilars.Add(otherPoetsSimilarsUnSorted.Single(p => p.PoetId == ganjoorPoet.Id));
+ html += $"{Environment.NewLine}";
+ html += $"
{childPage.Title}{Environment.NewLine}";
+ html += $"
{Environment.NewLine}";
+ }
+
+ var quotedByPoetIds =
+ await context.GanjoorQuotedPoems.AsNoTracking()
+ .Where(q => q.IsPriorToRelated == true && q.RelatedPoetId == poet.Id && q.Published == true)
+ .GroupBy(q => q.PoetId)
+ .Select(q => q.Key)
+ .ToListAsync();
+
+ foreach (var quotedPoetId in quotedByPoetIds)
+ {
+ if (quotedPoetId == poet.Id) continue;
+ if (false == await context.GanjoorPages.AsNoTracking()
+ .AnyAsync(p => p.GanjoorPageType == GanjoorPageType.ProsodySimilars && p.PoetId == quotedPoetId && p.SecondPoetId == poet.Id))
+ {
+ var secondPoet = await context.GanjoorPoets.AsNoTracking().Where(p => p.Id == quotedPoetId).SingleAsync();
+ if (secondPoet.DeathYearInLHijri < poet.DeathYearInLHijri) continue;
+
+ var secondPoetCat = await context.GanjoorCategories.AsNoTracking().Where(c => c.PoetId == quotedPoetId && c.ParentId == null).SingleAsync();
+ var newPageId = 1 + await context.GanjoorPages.MaxAsync(p => p.Id);
+ while (await context.GanjoorPoems.Where(p => p.Id == newPageId).AnyAsync())
+ newPageId++;
+ GanjoorPage page = new GanjoorPage()
+ {
+ Id = newPageId,
+ GanjoorPageType = GanjoorPageType.ProsodySimilars,
+ Published = true,
+ PageOrder = -1,
+ Title = $"استقبالهای {secondPoet.Nickname} از {poet.Nickname}",
+ FullTitle = $"{secondPoet.Nickname} » استقبالهای {secondPoet.Nickname} از {poet.Nickname}",
+ UrlSlug = poetPage.UrlSlug,
+ FullUrl = $"/{secondPoetCat.UrlSlug}/{poetPage.UrlSlug}",
+ HtmlText = "متن در حال آمادهسازی است.
",
+ PoetId = secondPoet.Id,
+ PostDate = DateTime.Now,
+ SecondPoetId = poet.Id,
+ };
+ context.GanjoorPages.Add(page);
+ await context.SaveChangesAsync();
+
+ await _RegenerateRelatedPoemsPageAsync(userId, context, secondPoet.Id, poet.Id);
+ }
+ }
+
+ var otherPoetsSimilarsUnSorted = await context.GanjoorPages.AsNoTracking()
+ .Where(p => p.GanjoorPageType == GanjoorPageType.ProsodySimilars && p.SecondPoetId == poet.Id).ToListAsync();
+
+ List otherPoetsSimilars = new List();
+ foreach (var ganjoorPoet in poets)
+ {
+ if (otherPoetsSimilarsUnSorted.Any(p => p.PoetId == ganjoorPoet.Id))
+ {
+ otherPoetsSimilars.Add(otherPoetsSimilarsUnSorted.Single(p => p.PoetId == ganjoorPoet.Id));
+ }
+ }
+
+ foreach (var childPage in otherPoetsSimilars)
+ {
+ html += $"{Environment.NewLine}";
+ html += $"
{childPage.Title}{Environment.NewLine}";
+ html += $"
{Environment.NewLine}";
}
- }
- foreach (var childPage in otherPoetsSimilars)
- {
- html += $"{Environment.NewLine}";
- html += $"
{childPage.Title}{Environment.NewLine}";
- html += $"
{Environment.NewLine}";
}
html += $"{Environment.NewLine}";
@@ -551,7 +555,7 @@ namespace RMuseum.Services.Implementation
{
string versePosition = options == GanjoorTOC.AlphabeticWithFirstVerse || options == GanjoorTOC.AlphabeticWithFirstVerseNotSorted ? "اول" : "دوم";
string sampleVerse = options == GanjoorTOC.AlphabeticWithFirstVerse || options == GanjoorTOC.AlphabeticWithFirstVerseNotSorted ? randomPoemVerses[0].Text : randomPoemVerses[1].Text;
- html += $"
مثلاً برای پیدا کردن شعری که مصرع «{sampleVerse}» مصرع {versePosition} یکی از بیتهای آن است باید شعرهایی را نگاه کنید که آخر حرف قافیهٔ آنها «{randomPoem.RhymeLetters.Substring(randomPoem.RhymeLetters.Length - 1)}» است.
{Environment.NewLine}";
+ html += $"
مثلاً برای پیدا کردن شعری که مصرع «{sampleVerse}» مصرع {versePosition} یکی از بیتهای آن است باید شعرهایی را نگاه کنید که آخر حرف قافیهٔ آنها «{randomPoem.RhymeLetters.Substring(randomPoem.RhymeLetters.Length - 1)}» است.
{Environment.NewLine}";
}
html += $"
{Environment.NewLine}";
@@ -572,7 +576,7 @@ namespace RMuseum.Services.Implementation
}
}
}
- if(
+ if (
options == GanjoorTOC.AlphabeticWithFirstCouplet
||
options == GanjoorTOC.AlphabeticWithFirstVerse
@@ -590,8 +594,8 @@ namespace RMuseum.Services.Implementation
foundLastChars.Sort((a, b) => fa.CompareInfo.Compare(a, b));
}
}
-
-
+
+
foreach (var poemLastChar in foundLastChars)
{
string rep = poemLastChar == "ا" ? "الف" : poemLastChar;