#208 bookmarking a verse
This commit is contained in:
parent
95ee23db2b
commit
4b753894a6
@ -649,14 +649,19 @@ namespace GanjooRazor.Pages
|
||||
|
||||
var comments = JArray.Parse(await response.Content.ReadAsStringAsync()).ToObject<List<GanjoorCommentSummaryViewModel>>();
|
||||
|
||||
bool isBookmarked = false;
|
||||
|
||||
if (!string.IsNullOrEmpty(Request.Cookies["UserId"]))
|
||||
if (Guid.TryParse(Request.Cookies["UserId"], out Guid userId))
|
||||
if (userId != Guid.Empty)
|
||||
foreach (GanjoorCommentSummaryViewModel comment in comments)
|
||||
{
|
||||
comment.MyComment = comment.UserId == userId;
|
||||
_markMyReplies(comment, userId);
|
||||
if (Guid.TryParse(Request.Cookies["UserId"], out Guid userId))
|
||||
if (userId != Guid.Empty)
|
||||
foreach (GanjoorCommentSummaryViewModel comment in comments)
|
||||
{
|
||||
comment.MyComment = comment.UserId == userId;
|
||||
_markMyReplies(comment, userId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
return new PartialViewResult()
|
||||
@ -669,10 +674,33 @@ namespace GanjooRazor.Pages
|
||||
PoemId = poemId,
|
||||
CoupletIndex = coupletIndex,
|
||||
LoggedIn = !string.IsNullOrEmpty(Request.Cookies["Token"]),
|
||||
Comments = comments
|
||||
Comments = comments,
|
||||
IsBookmarked = isBookmarked
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public async Task<IActionResult> OnPostSwitchBookmarkAsync(int poemId, int vOrder)
|
||||
{
|
||||
using (HttpClient secureClient = new HttpClient())
|
||||
{
|
||||
if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response))
|
||||
{
|
||||
HttpResponseMessage response = await secureClient.PostAsync(
|
||||
$"{APIRoot.Url}/api/ganjoor/bookmark/switch/{poemId}/{vOrder}", null);
|
||||
if (!response.IsSuccessStatusCode)
|
||||
{
|
||||
return new BadRequestObjectResult(JsonConvert.DeserializeObject<string>(await response.Content.ReadAsStringAsync()));
|
||||
}
|
||||
var res = await response.Content.ReadAsStringAsync();
|
||||
return new OkObjectResult(res != null);
|
||||
}
|
||||
else
|
||||
{
|
||||
return new BadRequestObjectResult("لطفا از گنجور خارج و مجددا به آن وارد شوید.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -402,6 +402,29 @@ function editCouplet(poemId, coupletIndex) {
|
||||
}
|
||||
|
||||
function switchBookmark(poemId, coupletIndex) {
|
||||
var vIndex = getVerseIndexFromCoupleIndex(coupletIndex);
|
||||
var iconElementId = 'bookmark-icon-' + String(coupletIndex);
|
||||
document.getElementById(iconElementId).innerHTML = (document.getElementById(iconElementId).innerHTML == 'star') ? 'star_border' : 'star';
|
||||
document.getElementById(iconElementId).innerHTML = 'star_half';
|
||||
var url = '/?handler=SwitchBookmark';
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: url,
|
||||
data: {
|
||||
poemId: poemId,
|
||||
vOrder: (vIndex + 1)
|
||||
},
|
||||
error: function (err) {
|
||||
alert(err)
|
||||
},
|
||||
success: function (isBookmarked) {
|
||||
if (isBookmarked == true) {
|
||||
document.getElementById(iconElementId).innerHTML = 'star';
|
||||
}
|
||||
else {
|
||||
document.getElementById(iconElementId).innerHTML = 'star_border';
|
||||
}
|
||||
},
|
||||
|
||||
});
|
||||
}
|
||||
@ -1887,17 +1887,17 @@ namespace RMuseum.Controllers
|
||||
/// bookmark verse
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="verseId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("bookmark/{poemId}/{verseId}")]
|
||||
[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 verseId)
|
||||
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, verseId, loggedOnUserId, RBookmarkType.Bookmark);
|
||||
RServiceResult<GanjoorUserBookmark> res = await _ganjoorService.BookmarkVerse(poemId, vOrder, loggedOnUserId, RBookmarkType.Bookmark);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
return Ok(res.Result);
|
||||
@ -1926,17 +1926,17 @@ namespace RMuseum.Controllers
|
||||
/// switch bookmark
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="verseId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("bookmark/switch/{poemId}/{verseId}")]
|
||||
[Route("bookmark/switch/{poemId}/{vOrder}")]
|
||||
[Authorize]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GanjoorUserBookmark))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
public async Task<IActionResult> SwitchBookmark(int poemId, int verseId)
|
||||
public async Task<IActionResult> SwitchBookmark(int poemId, int vOrder)
|
||||
{
|
||||
Guid loggedOnUserId = new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
|
||||
RServiceResult<GanjoorUserBookmark> res = await _ganjoorService.SwitchBookmarkVerse(poemId, verseId, loggedOnUserId, RBookmarkType.Bookmark);
|
||||
RServiceResult<GanjoorUserBookmark> res = await _ganjoorService.SwitchBookmarkVerse(poemId, vOrder, loggedOnUserId, RBookmarkType.Bookmark);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
return Ok(res.Result);
|
||||
@ -1946,17 +1946,17 @@ namespace RMuseum.Controllers
|
||||
/// fav poem
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="verseId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("fav/{poemId}/{verseId}")]
|
||||
[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 verseId)
|
||||
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, verseId, loggedOnUserId, RBookmarkType.Favorite);
|
||||
RServiceResult<GanjoorUserBookmark> res = await _ganjoorService.BookmarkVerse(poemId, vOrder, loggedOnUserId, RBookmarkType.Favorite);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
return Ok(res.Result);
|
||||
@ -2006,17 +2006,17 @@ namespace RMuseum.Controllers
|
||||
/// item bookmarks info
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="verseId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("bookmark/item/{itemId}")]
|
||||
[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 verseId)
|
||||
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, verseId, loggedOnUserId);
|
||||
RServiceResult<GanjoorUserBookmark[]> res = await _ganjoorService.GetVerseGanjoorUserBookmarks(poemId, vOrder, loggedOnUserId);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
return Ok(res.Result);
|
||||
|
||||
@ -1215,7 +1215,7 @@
|
||||
bookmark verse
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="verseId"></param>
|
||||
<param name="vOrder"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.DeleteBookmark(System.Guid)">
|
||||
@ -1230,7 +1230,7 @@
|
||||
switch bookmark
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="verseId"></param>
|
||||
<param name="vOrder"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.FavArtifact(System.Int32,System.Int32)">
|
||||
@ -1238,7 +1238,7 @@
|
||||
fav poem
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="verseId"></param>
|
||||
<param name="vOrder"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.GetPoemGanjoorUserBookmarks(System.Int32)">
|
||||
@ -1260,7 +1260,7 @@
|
||||
item bookmarks info
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="verseId"></param>
|
||||
<param name="vOrder"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.GetUserBookmarks(RSecurityBackend.Models.Generic.PagingParameterModel)">
|
||||
@ -8662,7 +8662,7 @@
|
||||
Bookmark Verse
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="verseId"></param>
|
||||
<param name="vOrder"></param>
|
||||
<param name="userId"></param>
|
||||
<param name="type"></param>
|
||||
<returns></returns>
|
||||
@ -8672,7 +8672,7 @@
|
||||
Switch Bookmark Verse
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="verseId"></param>
|
||||
<param name="vOrder"></param>
|
||||
<param name="userId"></param>
|
||||
<param name="type"></param>
|
||||
<returns></returns>
|
||||
@ -8691,7 +8691,7 @@
|
||||
get verse bookmarks
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="verseId"></param>
|
||||
<param name="vOrder"></param>
|
||||
<param name="userId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
@ -9759,7 +9759,7 @@
|
||||
Bookmark Verse
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="verseId"></param>
|
||||
<param name="vOrder"></param>
|
||||
<param name="userId"></param>
|
||||
<param name="type"></param>
|
||||
<returns></returns>
|
||||
@ -9769,7 +9769,7 @@
|
||||
Bookmark Verse
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="verseId"></param>
|
||||
<param name="vOrder"></param>
|
||||
<param name="userId"></param>
|
||||
<param name="type"></param>
|
||||
<returns></returns>
|
||||
@ -9788,7 +9788,7 @@
|
||||
get verse bookmarks
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="verseId"></param>
|
||||
<param name="vOrder"></param>
|
||||
<param name="userId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
|
||||
@ -571,21 +571,21 @@ namespace RMuseum.Services
|
||||
/// Bookmark Verse
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="verseId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<GanjoorUserBookmark>> BookmarkVerse(int poemId, int verseId, Guid userId, RBookmarkType type);
|
||||
Task<RServiceResult<GanjoorUserBookmark>> BookmarkVerse(int poemId, int vOrder, Guid userId, RBookmarkType type);
|
||||
|
||||
/// <summary>
|
||||
/// Switch Bookmark Verse
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="verseId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<GanjoorUserBookmark>> SwitchBookmarkVerse(int poemId, int verseId, Guid userId, RBookmarkType type);
|
||||
Task<RServiceResult<GanjoorUserBookmark>> SwitchBookmarkVerse(int poemId, int vOrder, Guid userId, RBookmarkType type);
|
||||
|
||||
/// <summary>
|
||||
/// get user ganjoor bookmarks
|
||||
@ -600,10 +600,10 @@ namespace RMuseum.Services
|
||||
/// get verse bookmarks
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="verseId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<GanjoorUserBookmark[]>> GetVerseGanjoorUserBookmarks(int poemId, int verseId, Guid userId);
|
||||
Task<RServiceResult<GanjoorUserBookmark[]>> GetVerseGanjoorUserBookmarks(int poemId, int vOrder, Guid userId);
|
||||
|
||||
/// <summary>
|
||||
/// delete user bookmark
|
||||
|
||||
@ -20,13 +20,14 @@ namespace RMuseum.Services.Implementation
|
||||
/// Bookmark Verse
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="verseId"></param>
|
||||
/// <param name="vOrder"></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)
|
||||
public async Task<RServiceResult<GanjoorUserBookmark>> SwitchBookmarkVerse(int poemId, int vOrder, Guid userId, RBookmarkType type)
|
||||
{
|
||||
var bookmark = await _context.GanjoorUserBookmarks.Where(b => b.UserId == userId && b.PoemId == poemId && b.VerseId == verseId && b.RBookmarkType == type).SingleOrDefaultAsync();
|
||||
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();
|
||||
if (bookmark != null)
|
||||
{
|
||||
var res = await DeleteGanjoorBookmark(bookmark.Id, userId);
|
||||
@ -37,7 +38,7 @@ namespace RMuseum.Services.Implementation
|
||||
}
|
||||
else
|
||||
{
|
||||
var res = await BookmarkVerse(poemId, verseId, userId, type);
|
||||
var res = await BookmarkVerse(poemId, vOrder, userId, type);
|
||||
if(!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return res;
|
||||
bookmark = res.Result;
|
||||
@ -50,13 +51,14 @@ namespace RMuseum.Services.Implementation
|
||||
/// Bookmark Verse
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="verseId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<GanjoorUserBookmark>> BookmarkVerse(int poemId, int verseId, Guid userId, RBookmarkType type)
|
||||
public async Task<RServiceResult<GanjoorUserBookmark>> BookmarkVerse(int poemId, int vOrder, Guid userId, RBookmarkType type)
|
||||
{
|
||||
if ((await _context.GanjoorUserBookmarks.Where(b => b.UserId == userId && b.PoemId == poemId && b.VerseId == verseId && b.RBookmarkType == type).SingleOrDefaultAsync()) != null)
|
||||
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)
|
||||
{
|
||||
return new RServiceResult<GanjoorUserBookmark>(null, "Artifact is already bookmarked/faved.");
|
||||
}
|
||||
@ -66,7 +68,7 @@ namespace RMuseum.Services.Implementation
|
||||
{
|
||||
UserId = userId,
|
||||
PoemId = poemId,
|
||||
VerseId = verseId,
|
||||
VerseId = verse.Id,
|
||||
RBookmarkType = type,
|
||||
DateTime = DateTime.Now,
|
||||
Note = ""
|
||||
@ -95,12 +97,13 @@ namespace RMuseum.Services.Implementation
|
||||
/// get verse bookmarks
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="verseId"></param>
|
||||
/// <param name="vOrder"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<GanjoorUserBookmark[]>> GetVerseGanjoorUserBookmarks(int poemId, int verseId, Guid userId)
|
||||
public async Task<RServiceResult<GanjoorUserBookmark[]>> GetVerseGanjoorUserBookmarks(int poemId, int vOrder, Guid userId)
|
||||
{
|
||||
GanjoorUserBookmark[] bookmarks = await _context.GanjoorUserBookmarks.Where(b => b.PoemId == poemId && b.VerseId == verseId && b.UserId == userId).ToArrayAsync();
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user