#208 bookmark related methods
This commit is contained in:
parent
6fc3497f6c
commit
798edb14e2
@ -334,6 +334,11 @@ namespace RMuseum.DbContext
|
||||
/// poem translations
|
||||
/// </summary>
|
||||
public DbSet<GanjoorPoemTranslation> GanjoorPoemTranslations { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// ganjoor bookmarks
|
||||
/// </summary>
|
||||
public DbSet<GanjoorUserBookmark> GanjoorUserBookmarks { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -12,6 +12,10 @@
|
||||
/// <summary>
|
||||
/// Public Favorite
|
||||
/// </summary>
|
||||
Favorite = 1
|
||||
Favorite = 1,
|
||||
/// <summary>
|
||||
/// Private Note (GanjoorComment)
|
||||
/// </summary>
|
||||
Note = 2
|
||||
}
|
||||
}
|
||||
|
||||
@ -7,7 +7,7 @@ namespace RMuseum.Models.Ganjoor
|
||||
/// <summary>
|
||||
/// Ganjoor Bookmark
|
||||
/// </summary>
|
||||
public class GanjoorBookmark
|
||||
public class GanjoorUserBookmark
|
||||
{
|
||||
/// <summary>
|
||||
/// Id
|
||||
@ -1916,6 +1916,11 @@
|
||||
poem translations
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.DbContext.RMuseumDbContext.GanjoorUserBookmarks">
|
||||
<summary>
|
||||
ganjoor bookmarks
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:RMuseum.Models.Accounting.DonationExpenditure">
|
||||
<summary>
|
||||
donation expenditures
|
||||
@ -2934,6 +2939,11 @@
|
||||
Public Favorite
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:RMuseum.Models.Bookmark.RBookmarkType.Note">
|
||||
<summary>
|
||||
Private Note (GanjoorComment)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:RMuseum.Models.Bookmark.RUserBookmark">
|
||||
<summary>
|
||||
User Bookmarks
|
||||
@ -4359,66 +4369,6 @@
|
||||
correction review result
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:RMuseum.Models.Ganjoor.GanjoorBookmark">
|
||||
<summary>
|
||||
Ganjoor Bookmark
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorBookmark.Id">
|
||||
<summary>
|
||||
Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorBookmark.UserId">
|
||||
<summary>
|
||||
User Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorBookmark.User">
|
||||
<summary>
|
||||
User
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorBookmark.PoemId">
|
||||
<summary>
|
||||
Poem Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorBookmark.Poem">
|
||||
<summary>
|
||||
Poem
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorBookmark.VerseId">
|
||||
<summary>
|
||||
Verse Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorBookmark.Verse">
|
||||
<summary>
|
||||
Verse
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorBookmark.DateTime">
|
||||
<summary>
|
||||
DateTime
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorBookmark.RBookmarkType">
|
||||
<summary>
|
||||
Type
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorBookmark.Rating">
|
||||
<summary>
|
||||
rating
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorBookmark.Note">
|
||||
<summary>
|
||||
User Note
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:RMuseum.Models.Ganjoor.GanjoorCat">
|
||||
<summary>
|
||||
Ganjoor Category
|
||||
@ -5293,6 +5243,66 @@
|
||||
ganjoor TOC options
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:RMuseum.Models.Ganjoor.GanjoorUserBookmark">
|
||||
<summary>
|
||||
Ganjoor Bookmark
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorUserBookmark.Id">
|
||||
<summary>
|
||||
Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorUserBookmark.UserId">
|
||||
<summary>
|
||||
User Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorUserBookmark.User">
|
||||
<summary>
|
||||
User
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorUserBookmark.PoemId">
|
||||
<summary>
|
||||
Poem Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorUserBookmark.Poem">
|
||||
<summary>
|
||||
Poem
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorUserBookmark.VerseId">
|
||||
<summary>
|
||||
Verse Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorUserBookmark.Verse">
|
||||
<summary>
|
||||
Verse
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorUserBookmark.DateTime">
|
||||
<summary>
|
||||
DateTime
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorUserBookmark.RBookmarkType">
|
||||
<summary>
|
||||
Type
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorUserBookmark.Rating">
|
||||
<summary>
|
||||
rating
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorUserBookmark.Note">
|
||||
<summary>
|
||||
User Note
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:RMuseum.Models.Ganjoor.GanjoorVerse">
|
||||
<summary>
|
||||
Ganjoor Verse
|
||||
@ -8582,6 +8592,51 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorService.BookmarkVerse(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.IGanjoorService.GetPoemGanjoorUserBookmarks(System.Int32,System.Guid,RMuseum.Models.Bookmark.RBookmarkType)">
|
||||
<summary>
|
||||
get user ganjoor bookmarks
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="userId"></param>
|
||||
<param name="type"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorService.GetVerseGanjoorUserBookmarks(System.Int32,System.Int32,System.Guid)">
|
||||
<summary>
|
||||
get verse bookmarks
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="verseId"></param>
|
||||
<param name="userId"></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.GetBookmarks(RSecurityBackend.Models.Generic.PagingParameterModel,System.Guid,RMuseum.Models.Bookmark.RBookmarkType)">
|
||||
<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">
|
||||
<summary>
|
||||
translation service implementation
|
||||
@ -9620,6 +9675,54 @@
|
||||
<summary>
|
||||
IGanjoorService implementation
|
||||
</summary>
|
||||
<summary>
|
||||
IGanjoorService implementation
|
||||
</summary>
|
||||
</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="verseId"></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)">
|
||||
<summary>
|
||||
get user ganjoor bookmarks
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="userId"></param>
|
||||
<param name="type"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.GetVerseGanjoorUserBookmarks(System.Int32,System.Int32,System.Guid)">
|
||||
<summary>
|
||||
get verse bookmarks
|
||||
</summary>
|
||||
<param name="poemId"></param>
|
||||
<param name="verseId"></param>
|
||||
<param name="userId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.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.Implementation.GanjoorService.GetBookmarks(RSecurityBackend.Models.Generic.PagingParameterModel,System.Guid,RMuseum.Models.Bookmark.RBookmarkType)">
|
||||
<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)">
|
||||
<summary>
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using RMuseum.Models.Bookmark;
|
||||
using RMuseum.Models.Ganjoor;
|
||||
using RMuseum.Models.Ganjoor.ViewModels;
|
||||
using RMuseum.Models.GanjoorAudio.ViewModels;
|
||||
@ -566,6 +567,49 @@ namespace RMuseum.Services
|
||||
/// <returns></returns>
|
||||
RServiceResult<bool> StartUpdatingMundexPage(Guid editingUserId);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Bookmark Verse
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="verseId"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<GanjoorUserBookmark>> BookmarkVerse(int poemId, int verseId, Guid userId, RBookmarkType type);
|
||||
|
||||
/// <summary>
|
||||
/// get user ganjoor bookmarks
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<GanjoorUserBookmark[]>> GetPoemGanjoorUserBookmarks(int poemId, Guid userId, RBookmarkType type);
|
||||
|
||||
/// <summary>
|
||||
/// get verse bookmarks
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="verseId"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<GanjoorUserBookmark[]>> GetVerseGanjoorUserBookmarks(int poemId, int verseId, Guid userId);
|
||||
|
||||
/// <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)>> GetBookmarks(PagingParameterModel paging, Guid userId, RBookmarkType type);
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,121 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using RMuseum.Models.Ganjoor;
|
||||
using RSecurityBackend.Models.Generic;
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using RMuseum.Models.Artifact;
|
||||
using RSecurityBackend.Services.Implementation;
|
||||
using RMuseum.Models.Bookmark;
|
||||
|
||||
namespace RMuseum.Services.Implementation
|
||||
{
|
||||
/// <summary>
|
||||
/// IGanjoorService 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>> BookmarkVerse(int poemId, int verseId, Guid userId, RBookmarkType type)
|
||||
{
|
||||
if ((await _context.GanjoorUserBookmarks.Where(b => b.UserId == userId && b.PoemId == poemId && b.VerseId == verseId && b.RBookmarkType == type).SingleOrDefaultAsync()) != null)
|
||||
{
|
||||
return new RServiceResult<GanjoorUserBookmark>(null, "Artifact is already bookmarked/faved.");
|
||||
}
|
||||
|
||||
GanjoorUserBookmark bookmark =
|
||||
new GanjoorUserBookmark()
|
||||
{
|
||||
UserId = userId,
|
||||
PoemId = poemId,
|
||||
VerseId = verseId,
|
||||
RBookmarkType = type,
|
||||
DateTime = DateTime.Now,
|
||||
Note = ""
|
||||
};
|
||||
|
||||
_context.GanjoorUserBookmarks.Add(bookmark);
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
return new RServiceResult<GanjoorUserBookmark>(bookmark);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get user ganjoor bookmarks
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<GanjoorUserBookmark[]>> GetPoemGanjoorUserBookmarks(int poemId, Guid userId, RBookmarkType type)
|
||||
{
|
||||
GanjoorUserBookmark[] bookmarks = await _context.GanjoorUserBookmarks.Where(b => b.PoemId == poemId && b.UserId == userId && b.RBookmarkType == type).ToArrayAsync();
|
||||
return new RServiceResult<GanjoorUserBookmark[]>(bookmarks);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get verse bookmarks
|
||||
/// </summary>
|
||||
/// <param name="poemId"></param>
|
||||
/// <param name="verseId"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<GanjoorUserBookmark[]>> GetVerseGanjoorUserBookmarks(int poemId, int verseId, Guid userId)
|
||||
{
|
||||
GanjoorUserBookmark[] bookmarks = await _context.GanjoorUserBookmarks.Where(b => b.PoemId == poemId && b.VerseId == verseId && b.UserId == userId).ToArrayAsync();
|
||||
return new RServiceResult<GanjoorUserBookmark[]>(bookmarks);
|
||||
}
|
||||
|
||||
|
||||
/// <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>
|
||||
public async Task<RServiceResult<bool>> DeleteGanjoorBookmark(Guid bookmarkId, Guid userId)
|
||||
{
|
||||
GanjoorUserBookmark bookmark = await _context.GanjoorUserBookmarks.Where(b => b.Id == bookmarkId && b.UserId == userId).SingleOrDefaultAsync();
|
||||
if (bookmark == null)
|
||||
{
|
||||
return new RServiceResult<bool>(false, "bookmark not found");
|
||||
}
|
||||
_context.GanjoorUserBookmarks.Remove(bookmark);
|
||||
await _context.SaveChangesAsync();
|
||||
return new RServiceResult<bool>(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get user bookmarks (artifacts and items)
|
||||
/// </summary>
|
||||
/// <param name="paging"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="type"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<(PaginationMetadata PagingMeta, GanjoorUserBookmark[] Bookmarks)>> GetBookmarks(PagingParameterModel paging, Guid userId, RBookmarkType type)
|
||||
{
|
||||
var source =
|
||||
_context.GanjoorUserBookmarks
|
||||
.Include(b => b.Poem)
|
||||
.Include(b => b.Verse)
|
||||
.Where(b => b.UserId == userId && b.RBookmarkType == type)
|
||||
.OrderByDescending(b => b.DateTime)
|
||||
.AsQueryable();
|
||||
|
||||
(PaginationMetadata PagingMeta, GanjoorUserBookmark[] Bookmarks) paginatedResult =
|
||||
await QueryablePaginator<GanjoorUserBookmark>.Paginate(source, paging);
|
||||
|
||||
|
||||
|
||||
return new RServiceResult<(PaginationMetadata PagingMeta, GanjoorUserBookmark[] Bookmarks)>(paginatedResult);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user