#208 adding switch bookmark api method

This commit is contained in:
Hamid Reza Mohammadi 2021-09-26 20:01:34 +03:30
parent acf2a62e2e
commit 95ee23db2b
4 changed files with 90 additions and 2 deletions

View File

@ -1894,7 +1894,7 @@ namespace RMuseum.Controllers
[Authorize]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GanjoorUserBookmark))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
public async Task<IActionResult> BookmarkArtifact(int poemId, int verseId)
public async Task<IActionResult> BookmarkVerse(int poemId, int verseId)
{
Guid loggedOnUserId = new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
RServiceResult<GanjoorUserBookmark> res = await _ganjoorService.BookmarkVerse(poemId, verseId, loggedOnUserId, RBookmarkType.Bookmark);
@ -1922,6 +1922,26 @@ namespace RMuseum.Controllers
return Ok();
}
/// <summary>
/// switch bookmark
/// </summary>
/// <param name="poemId"></param>
/// <param name="verseId"></param>
/// <returns></returns>
[HttpPost]
[Route("bookmark/switch/{poemId}/{verseId}")]
[Authorize]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GanjoorUserBookmark))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
public async Task<IActionResult> SwitchBookmark(int poemId, int verseId)
{
Guid loggedOnUserId = new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
RServiceResult<GanjoorUserBookmark> res = await _ganjoorService.SwitchBookmarkVerse(poemId, verseId, loggedOnUserId, RBookmarkType.Bookmark);
if (!string.IsNullOrEmpty(res.ExceptionString))
return BadRequest(res.ExceptionString);
return Ok(res.Result);
}
/// <summary>
/// fav poem
/// </summary>

View File

@ -1210,7 +1210,7 @@
</summary>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.GanjoorController.BookmarkArtifact(System.Int32,System.Int32)">
<member name="M:RMuseum.Controllers.GanjoorController.BookmarkVerse(System.Int32,System.Int32)">
<summary>
bookmark verse
</summary>
@ -1225,6 +1225,14 @@
<param name="bookmarkId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.GanjoorController.SwitchBookmark(System.Int32,System.Int32)">
<summary>
switch bookmark
</summary>
<param name="poemId"></param>
<param name="verseId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.GanjoorController.FavArtifact(System.Int32,System.Int32)">
<summary>
fav poem
@ -8659,6 +8667,16 @@
<param name="type"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IGanjoorService.SwitchBookmarkVerse(System.Int32,System.Int32,System.Guid,RMuseum.Models.Bookmark.RBookmarkType)">
<summary>
Switch Bookmark Verse
</summary>
<param name="poemId"></param>
<param name="verseId"></param>
<param name="userId"></param>
<param name="type"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IGanjoorService.GetPoemGanjoorUserBookmarks(System.Int32,System.Guid,RMuseum.Models.Bookmark.RBookmarkType)">
<summary>
get user ganjoor bookmarks
@ -9736,6 +9754,16 @@
IGanjoorService implementation
</summary>
</member>
<member name="M:RMuseum.Services.Implementation.GanjoorService.SwitchBookmarkVerse(System.Int32,System.Int32,System.Guid,RMuseum.Models.Bookmark.RBookmarkType)">
<summary>
Bookmark Verse
</summary>
<param name="poemId"></param>
<param name="verseId"></param>
<param name="userId"></param>
<param name="type"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementation.GanjoorService.BookmarkVerse(System.Int32,System.Int32,System.Guid,RMuseum.Models.Bookmark.RBookmarkType)">
<summary>
Bookmark Verse

View File

@ -577,6 +577,16 @@ namespace RMuseum.Services
/// <returns></returns>
Task<RServiceResult<GanjoorUserBookmark>> BookmarkVerse(int poemId, int verseId, Guid userId, RBookmarkType type);
/// <summary>
/// Switch Bookmark Verse
/// </summary>
/// <param name="poemId"></param>
/// <param name="verseId"></param>
/// <param name="userId"></param>
/// <param name="type"></param>
/// <returns></returns>
Task<RServiceResult<GanjoorUserBookmark>> SwitchBookmarkVerse(int poemId, int verseId, Guid userId, RBookmarkType type);
/// <summary>
/// get user ganjoor bookmarks
/// </summary>

View File

@ -16,6 +16,36 @@ namespace RMuseum.Services.Implementation
/// </summary>
public partial class GanjoorService : IGanjoorService
{
/// <summary>
/// Bookmark Verse
/// </summary>
/// <param name="poemId"></param>
/// <param name="verseId"></param>
/// <param name="userId"></param>
/// <param name="type"></param>
/// <returns></returns>
public async Task<RServiceResult<GanjoorUserBookmark>> SwitchBookmarkVerse(int poemId, int verseId, Guid userId, RBookmarkType type)
{
var bookmark = await _context.GanjoorUserBookmarks.Where(b => b.UserId == userId && b.PoemId == poemId && b.VerseId == verseId && b.RBookmarkType == type).SingleOrDefaultAsync();
if (bookmark != null)
{
var res = await DeleteGanjoorBookmark(bookmark.Id, userId);
if (!string.IsNullOrEmpty(res.ExceptionString))
return new RServiceResult<GanjoorUserBookmark>(null, res.ExceptionString);
bookmark = null;
}
else
{
var res = await BookmarkVerse(poemId, verseId, userId, type);
if(!string.IsNullOrEmpty(res.ExceptionString))
return res;
bookmark = res.Result;
}
return new RServiceResult<GanjoorUserBookmark>(bookmark);
}
/// <summary>
/// Bookmark Verse
/// </summary>