#241 updating related poems on update page
This commit is contained in:
parent
d43c1be8f0
commit
781aec0666
@ -10786,6 +10786,15 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService._UpdateRelatedPoems(RMuseum.DbContext.RMuseumDbContext,System.Int32,System.String)">
|
||||
<summary>
|
||||
update related poems info (after metreId or rhyme for one of these poems changes)
|
||||
</summary>
|
||||
<param name="context"></param>
|
||||
<param name="metreId"></param>
|
||||
<param name="rhyme"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.GetPoemHtmlExcerpt(System.String)">
|
||||
<summary>
|
||||
get an excerpt for the poem
|
||||
|
||||
@ -16,6 +16,32 @@ namespace RMuseum.Services.Implementation
|
||||
/// </summary>
|
||||
public partial class GanjoorService : IGanjoorService
|
||||
{
|
||||
/// <summary>
|
||||
/// update related poems info (after metreId or rhyme for one of these poems changes)
|
||||
/// </summary>
|
||||
/// <param name="context"></param>
|
||||
/// <param name="metreId"></param>
|
||||
/// <param name="rhyme"></param>
|
||||
/// <returns></returns>
|
||||
private async Task<RServiceResult<bool>> _UpdateRelatedPoems(RMuseumDbContext context, int metreId, string rhyme)
|
||||
{
|
||||
try
|
||||
{
|
||||
var poemIds = await context.GanjoorPoems.AsNoTracking().Where(p => p.GanjoorMetreId == metreId && p.RhymeLetters == rhyme).Select(p => p.Id).ToListAsync();
|
||||
foreach (var id in poemIds)
|
||||
{
|
||||
await _UpdatePoemRelatedPoemsInfoNoSaveChanges(context, id);
|
||||
}
|
||||
await context.SaveChangesAsync();
|
||||
return new RServiceResult<bool>(true);
|
||||
}
|
||||
catch(Exception exp)
|
||||
{
|
||||
return new RServiceResult<bool>(false, exp.ToString());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
private async Task _UpdatePoemRelatedPoemsInfoNoSaveChanges(RMuseumDbContext context, int poemId)
|
||||
{
|
||||
var poem = await context.GanjoorPoems.AsNoTracking().Where(p => p.Id == poemId).SingleAsync();
|
||||
|
||||
@ -2929,6 +2929,8 @@ namespace RMuseum.Services.Implementation
|
||||
{
|
||||
dbPoem.SourceName = pageData.SourceName;
|
||||
dbPoem.SourceUrlSlug = pageData.SourceUrlSlug;
|
||||
int? oldMetreId = dbPoem.GanjoorMetreId;
|
||||
string oldRhymeLetters = dbPoem.RhymeLetters;
|
||||
if (string.IsNullOrEmpty(pageData.Rhythm))
|
||||
{
|
||||
dbPoem.GanjoorMetreId = null;
|
||||
@ -2999,6 +3001,17 @@ namespace RMuseum.Services.Implementation
|
||||
}
|
||||
|
||||
await _FillPoemCoupletIndices(_context, id);
|
||||
|
||||
if(oldMetreId != dbPoem.GanjoorMetreId || oldRhymeLetters != dbPoem.RhymeLetters)
|
||||
{
|
||||
if (oldMetreId != null && !string.IsNullOrEmpty(oldRhymeLetters))
|
||||
await _UpdateRelatedPoems(_context, (int)oldMetreId, oldRhymeLetters);
|
||||
|
||||
if (dbPoem.GanjoorMetreId != null && !string.IsNullOrEmpty(dbPoem.RhymeLetters))
|
||||
{
|
||||
await _UpdateRelatedPoems(_context, (int)dbPoem.GanjoorMetreId, dbPoem.RhymeLetters);
|
||||
}
|
||||
}
|
||||
}
|
||||
await _context.SaveChangesAsync();
|
||||
CacheCleanForPageByUrl(dbPage.FullUrl);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user