#207 api for breaking a poem
This commit is contained in:
parent
3c2c5df7a1
commit
5e49f8e4b6
@ -1024,6 +1024,32 @@ namespace RMuseum.Controllers
|
||||
return Ok(res.Result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// break a poem from a verse forward
|
||||
/// </summary>
|
||||
/// <param name="verse"></param>
|
||||
/// <returns>id of new poem</returns>
|
||||
[HttpPost]
|
||||
[Route("poem/break")]
|
||||
[Authorize(Policy = RMuseumSecurableItem.GanjoorEntityShortName + ":" + SecurableItem.ModifyOperationShortName)]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(int))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||
public async Task<IActionResult> BreakPoemAsync([FromBody] PoemVerseOrder verse)
|
||||
{
|
||||
if (ReadOnlyMode)
|
||||
return BadRequest("سایت به دلایل فنی مثل انتقال سرور موقتاً در حالت فقط خواندنی قرار دارد. لطفاً ساعاتی دیگر مجدداً تلاش کنید.");
|
||||
|
||||
var userId =
|
||||
new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
|
||||
|
||||
RServiceResult<int> res =
|
||||
await _ganjoorService.BreakPoemAsync(verse.PoemId, verse.VOrder, userId);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
return Ok(res.Result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// suggest song for poem
|
||||
/// </summary>
|
||||
|
||||
18
RMuseum/Models/Ganjoor/ViewModels/PoemVerseOrder.cs
Normal file
18
RMuseum/Models/Ganjoor/ViewModels/PoemVerseOrder.cs
Normal file
@ -0,0 +1,18 @@
|
||||
namespace RMuseum.Models.Ganjoor.ViewModels
|
||||
{
|
||||
/// <summary>
|
||||
/// poem + verse order
|
||||
/// </summary>
|
||||
public class PoemVerseOrder
|
||||
{
|
||||
/// <summary>
|
||||
/// poem id
|
||||
/// </summary>
|
||||
public int PoemId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// verse order
|
||||
/// </summary>
|
||||
public int VOrder { get; set; }
|
||||
}
|
||||
}
|
||||
@ -979,6 +979,13 @@
|
||||
<param name="correction"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.BreakPoemAsync(RMuseum.Models.Ganjoor.ViewModels.PoemVerseOrder)">
|
||||
<summary>
|
||||
break a poem from a verse forward
|
||||
</summary>
|
||||
<param name="verse"></param>
|
||||
<returns>id of new poem</returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.SuggestSong(RMuseum.Models.Ganjoor.ViewModels.PoemMusicTrackViewModel)">
|
||||
<summary>
|
||||
suggest song for poem
|
||||
@ -6599,6 +6606,21 @@
|
||||
alternate text
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:RMuseum.Models.Ganjoor.ViewModels.PoemVerseOrder">
|
||||
<summary>
|
||||
poem + verse order
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.ViewModels.PoemVerseOrder.PoemId">
|
||||
<summary>
|
||||
poem id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.ViewModels.PoemVerseOrder.VOrder">
|
||||
<summary>
|
||||
verse order
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:RMuseum.Models.Ganjoor.ViewModels.UserSongSuggestionsHistory">
|
||||
<summary>
|
||||
history of suggested songs by a user
|
||||
@ -8150,6 +8172,15 @@
|
||||
<param name="correction"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorService.BreakPoemAsync(System.Int32,System.Int32,System.Guid)">
|
||||
<summary>
|
||||
break a poem from a verse forward
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="vOrder"></param>
|
||||
<param name="userId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorService.GetNextUnreviewedSong(System.Int32,System.Guid)">
|
||||
<summary>
|
||||
next unreviewed track
|
||||
@ -8491,15 +8522,6 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorService.BreakPoemAsync(System.Int32,System.Int32,System.Guid)">
|
||||
<summary>
|
||||
break a poem from a verse forward
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="vOrder"></param>
|
||||
<param name="userId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:RMuseum.Services.IGanjoorTranslationService">
|
||||
<summary>
|
||||
translation service implementation
|
||||
@ -9879,6 +9901,15 @@
|
||||
<param name="moderation"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.BreakPoemAsync(System.Int32,System.Int32,System.Guid)">
|
||||
<summary>
|
||||
break a poem from a verse forward
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="vOrder"></param>
|
||||
<param name="userId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.SuggestSong(System.Guid,RMuseum.Models.Ganjoor.ViewModels.PoemMusicTrackViewModel)">
|
||||
<summary>
|
||||
suggest song
|
||||
@ -10106,15 +10137,6 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.BreakPoemAsync(System.Int32,System.Int32,System.Guid)">
|
||||
<summary>
|
||||
break a poem from a verse forward
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="vOrder"></param>
|
||||
<param name="userId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:RMuseum.Services.Implementation.GanjoorService._context">
|
||||
<summary>
|
||||
Database Context
|
||||
|
||||
@ -213,6 +213,15 @@ namespace RMuseum.Services
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<GanjoorPoemCorrectionViewModel>> ModeratePoemCorrection(Guid userId, GanjoorPoemCorrectionViewModel correction);
|
||||
|
||||
/// <summary>
|
||||
/// break a poem from a verse forward
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<int>> BreakPoemAsync(int poemId, int vOrder, Guid userId);
|
||||
|
||||
/// <summary>
|
||||
/// next unreviewed track
|
||||
/// </summary>
|
||||
@ -557,13 +566,6 @@ namespace RMuseum.Services
|
||||
/// <returns></returns>
|
||||
RServiceResult<bool> StartUpdatingMundexPage(Guid editingUserId);
|
||||
|
||||
/// <summary>
|
||||
/// break a poem from a verse forward
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<int>> BreakPoemAsync(int poemId, int vOrder, Guid userId);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -1850,6 +1850,170 @@ namespace RMuseum.Services.Implementation
|
||||
return new RServiceResult<GanjoorPoemCorrectionViewModel>(moderation);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// break a poem from a verse forward
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<int>> BreakPoemAsync(int poemId, int vOrder, Guid userId)
|
||||
{
|
||||
try
|
||||
{
|
||||
var dbMainPoem = await _context.GanjoorPoems.Include(p => p.GanjoorMetre).Where(p => p.Id == poemId).SingleOrDefaultAsync();
|
||||
|
||||
GanjoorModifyPageViewModel pageViewModel = new GanjoorModifyPageViewModel()
|
||||
{
|
||||
Title = dbMainPoem.Title,
|
||||
UrlSlug = dbMainPoem.UrlSlug,
|
||||
OldTag = dbMainPoem.OldTag,
|
||||
OldTagPageUrl = dbMainPoem.OldTagPageUrl,
|
||||
RhymeLetters = dbMainPoem.RhymeLetters,
|
||||
Rhythm = dbMainPoem.GanjoorMetre == null ? null : dbMainPoem.GanjoorMetre.Rhythm,
|
||||
HtmlText = dbMainPoem.HtmlText,
|
||||
SourceName = dbMainPoem.SourceName,
|
||||
SourceUrlSlug = dbMainPoem.SourceUrlSlug,
|
||||
Note = "گام اول شکستن شعر به اشعار مجزا"
|
||||
};
|
||||
|
||||
var res = await UpdatePageAsync(poemId, userId, pageViewModel);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return new RServiceResult<int>(0, res.ExceptionString);
|
||||
|
||||
|
||||
var poem = (await GetPoemById(poemId, true, false, true, false, false, false, false, true, true)).Result;
|
||||
if (poem.Next != null)
|
||||
return new RServiceResult<int>(-1, "poem.Next != null");
|
||||
|
||||
if (poem.UrlSlug.IndexOf("sh") != 0)
|
||||
return new RServiceResult<int>(-1, "poem.UrlSlug.IndexOf(\"sh\") != 0");
|
||||
|
||||
if (!int.TryParse(poem.UrlSlug.Substring("sh".Length), out int slugNumber))
|
||||
return new RServiceResult<int>(-1, $"slug error: {poem.UrlSlug}");
|
||||
|
||||
var poemPage = await _context.GanjoorPages.Where(p => p.Id == poem.Id).SingleAsync();
|
||||
var parentPage = await _context.GanjoorPages.Where(p => p.Id == poemPage.ParentId).SingleAsync();
|
||||
|
||||
string nextPoemUrlSluf = $"sh{slugNumber + 1}";
|
||||
|
||||
var maxPoemId = await _context.GanjoorPoems.MaxAsync(p => p.Id);
|
||||
if (await _context.GanjoorPages.MaxAsync(p => p.Id) > maxPoemId)
|
||||
maxPoemId = await _context.GanjoorPages.MaxAsync(p => p.Id);
|
||||
var nextPoemId = 1 + maxPoemId;
|
||||
|
||||
string nextPoemTitle = $"بخش {(slugNumber + 1).ToPersianNumbers()}";
|
||||
|
||||
GanjoorPoem dbNewPoem = new GanjoorPoem()
|
||||
{
|
||||
Id = nextPoemId,
|
||||
CatId = poem.Category.Cat.Id,
|
||||
Title = nextPoemTitle,
|
||||
UrlSlug = nextPoemUrlSluf,
|
||||
FullTitle = $"{parentPage.FullTitle} » {nextPoemTitle}",
|
||||
FullUrl = $"{parentPage.FullUrl}/{nextPoemUrlSluf}",
|
||||
GanjoorMetreId = poem.GanjoorMetre == null ? null : poem.GanjoorMetre.Id,
|
||||
SourceName = poem.SourceName,
|
||||
SourceUrlSlug = poem.SourceUrlSlug
|
||||
};
|
||||
|
||||
|
||||
|
||||
var poemVerses = await _context.GanjoorVerses.Where(v => v.PoemId == poemId && v.VOrder >= vOrder).OrderBy(v => v.VOrder).ToListAsync();
|
||||
|
||||
for (int i = 0; i < poemVerses.Count; i++)
|
||||
{
|
||||
poemVerses[i].VOrder = i + 1;
|
||||
poemVerses[i].PoemId = nextPoemId;
|
||||
}
|
||||
|
||||
dbNewPoem.PlainText = PreparePlainText(poemVerses);
|
||||
dbNewPoem.HtmlText = PrepareHtmlText(poemVerses);
|
||||
|
||||
try
|
||||
{
|
||||
var poemRhymeLettersRes = LanguageUtils.FindRhyme(poemVerses);
|
||||
if (!string.IsNullOrEmpty(poemRhymeLettersRes.Rhyme))
|
||||
{
|
||||
dbNewPoem.RhymeLetters = poemRhymeLettersRes.Rhyme;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
_context.GanjoorPoems.Add(dbNewPoem);
|
||||
_context.GanjoorVerses.UpdateRange(poemVerses);
|
||||
|
||||
GanjoorPage dbPoemNewPage = new GanjoorPage()
|
||||
{
|
||||
Id = poemId,
|
||||
GanjoorPageType = GanjoorPageType.PoemPage,
|
||||
Published = false,
|
||||
PageOrder = -1,
|
||||
Title = dbNewPoem.Title,
|
||||
FullTitle = dbNewPoem.FullTitle,
|
||||
UrlSlug = dbNewPoem.UrlSlug,
|
||||
FullUrl = dbNewPoem.FullUrl,
|
||||
HtmlText = dbNewPoem.HtmlText,
|
||||
PoetId = parentPage.PoetId,
|
||||
CatId = poem.Category.Cat.Id,
|
||||
PoemId = poemId,
|
||||
PostDate = DateTime.Now,
|
||||
ParentId = parentPage.Id,
|
||||
};
|
||||
|
||||
_context.GanjoorPages.Add(dbPoemNewPage);
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
|
||||
GanjoorModifyPageViewModel afterUpdatePageViewModel = new GanjoorModifyPageViewModel()
|
||||
{
|
||||
Title = dbMainPoem.Title,
|
||||
UrlSlug = dbMainPoem.UrlSlug,
|
||||
OldTag = dbMainPoem.OldTag,
|
||||
OldTagPageUrl = dbMainPoem.OldTagPageUrl,
|
||||
RhymeLetters = dbMainPoem.RhymeLetters,
|
||||
Rhythm = dbMainPoem.GanjoorMetre == null ? null : dbMainPoem.GanjoorMetre.Rhythm,
|
||||
HtmlText = dbMainPoem.HtmlText,
|
||||
SourceName = dbMainPoem.SourceName,
|
||||
SourceUrlSlug = dbMainPoem.SourceUrlSlug,
|
||||
Note = "گام نهایی شکستن شعر به اشعار مجزا"
|
||||
};
|
||||
|
||||
var afterUpdatePoemVerses = await _context.GanjoorVerses.Where(v => v.PoemId == poemId).OrderBy(v => v.VOrder).ToListAsync();
|
||||
afterUpdatePageViewModel.HtmlText = PrepareHtmlText(afterUpdatePoemVerses);
|
||||
try
|
||||
{
|
||||
var newRhyme = LanguageUtils.FindRhyme(afterUpdatePoemVerses);
|
||||
if (!string.IsNullOrEmpty(newRhyme.Rhyme) &&
|
||||
(string.IsNullOrEmpty(dbMainPoem.RhymeLetters) || (!string.IsNullOrEmpty(dbMainPoem.RhymeLetters) && newRhyme.Rhyme.Length > dbMainPoem.RhymeLetters.Length))
|
||||
)
|
||||
{
|
||||
afterUpdatePageViewModel.RhymeLetters = newRhyme.Rhyme;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
var res2 = await UpdatePageAsync(poemId, userId, afterUpdatePageViewModel);
|
||||
if (!string.IsNullOrEmpty(res2.ExceptionString))
|
||||
return new RServiceResult<int>(0, res2.ExceptionString);
|
||||
|
||||
|
||||
|
||||
return new RServiceResult<int>(maxPoemId);
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return new RServiceResult<int>(0, exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// suggest song
|
||||
/// </summary>
|
||||
@ -3870,149 +4034,7 @@ namespace RMuseum.Services.Implementation
|
||||
return new RServiceResult<bool>(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// break a poem from a verse forward
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<int>> BreakPoemAsync(int poemId, int vOrder, Guid userId)
|
||||
{
|
||||
try
|
||||
{
|
||||
var poem = (await GetPoemById(poemId, true, false, true, false, false, false, false, true, true)).Result;
|
||||
if (poem.Next != null)
|
||||
return new RServiceResult<int>(-1, "poem.Next != null");
|
||||
|
||||
if(poem.UrlSlug.IndexOf("sh") != 0)
|
||||
return new RServiceResult<int>(-1, "poem.UrlSlug.IndexOf(\"sh\") != 0");
|
||||
|
||||
if(!int.TryParse(poem.UrlSlug.Substring("sh".Length), out int slugNumber))
|
||||
return new RServiceResult<int>(-1, $"slug error: {poem.UrlSlug}");
|
||||
|
||||
var poemPage = await _context.GanjoorPages.Where(p => p.Id == poem.Id).SingleAsync();
|
||||
var parentPage = await _context.GanjoorPages.Where(p => p.Id == poemPage.ParentId).SingleAsync();
|
||||
|
||||
string nextPoemUrlSluf = $"sh{slugNumber + 1}";
|
||||
|
||||
var maxPoemId = await _context.GanjoorPoems.MaxAsync(p => p.Id);
|
||||
if (await _context.GanjoorPages.MaxAsync(p => p.Id) > maxPoemId)
|
||||
maxPoemId = await _context.GanjoorPages.MaxAsync(p => p.Id);
|
||||
var nextPoemId = 1 + maxPoemId;
|
||||
|
||||
string nextPoemTitle = $"بخش {(slugNumber + 1).ToPersianNumbers()}";
|
||||
|
||||
GanjoorPoem dbPoem = new GanjoorPoem()
|
||||
{
|
||||
Id = nextPoemId,
|
||||
CatId = poem.Category.Cat.Id,
|
||||
Title = nextPoemTitle,
|
||||
UrlSlug = nextPoemUrlSluf,
|
||||
FullTitle = $"{parentPage.FullTitle} » {nextPoemTitle}",
|
||||
FullUrl = $"{parentPage.FullUrl}/{nextPoemUrlSluf}",
|
||||
GanjoorMetreId = poem.GanjoorMetre == null ? null : poem.GanjoorMetre.Id,
|
||||
SourceName = poem.SourceName,
|
||||
SourceUrlSlug = poem.SourceUrlSlug
|
||||
};
|
||||
|
||||
|
||||
|
||||
var poemVerses = await _context.GanjoorVerses.Where(v => v.PoemId == poemId && v.VOrder >= vOrder).OrderBy(v => v.VOrder).ToListAsync();
|
||||
|
||||
for (int i = 0; i < poemVerses.Count; i++)
|
||||
{
|
||||
poemVerses[i].VOrder = i + 1;
|
||||
poemVerses[i].PoemId = nextPoemId;
|
||||
}
|
||||
|
||||
dbPoem.PlainText = PreparePlainText(poemVerses);
|
||||
dbPoem.HtmlText = PrepareHtmlText(poemVerses);
|
||||
|
||||
try
|
||||
{
|
||||
var poemRhymeLettersRes = LanguageUtils.FindRhyme(poemVerses);
|
||||
if (!string.IsNullOrEmpty(poemRhymeLettersRes.Rhyme))
|
||||
{
|
||||
dbPoem.RhymeLetters = poemRhymeLettersRes.Rhyme;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
_context.GanjoorPoems.Add(dbPoem);
|
||||
_context.GanjoorVerses.UpdateRange(poemVerses);
|
||||
|
||||
GanjoorPage dbPoemPage = new GanjoorPage()
|
||||
{
|
||||
Id = poemId,
|
||||
GanjoorPageType = GanjoorPageType.PoemPage,
|
||||
Published = false,
|
||||
PageOrder = -1,
|
||||
Title = dbPoem.Title,
|
||||
FullTitle = dbPoem.FullTitle,
|
||||
UrlSlug = dbPoem.UrlSlug,
|
||||
FullUrl = dbPoem.FullUrl,
|
||||
HtmlText = dbPoem.HtmlText,
|
||||
PoetId = parentPage.PoetId,
|
||||
CatId = poem.Category.Cat.Id,
|
||||
PoemId = poemId,
|
||||
PostDate = DateTime.Now,
|
||||
ParentId = parentPage.Id,
|
||||
};
|
||||
|
||||
_context.GanjoorPages.Add(dbPoemPage);
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
var dbMainPoem = await _context.GanjoorPoems.Include(p => p.GanjoorMetre).Where(p => p.Id == poemId).SingleOrDefaultAsync();
|
||||
|
||||
GanjoorModifyPageViewModel pageViewModel = new GanjoorModifyPageViewModel()
|
||||
{
|
||||
Title = dbMainPoem.Title,
|
||||
UrlSlug = dbMainPoem.UrlSlug,
|
||||
OldTag = dbMainPoem.OldTag,
|
||||
OldTagPageUrl = dbMainPoem.OldTagPageUrl,
|
||||
RhymeLetters = dbMainPoem.RhymeLetters,
|
||||
Rhythm = dbMainPoem.GanjoorMetre == null ? null : dbMainPoem.GanjoorMetre.Rhythm,
|
||||
HtmlText = dbMainPoem.HtmlText,
|
||||
SourceName = dbMainPoem.SourceName,
|
||||
SourceUrlSlug = dbMainPoem.SourceUrlSlug,
|
||||
Note = "شکستن شعر به اشعار مجزا"
|
||||
};
|
||||
|
||||
var mainPoemVerses = await _context.GanjoorVerses.Where(v => v.PoemId == poemId).OrderBy(v => v.VOrder).ToListAsync();
|
||||
pageViewModel.HtmlText = PrepareHtmlText(mainPoemVerses);
|
||||
try
|
||||
{
|
||||
var newRhyme = LanguageUtils.FindRhyme(mainPoemVerses);
|
||||
if (!string.IsNullOrEmpty(newRhyme.Rhyme) &&
|
||||
(string.IsNullOrEmpty(dbPoem.RhymeLetters) || (!string.IsNullOrEmpty(dbPoem.RhymeLetters) && newRhyme.Rhyme.Length > dbPoem.RhymeLetters.Length))
|
||||
)
|
||||
{
|
||||
pageViewModel.RhymeLetters = newRhyme.Rhyme;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
var res = await UpdatePageAsync(poemId, userId, pageViewModel);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return new RServiceResult<int>(0, res.ExceptionString);
|
||||
|
||||
|
||||
|
||||
return new RServiceResult<int>(maxPoemId);
|
||||
}
|
||||
catch(Exception exp)
|
||||
{
|
||||
return new RServiceResult<int>(0, exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Database Context
|
||||
|
||||
Loading…
Reference in New Issue
Block a user