#208 simplifying bookmaring api
This commit is contained in:
parent
08a492ceb9
commit
08ab7b6711
@ -1883,89 +1883,30 @@ namespace RMuseum.Controllers
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// bookmark verse
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("bookmark/{poemId}/{vOrder}")]
|
||||
[Authorize]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GanjoorUserBookmark))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
public async Task<IActionResult> BookmarkVerse(int poemId, int vOrder)
|
||||
{
|
||||
Guid loggedOnUserId = new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
|
||||
RServiceResult<GanjoorUserBookmark> res = await _ganjoorService.BookmarkVerse(poemId, vOrder, loggedOnUserId, RBookmarkType.Bookmark);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
return Ok(res.Result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// delete bookmark / fav / private note
|
||||
/// </summary>
|
||||
/// <param name="bookmarkId"></param>
|
||||
/// <returns></returns>
|
||||
[HttpDelete]
|
||||
[Route("bookmark/{bookmarkId}")]
|
||||
[Authorize]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK)]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
public async Task<IActionResult> DeleteBookmark(Guid bookmarkId)
|
||||
{
|
||||
Guid loggedOnUserId = new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
|
||||
RServiceResult<bool> res = await _ganjoorService.DeleteGanjoorBookmark(bookmarkId, loggedOnUserId);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
return Ok();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// switch bookmark
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <param name="coupletIndex"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("bookmark/switch/{poemId}/{vOrder}")]
|
||||
[Route("bookmark/switch/{poemId}/{coupletIndex}")]
|
||||
[Authorize]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GanjoorUserBookmark))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
public async Task<IActionResult> SwitchBookmark(int poemId, int vOrder)
|
||||
public async Task<IActionResult> SwitchCoupletBookmark(int poemId, int coupletIndex)
|
||||
{
|
||||
Guid loggedOnUserId = new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
|
||||
RServiceResult<GanjoorUserBookmark> res = await _ganjoorService.SwitchBookmarkVerse(poemId, vOrder, loggedOnUserId, RBookmarkType.Bookmark);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
return Ok(res.Result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// fav poem
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("fav/{poemId}/{vOrder}")]
|
||||
[Authorize]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GanjoorUserBookmark))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
public async Task<IActionResult> FavArtifact(int poemId, int vOrder)
|
||||
{
|
||||
Guid loggedOnUserId = new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
|
||||
RServiceResult<GanjoorUserBookmark> res = await _ganjoorService.BookmarkVerse(poemId, vOrder, loggedOnUserId, RBookmarkType.Favorite);
|
||||
RServiceResult<GanjoorUserBookmark> res = await _ganjoorService.SwitchCoupletBookmark(loggedOnUserId, poemId, coupletIndex);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
return Ok(res.Result);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// poem bookmarks info
|
||||
/// get poem user bookmarks
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <returns></returns>
|
||||
@ -1974,49 +1915,30 @@ namespace RMuseum.Controllers
|
||||
[Authorize]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GanjoorUserBookmark[]))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
public async Task<IActionResult> GetPoemGanjoorUserBookmarks(int poemId)
|
||||
public async Task<IActionResult> GetPoemUserBookmarks(int poemId)
|
||||
{
|
||||
Guid loggedOnUserId = new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
|
||||
RServiceResult<GanjoorUserBookmark[]> res = await _ganjoorService.GetPoemGanjoorUserBookmarks(poemId, loggedOnUserId, RBookmarkType.Bookmark);
|
||||
RServiceResult<GanjoorUserBookmark[]> res = await _ganjoorService.GetPoemUserBookmarks(loggedOnUserId, poemId);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
return Ok(res.Result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// poem fav info
|
||||
/// is the poem couplet is bookmarked by user
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="coupletIndex"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("fav/{poemId}")]
|
||||
[Route("bookmark/{poemId}/{coupletIndex}")]
|
||||
[Authorize]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GanjoorUserBookmark[]))]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(bool))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
public async Task<IActionResult> GetPoemGanjoorUserFavs(int poemId)
|
||||
public async Task<IActionResult> IsCoupletBookmarked(int poemId, int coupletIndex)
|
||||
{
|
||||
Guid loggedOnUserId = new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
|
||||
RServiceResult<GanjoorUserBookmark[]> res = await _ganjoorService.GetPoemGanjoorUserBookmarks(poemId, loggedOnUserId, RBookmarkType.Favorite);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
return Ok(res.Result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// item bookmarks info
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("bookmark/{poemId}/{vOrder}")]
|
||||
[Authorize]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GanjoorUserBookmark[]))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
public async Task<IActionResult> GetVerseGanjoorUserBookmarks(int poemId, int vOrder)
|
||||
{
|
||||
Guid loggedOnUserId = new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
|
||||
RServiceResult<GanjoorUserBookmark[]> res = await _ganjoorService.GetVerseGanjoorUserBookmarks(poemId, vOrder, loggedOnUserId);
|
||||
RServiceResult<bool> res = await _ganjoorService.IsCoupletBookmarked(loggedOnUserId, poemId, coupletIndex);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
return Ok(res.Result);
|
||||
@ -2035,28 +1957,7 @@ namespace RMuseum.Controllers
|
||||
{
|
||||
Guid loggedOnUserId = new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
|
||||
|
||||
RServiceResult<(PaginationMetadata PagingMeta, GanjoorUserBookmark[] Bookmarks)> res = await _ganjoorService.GetUserBookmarks(paging, loggedOnUserId, RBookmarkType.Bookmark);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
// Paging Header
|
||||
HttpContext.Response.Headers.Add("paging-headers", JsonConvert.SerializeObject(res.Result.PagingMeta));
|
||||
return Ok(res.Result.Bookmarks);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// user favorites
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("fav")]
|
||||
[Authorize]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GanjoorUserBookmark[]))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
public async Task<IActionResult> GetUserFavorites([FromQuery] PagingParameterModel paging)
|
||||
{
|
||||
Guid loggedOnUserId = new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
|
||||
|
||||
RServiceResult<(PaginationMetadata PagingMeta, GanjoorUserBookmark[] Bookmarks)> res = await _ganjoorService.GetUserBookmarks(paging, loggedOnUserId, RBookmarkType.Favorite);
|
||||
RServiceResult<(PaginationMetadata PagingMeta, GanjoorUserBookmark[] Bookmarks)> res = await _ganjoorService.GetUserBookmarks(paging, loggedOnUserId);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
// Paging Header
|
||||
|
||||
@ -1210,57 +1210,27 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.BookmarkVerse(System.Int32,System.Int32)">
|
||||
<summary>
|
||||
bookmark verse
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="vOrder"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.DeleteBookmark(System.Guid)">
|
||||
<summary>
|
||||
delete bookmark / fav / private note
|
||||
</summary>
|
||||
<param name="bookmarkId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.SwitchBookmark(System.Int32,System.Int32)">
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.SwitchCoupletBookmark(System.Int32,System.Int32)">
|
||||
<summary>
|
||||
switch bookmark
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="vOrder"></param>
|
||||
<param name="coupletIndex"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.FavArtifact(System.Int32,System.Int32)">
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.GetPoemUserBookmarks(System.Int32)">
|
||||
<summary>
|
||||
fav poem
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="vOrder"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.GetPoemGanjoorUserBookmarks(System.Int32)">
|
||||
<summary>
|
||||
poem bookmarks info
|
||||
get poem user bookmarks
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.GetPoemGanjoorUserFavs(System.Int32)">
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.IsCoupletBookmarked(System.Int32,System.Int32)">
|
||||
<summary>
|
||||
poem fav info
|
||||
is the poem couplet is bookmarked by user
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.GetVerseGanjoorUserBookmarks(System.Int32,System.Int32)">
|
||||
<summary>
|
||||
item bookmarks info
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="vOrder"></param>
|
||||
<param name="coupletIndex"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.GetUserBookmarks(RSecurityBackend.Models.Generic.PagingParameterModel)">
|
||||
@ -1269,12 +1239,6 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.GetUserFavorites(RSecurityBackend.Models.Generic.PagingParameterModel)">
|
||||
<summary>
|
||||
user favorites
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="P:RMuseum.Controllers.GanjoorController.ReadOnlyMode">
|
||||
<summary>
|
||||
readonly mode
|
||||
@ -8657,59 +8621,38 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorService.BookmarkVerse(System.Int32,System.Int32,System.Guid,RMuseum.Models.Bookmark.RBookmarkType)">
|
||||
<member name="M:RMuseum.Services.IGanjoorService.SwitchCoupletBookmark(System.Guid,System.Int32,System.Int32)">
|
||||
<summary>
|
||||
Bookmark Verse
|
||||
Switch Bookmark for couplet
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="vOrder"></param>
|
||||
<param name="userId"></param>
|
||||
<param name="type"></param>
|
||||
<param name="poemId"></param>
|
||||
<param name="coupletIndex"></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="vOrder"></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)">
|
||||
<member name="M:RMuseum.Services.IGanjoorService.GetPoemUserBookmarks(System.Guid,System.Int32)">
|
||||
<summary>
|
||||
get user ganjoor bookmarks
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="userId"></param>
|
||||
<param name="type"></param>
|
||||
<param name="poemId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorService.GetVerseGanjoorUserBookmarks(System.Int32,System.Int32,System.Guid)">
|
||||
<member name="M:RMuseum.Services.IGanjoorService.IsCoupletBookmarked(System.Guid,System.Int32,System.Int32)">
|
||||
<summary>
|
||||
get verse bookmarks
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="vOrder"></param>
|
||||
<param name="userId"></param>
|
||||
<param name="poemId"></param>
|
||||
<param name="coupletIndex"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorService.DeleteGanjoorBookmark(System.Guid,System.Guid)">
|
||||
<summary>
|
||||
delete user bookmark
|
||||
/// </summary>
|
||||
<param name="bookmarkId"></param>
|
||||
<param name="userId">to make sure a user can not delete another user's bookmarks</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorService.GetUserBookmarks(RSecurityBackend.Models.Generic.PagingParameterModel,System.Guid,RMuseum.Models.Bookmark.RBookmarkType)">
|
||||
<member name="M:RMuseum.Services.IGanjoorService.GetUserBookmarks(RSecurityBackend.Models.Generic.PagingParameterModel,System.Guid)">
|
||||
<summary>
|
||||
get user bookmarks (artifacts and items)
|
||||
</summary>
|
||||
<param name="paging"></param>
|
||||
<param name="userId"></param>
|
||||
<param name="type"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:RMuseum.Services.IGanjoorTranslationService">
|
||||
@ -9754,42 +9697,39 @@
|
||||
IGanjoorService implementation
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.SwitchBookmarkVerse(System.Int32,System.Int32,System.Guid,RMuseum.Models.Bookmark.RBookmarkType)">
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.SwitchCoupletBookmark(System.Guid,System.Int32,System.Int32)">
|
||||
<summary>
|
||||
Switch Bookmark for couplet
|
||||
</summary>
|
||||
<param name="userId"></param>
|
||||
<param name="poemId"></param>
|
||||
<param name="coupletIndex"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.BookmarkVerse(System.Int32,System.Int32,System.Guid)">
|
||||
<summary>
|
||||
Bookmark Verse
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="vOrder"></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
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="vOrder"></param>
|
||||
<param name="userId"></param>
|
||||
<param name="type"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.GetPoemGanjoorUserBookmarks(System.Int32,System.Guid,RMuseum.Models.Bookmark.RBookmarkType)">
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.GetPoemUserBookmarks(System.Guid,System.Int32)">
|
||||
<summary>
|
||||
get user ganjoor bookmarks
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="userId"></param>
|
||||
<param name="type"></param>
|
||||
<param name="poemId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.GetVerseGanjoorUserBookmarks(System.Int32,System.Int32,System.Guid)">
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.IsCoupletBookmarked(System.Guid,System.Int32,System.Int32)">
|
||||
<summary>
|
||||
get verse bookmarks
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="vOrder"></param>
|
||||
<param name="userId"></param>
|
||||
<param name="poemId"></param>
|
||||
<param name="coupletIndex"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.DeleteGanjoorBookmark(System.Guid,System.Guid)">
|
||||
@ -9800,13 +9740,12 @@
|
||||
<param name="userId">to make sure a user can not delete another user's bookmarks</param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.GetUserBookmarks(RSecurityBackend.Models.Generic.PagingParameterModel,System.Guid,RMuseum.Models.Bookmark.RBookmarkType)">
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.GetUserBookmarks(RSecurityBackend.Models.Generic.PagingParameterModel,System.Guid)">
|
||||
<summary>
|
||||
get user bookmarks (artifacts and items)
|
||||
</summary>
|
||||
<param name="paging"></param>
|
||||
<param name="userId"></param>
|
||||
<param name="type"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.StartUpdatingMundexPage(System.Guid)">
|
||||
|
||||
@ -567,59 +567,40 @@ namespace RMuseum.Services
|
||||
/// <returns></returns>
|
||||
RServiceResult<bool> StartUpdatingMundexPage(Guid editingUserId);
|
||||
|
||||
/// <summary>
|
||||
/// Bookmark Verse
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<GanjoorUserBookmark>> BookmarkVerse(int poemId, int vOrder, Guid userId, RBookmarkType type);
|
||||
|
||||
/// <summary>
|
||||
/// Switch Bookmark Verse
|
||||
/// Switch Bookmark for couplet
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="coupletIndex"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<GanjoorUserBookmark>> SwitchBookmarkVerse(int poemId, int vOrder, Guid userId, RBookmarkType type);
|
||||
Task<RServiceResult<GanjoorUserBookmark>> SwitchCoupletBookmark(Guid userId, int poemId, int coupletIndex);
|
||||
|
||||
/// <summary>
|
||||
/// get user ganjoor bookmarks
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <param name="poemId"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<GanjoorUserBookmark[]>> GetPoemGanjoorUserBookmarks(int poemId, Guid userId, RBookmarkType type);
|
||||
Task<RServiceResult<GanjoorUserBookmark[]>> GetPoemUserBookmarks(Guid userId, int poemId);
|
||||
|
||||
/// <summary>
|
||||
/// get verse bookmarks
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="coupletIndex"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<GanjoorUserBookmark[]>> GetVerseGanjoorUserBookmarks(int poemId, int vOrder, Guid userId);
|
||||
Task<RServiceResult<bool>> IsCoupletBookmarked(Guid userId, int poemId, int coupletIndex);
|
||||
|
||||
/// <summary>
|
||||
/// delete user bookmark
|
||||
/// /// </summary>
|
||||
/// <param name="bookmarkId"></param>
|
||||
/// <param name="userId">to make sure a user can not delete another user's bookmarks</param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<bool>> DeleteGanjoorBookmark(Guid bookmarkId, Guid userId);
|
||||
|
||||
/// <summary>
|
||||
/// get user bookmarks (artifacts and items)
|
||||
/// </summary>
|
||||
/// <param name="paging"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<(PaginationMetadata PagingMeta, GanjoorUserBookmark[] Bookmarks)>> GetUserBookmarks(PagingParameterModel paging, Guid userId, RBookmarkType type);
|
||||
Task<RServiceResult<(PaginationMetadata PagingMeta, GanjoorUserBookmark[] Bookmarks)>> GetUserBookmarks(PagingParameterModel paging, Guid userId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -17,17 +17,18 @@ namespace RMuseum.Services.Implementation
|
||||
public partial class GanjoorService : IGanjoorService
|
||||
{
|
||||
/// <summary>
|
||||
/// Bookmark Verse
|
||||
/// Switch Bookmark for couplet
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="coupletIndex"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<GanjoorUserBookmark>> SwitchBookmarkVerse(int poemId, int vOrder, Guid userId, RBookmarkType type)
|
||||
public async Task<RServiceResult<GanjoorUserBookmark>> SwitchCoupletBookmark(Guid userId, int poemId, int coupletIndex)
|
||||
{
|
||||
var verse = await _context.GanjoorVerses.Where(v => v.PoemId == poemId && v.VOrder == vOrder).SingleAsync();
|
||||
var bookmark = await _context.GanjoorUserBookmarks.Where(b => b.UserId == userId && b.PoemId == poemId && b.VerseId == verse.Id && b.RBookmarkType == type).SingleOrDefaultAsync();
|
||||
int? verseId = await _GetVerseIdFromCoupletIndex(poemId, coupletIndex);
|
||||
if (verseId == null)
|
||||
return new RServiceResult<GanjoorUserBookmark>(null, "verse not found");
|
||||
var bookmark = await _context.GanjoorUserBookmarks.Where(b => b.UserId == userId && b.PoemId == poemId && b.VerseId == verseId).SingleOrDefaultAsync();
|
||||
if (bookmark != null)
|
||||
{
|
||||
var res = await DeleteGanjoorBookmark(bookmark.Id, userId);
|
||||
@ -38,7 +39,7 @@ namespace RMuseum.Services.Implementation
|
||||
}
|
||||
else
|
||||
{
|
||||
var res = await BookmarkVerse(poemId, vOrder, userId, type);
|
||||
var res = await BookmarkVerse(poemId, (int)verseId, userId);
|
||||
if(!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return res;
|
||||
bookmark = res.Result;
|
||||
@ -51,16 +52,14 @@ namespace RMuseum.Services.Implementation
|
||||
/// Bookmark Verse
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <param name="verseId"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<GanjoorUserBookmark>> BookmarkVerse(int poemId, int vOrder, Guid userId, RBookmarkType type)
|
||||
public async Task<RServiceResult<GanjoorUserBookmark>> BookmarkVerse(int poemId, int verseId, Guid userId)
|
||||
{
|
||||
var verse = await _context.GanjoorVerses.Where(v => v.PoemId == poemId && v.VOrder == vOrder).SingleAsync();
|
||||
if ((await _context.GanjoorUserBookmarks.Where(b => b.UserId == userId && b.PoemId == poemId && b.VerseId == verse.Id && b.RBookmarkType == type).SingleOrDefaultAsync()) != null)
|
||||
if ((await _context.GanjoorUserBookmarks.Where(b => b.UserId == userId && b.PoemId == poemId && b.VerseId == verseId).SingleOrDefaultAsync()) != null)
|
||||
{
|
||||
return new RServiceResult<GanjoorUserBookmark>(null, "Artifact is already bookmarked/faved.");
|
||||
return new RServiceResult<GanjoorUserBookmark>(null, "Verse is already bookmarkeded.");
|
||||
}
|
||||
|
||||
GanjoorUserBookmark bookmark =
|
||||
@ -68,8 +67,7 @@ namespace RMuseum.Services.Implementation
|
||||
{
|
||||
UserId = userId,
|
||||
PoemId = poemId,
|
||||
VerseId = verse.Id,
|
||||
RBookmarkType = type,
|
||||
VerseId = verseId,
|
||||
DateTime = DateTime.Now,
|
||||
Note = ""
|
||||
};
|
||||
@ -83,28 +81,28 @@ namespace RMuseum.Services.Implementation
|
||||
/// <summary>
|
||||
/// get user ganjoor bookmarks
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <param name="poemId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<GanjoorUserBookmark[]>> GetPoemGanjoorUserBookmarks(int poemId, Guid userId, RBookmarkType type)
|
||||
public async Task<RServiceResult<GanjoorUserBookmark[]>> GetPoemUserBookmarks(Guid userId, int poemId)
|
||||
{
|
||||
GanjoorUserBookmark[] bookmarks = await _context.GanjoorUserBookmarks.Where(b => b.PoemId == poemId && b.UserId == userId && b.RBookmarkType == type).ToArrayAsync();
|
||||
GanjoorUserBookmark[] bookmarks = await _context.GanjoorUserBookmarks.Where(b => b.PoemId == poemId && b.UserId == userId).ToArrayAsync();
|
||||
return new RServiceResult<GanjoorUserBookmark[]>(bookmarks);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get verse bookmarks
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="coupletIndex"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<GanjoorUserBookmark[]>> GetVerseGanjoorUserBookmarks(int poemId, int vOrder, Guid userId)
|
||||
public async Task<RServiceResult<bool>> IsCoupletBookmarked(Guid userId, int poemId, int coupletIndex)
|
||||
{
|
||||
var verse = await _context.GanjoorVerses.Where(v => v.PoemId == poemId && v.VOrder == vOrder).SingleAsync();
|
||||
GanjoorUserBookmark[] bookmarks = await _context.GanjoorUserBookmarks.Where(b => b.PoemId == poemId && b.VerseId == verse.Id && b.UserId == userId).ToArrayAsync();
|
||||
return new RServiceResult<GanjoorUserBookmark[]>(bookmarks);
|
||||
int? verseId = await _GetVerseIdFromCoupletIndex(poemId, coupletIndex);
|
||||
if (verseId == null)
|
||||
return new RServiceResult<bool>(false, "verse not found");
|
||||
return new RServiceResult<bool>(await _context.GanjoorUserBookmarks.Where(b => b.PoemId == poemId && b.VerseId == verseId && b.UserId == userId).AnyAsync());
|
||||
}
|
||||
|
||||
|
||||
@ -131,15 +129,14 @@ namespace RMuseum.Services.Implementation
|
||||
/// </summary>
|
||||
/// <param name="paging"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<(PaginationMetadata PagingMeta, GanjoorUserBookmark[] Bookmarks)>> GetUserBookmarks(PagingParameterModel paging, Guid userId, RBookmarkType type)
|
||||
public async Task<RServiceResult<(PaginationMetadata PagingMeta, GanjoorUserBookmark[] Bookmarks)>> GetUserBookmarks(PagingParameterModel paging, Guid userId)
|
||||
{
|
||||
var source =
|
||||
_context.GanjoorUserBookmarks
|
||||
.Include(b => b.Poem)
|
||||
.Include(b => b.Verse)
|
||||
.Where(b => b.UserId == userId && b.RBookmarkType == type)
|
||||
.Where(b => b.UserId == userId)
|
||||
.OrderByDescending(b => b.DateTime)
|
||||
.AsQueryable();
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user