تغییرات حاصل از پردازش {note}
{Environment.NewLine}"; bool anyChanges = false; var dbPage = await context.DiwanPages.Where(p => p.Id == poemId).SingleOrDefaultAsync(); DiwanPageSnapshot snapshot = new DiwanPageSnapshot() { DiwanPageId = poemId, MadeObsoleteByUserId = (Guid)userId, RecordDate = DateTime.Now, Note = note, Title = dbPage.Title, UrlSlug = dbPage.UrlSlug, HtmlText = dbPage.HtmlText, }; string poemTitle = poem.title; if(poemTitle != dbPoem.Title) { anyChanges = true; comment += $"تغییر عنوان از «{dbPoem.Title}» به «{poemTitle}»
{Environment.NewLine}"; dbPoem.Title = poemTitle; dbPoem.FullTitle = $"{dbPoem.Cat.FullUrl} » {dbPoem.Title}"; context.DiwanPoems.Update(dbPoem); } var sqliteVerses = new Listتغییر مصرع {vIndex + 1} از «{dbVerses[vIndex].Text}» به «{text}»
{Environment.NewLine}".ToPersianNumbers(); dbVerses[vIndex].Text = text; context.DiwanVerses.Update(dbVerses[vIndex]); anyChanges = true; vIndex++; } if(vIndex != -1) { while (vIndex < dbVerses.Count) { comment += $"حذف مصرع {vIndex + 1} با متن «{dbVerses[vIndex].Text}»
{Environment.NewLine}".ToPersianNumbers(); context.DiwanVerses.Remove(dbVerses[vIndex]); vIndex++; anyChanges = true; } while (vIndex < sqliteVerses.Count) { string text = sqliteVerses[vIndex].text; text = text.Replace("ـ", "").Replace(" ", " ").ApplyCorrectYeKe().Trim(); int vOrder = int.Parse(sqliteVerses[vIndex].vorder.ToString()); int position = int.Parse(sqliteVerses[vIndex].position.ToString()); comment += $"اضافه شدن مصرع {vIndex + 1} با متن «{text}»
{Environment.NewLine}".ToPersianNumbers(); context.DiwanVerses.Add ( new DiwanVerse() { PoemId = poemId, VOrder = vOrder, VersePosition = (VersePosition)position, Text = text } ); vIndex++; anyChanges = true; } if (anyChanges) { await _FillPoemCoupletIndices(context, poemId); DiwanComment sysComment = new DiwanComment() { UserId = userId, AuthorIpAddress = "127.0.0.1", CommentDate = DateTime.Now, HtmlComment = comment, PoemId = poemId, Status = PublishStatus.Published, }; context.DiwanComments.Add(sysComment); context.DiwanPageSnapshots.Add(snapshot); await context.SaveChangesAsync(); var poemVerses = await context.DiwanVerses.Where(v => v.PoemId == poemId).OrderBy(v => v.VOrder).ToListAsync(); bool needsNewVOrder = false; for (int i = 0; i < poemVerses.Count; i++) { if(poemVerses[i].VOrder != (i + 1)) { poemVerses[i].VOrder = i + 1; needsNewVOrder = true; } } if(needsNewVOrder) { context.DiwanVerses.UpdateRange(poemVerses); } dbPoem.PlainText = PreparePlainText(poemVerses, dbPoem.Title); dbPoem.HtmlText = PrepareHtmlText(poemVerses); dbPage.HtmlText = dbPoem.HtmlText; dbPage.Title = dbPoem.Title; dbPage.FullTitle = dbPoem.FullTitle; try { var poemRhymeLettersRes = LanguageUtils.FindRhyme(poemVerses); if (!string.IsNullOrEmpty(poemRhymeLettersRes.Rhyme)) { dbPoem.RhymeLetters = poemRhymeLettersRes.Rhyme; } } catch { } context.DiwanPoems.Update(dbPoem); context.DiwanPages.Update(dbPage); await context.SaveChangesAsync(); } } } await jobProgressServiceEF.UpdateJob(job.Id, 100, "", true); } } catch (Exception exp) { await jobProgressServiceEF.UpdateJob(job.Id, 100, "", false, exp.ToString()); } } File.Delete(filePath); } ); } catch (Exception exp) { return new RServiceResult