#104 page modification method (code not complete and working and a db migration is required which is not yet generated)

This commit is contained in:
Hamid Reza Mohammadi 2021-04-08 14:23:06 +04:30
parent 4ec8b509e7
commit 44f4136020
5 changed files with 365 additions and 0 deletions

View File

@ -240,6 +240,11 @@ namespace RMuseum.DbContext
/// </summary>
public DbSet<GanjoorCommentAbuseReport> GanjoorReportedComments { get; set; }
/// <summary>
/// Ganjoor Page Snapshots
/// </summary>
public DbSet<GanjoorPageSnapshot> GanjoorPageSnapshots { get; set; }
}
}

View File

@ -0,0 +1,91 @@
using RSecurityBackend.Models.Auth.Db;
using System;
namespace RMuseum.Models.Ganjoor
{
/// <summary>
/// snapshot of ganjoor pages to keep track of their changes
/// </summary>
public class GanjoorPageSnapshot
{
/// <summary>
/// id
/// </summary>
public int Id { get; set; }
/// <summary>
/// ganjoor page id
/// </summary>
public int GanjoorPageId { get; set; }
/// <summary>
/// ganjoor page
/// </summary>
public GanjoorPage GanjoorPage { get; set; }
/// <summary>
/// id - this record is then modified by this user and made obsolete
/// </summary>
public Guid MadeObsoleteByUserId { get; set; }
/// <summary>
/// this record is then modified by this user and made obsolete
/// </summary>
public RAppUser MadeObsoleteByUser { get; set; }
/// <summary>
/// record date
/// </summary>
public DateTime RecordDate { get; set; }
/// <summary>
/// a description of the modfication
/// </summary>
public string Note { get; set; }
/// <summary>
/// title
/// </summary>
public string Title { get; set; }
/// <summary>
/// url => slug
/// </summary>
public string UrlSlug { get; set; }
/// <summary>
/// Html Text
/// </summary>
public string HtmlText { get; set; }
/// <summary>
/// Poem Rhythm
/// </summary>
public string Rhythm { get; set; }
/// <summary>
/// rhyme letters
/// </summary>
public string RhymeLetters { get; set; }
/// <summary>
/// source name
/// </summary>
public string SourceName { get; set; }
/// <summary>
/// source url slug
/// </summary>
public string SourceUrlSlug { get; set; }
/// <summary>
/// old collection or book name for Saadi's ghazalyiat (طیبات، خواتیم و ....)
/// </summary>
public string OldTag { get; set; }
/// <summary>
/// old collection page url e.g /saadi/tayyebat
/// </summary>
public string OldTagPageUrl { get; set; }
}
}

View File

@ -0,0 +1,58 @@
namespace RMuseum.Models.Ganjoor.ViewModels
{
/// <summary>
/// modify page view model
/// </summary>
public class GanjoorModifyPageViewModel
{
/// <summary>
/// title
/// </summary>
public string Title { get; set; }
/// <summary>
/// url => slug
/// </summary>
public string UrlSlug { get; set; }
/// <summary>
/// Html Text
/// </summary>
public string HtmlText { get; set; }
/// <summary>
/// Poem Rhythm
/// </summary>
public string Rhythm { get; set; }
/// <summary>
/// rhyme letters
/// </summary>
public string RhymeLetters { get; set; }
/// <summary>
/// source name
/// </summary>
public string SourceName { get; set; }
/// <summary>
/// source url slug
/// </summary>
public string SourceUrlSlug { get; set; }
/// <summary>
/// old collection or book name for Saadi's ghazalyiat (طیبات، خواتیم و ....)
/// </summary>
public string OldTag { get; set; }
/// <summary>
/// old collection page url e.g /saadi/tayyebat
/// </summary>
public string OldTagPageUrl { get; set; }
/// <summary>
/// a description of the modfication
/// </summary>
public string Note { get; set; }
}
}

View File

@ -1399,6 +1399,11 @@
Ganjoor Reported Comments
</summary>
</member>
<member name="P:RMuseum.DbContext.RMuseumDbContext.GanjoorPageSnapshots">
<summary>
Ganjoor Page Snapshots
</summary>
</member>
<member name="T:RMuseum.Models.Artifact.PublishStatus">
<summary>
Items or pictures status
@ -3924,6 +3929,91 @@
post date
</summary>
</member>
<member name="T:RMuseum.Models.Ganjoor.GanjoorPageSnapshot">
<summary>
snapshot of ganjoor pages to keep track of their changes
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.GanjoorPageSnapshot.Id">
<summary>
id
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.GanjoorPageSnapshot.GanjoorPageId">
<summary>
ganjoor page id
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.GanjoorPageSnapshot.GanjoorPage">
<summary>
ganjoor page
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.GanjoorPageSnapshot.MadeObsoleteByUserId">
<summary>
id - this record is then modified by this user and made obsolete
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.GanjoorPageSnapshot.MadeObsoleteByUser">
<summary>
this record is then modified by this user and made obsolete
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.GanjoorPageSnapshot.RecordDate">
<summary>
record date
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.GanjoorPageSnapshot.Note">
<summary>
a description of the modfication
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.GanjoorPageSnapshot.Title">
<summary>
title
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.GanjoorPageSnapshot.UrlSlug">
<summary>
url => slug
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.GanjoorPageSnapshot.HtmlText">
<summary>
Html Text
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.GanjoorPageSnapshot.Rhythm">
<summary>
Poem Rhythm
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.GanjoorPageSnapshot.RhymeLetters">
<summary>
rhyme letters
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.GanjoorPageSnapshot.SourceName">
<summary>
source name
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.GanjoorPageSnapshot.SourceUrlSlug">
<summary>
source url slug
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.GanjoorPageSnapshot.OldTag">
<summary>
old collection or book name for Saadi's ghazalyiat (طیبات، خواتیم و ....)
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.GanjoorPageSnapshot.OldTagPageUrl">
<summary>
old collection page url e.g /saadi/tayyebat
</summary>
</member>
<member name="T:RMuseum.Models.Ganjoor.GanjoorPageType">
<summary>
Ganjoor Page Type
@ -4530,6 +4620,61 @@
this can be used by clients
</summary>
</member>
<member name="T:RMuseum.Models.Ganjoor.ViewModels.GanjoorModifyPageViewModel">
<summary>
modify page view model
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorModifyPageViewModel.Title">
<summary>
title
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorModifyPageViewModel.UrlSlug">
<summary>
url => slug
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorModifyPageViewModel.HtmlText">
<summary>
Html Text
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorModifyPageViewModel.Rhythm">
<summary>
Poem Rhythm
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorModifyPageViewModel.RhymeLetters">
<summary>
rhyme letters
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorModifyPageViewModel.SourceName">
<summary>
source name
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorModifyPageViewModel.SourceUrlSlug">
<summary>
source url slug
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorModifyPageViewModel.OldTag">
<summary>
old collection or book name for Saadi's ghazalyiat (طیبات، خواتیم و ....)
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorModifyPageViewModel.OldTagPageUrl">
<summary>
old collection page url e.g /saadi/tayyebat
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorModifyPageViewModel.Note">
<summary>
a description of the modfication
</summary>
</member>
<member name="T:RMuseum.Models.Ganjoor.ViewModels.GanjoorPageCompleteViewModel">
<summary>
Ganjoor Page View Model
@ -7453,6 +7598,15 @@
<param name="poetId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementation.GanjoorService.ModifyPage(System.Int32,System.Guid,RMuseum.Models.Ganjoor.ViewModels.GanjoorModifyPageViewModel)">
<summary>
modify page
</summary>
<param name="id"></param>
<param name="editingUserId"></param>
<param name="pageData"></param>
<returns></returns>
</member>
<member name="F:RMuseum.Services.Implementation.GanjoorService._context">
<summary>
Database Context

View File

@ -1749,6 +1749,63 @@ namespace RMuseum.Services.Implementation
}
}
/// <summary>
/// modify page
/// </summary>
/// <param name="id"></param>
/// <param name="editingUserId"></param>
/// <param name="pageData"></param>
/// <returns></returns>
public async Task<RServiceResult<GanjoorPageCompleteViewModel>> ModifyPage(int id, Guid editingUserId, GanjoorModifyPageViewModel pageData)
{
try
{
var dbPage = await _context.GanjoorPages.Where(p => p.Id == id).SingleOrDefaultAsync();
if (dbPage == null)
return new RServiceResult<GanjoorPageCompleteViewModel>(null);//not found
GanjoorPageSnapshot snapshot = new GanjoorPageSnapshot()
{
GanjoorPageId = id,
MadeObsoleteByUserId = editingUserId,
RecordDate = DateTime.Now,
Note = pageData.Note,
Title = dbPage.Title,
UrlSlug = dbPage.UrlSlug,
HtmlText = dbPage.HtmlText,
};
GanjoorPoem dbPoem = null;
if (dbPage.GanjoorPageType == GanjoorPageType.PoemPage)
{
dbPoem = await _context.GanjoorPoems.Include(p => p.GanjoorMetre).Where(p => p.Id == id).SingleOrDefaultAsync();
snapshot.SourceName = dbPoem.SourceName;
snapshot.SourceUrlSlug = dbPoem.SourceUrlSlug;
snapshot.Rhythm = dbPoem.GanjoorMetre == null ? null : dbPoem.GanjoorMetre.Rhythm;
snapshot.RhymeLetters = dbPoem.RhymeLetters;
snapshot.OldTag = dbPoem.OldTag;
snapshot.OldTagPageUrl = dbPoem.OldTagPageUrl;
}
_context.GanjoorPageSnapshots.Add(snapshot);
await _context.SaveChangesAsync();
//TODO actula modification goes here:
return await GetPageByUrl(dbPage.FullUrl);
}
catch(Exception exp)
{
return new RServiceResult<GanjoorPageCompleteViewModel>(null, exp.ToString());
}
}
/// <summary>
/// Database Context
/// </summary>