docs: #288 API added for searching through museum artifacts and items
This commit is contained in:
parent
e58af6cd76
commit
13018f7380
@ -2000,6 +2000,54 @@ namespace RMuseum.Controllers
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// search artifacts
|
||||
/// </summary>
|
||||
/// <param name="paging"></param>
|
||||
/// <param name="term"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("search")]
|
||||
[AllowAnonymous]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable<RArtifactMasterRecord>))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
|
||||
public async Task<IActionResult> SearchArtifacts([FromQuery] PagingParameterModel paging, string term)
|
||||
{
|
||||
var pagedResult = await _artifactService.SearchArtifacts(paging, term);
|
||||
if (!string.IsNullOrEmpty(pagedResult.ExceptionString))
|
||||
return BadRequest(pagedResult.ExceptionString);
|
||||
|
||||
// Paging Header
|
||||
HttpContext.Response.Headers.Add("paging-headers", JsonConvert.SerializeObject(pagedResult.Result.PagingMeta));
|
||||
|
||||
return Ok(pagedResult.Result.Items);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// search artifact items
|
||||
/// </summary>
|
||||
/// <param name="paging"></param>
|
||||
/// <param name="term"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("search/items")]
|
||||
[AllowAnonymous]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable<RArtifactItemRecord>))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
|
||||
public async Task<IActionResult> SearchArtifactItems([FromQuery] PagingParameterModel paging, string term)
|
||||
{
|
||||
var pagedResult = await _artifactService.SearchArtifactItems(paging, term);
|
||||
if (!string.IsNullOrEmpty(pagedResult.ExceptionString))
|
||||
return BadRequest(pagedResult.ExceptionString);
|
||||
|
||||
// Paging Header
|
||||
HttpContext.Response.Headers.Add("paging-headers", JsonConvert.SerializeObject(pagedResult.Result.PagingMeta));
|
||||
|
||||
return Ok(pagedResult.Result.Items);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// readonly mode
|
||||
/// </summary>
|
||||
|
||||
@ -602,6 +602,22 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.ArtifactController.SearchArtifacts(RSecurityBackend.Models.Generic.PagingParameterModel,System.String)">
|
||||
<summary>
|
||||
search artifacts
|
||||
</summary>
|
||||
<param name="paging"></param>
|
||||
<param name="term"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.ArtifactController.SearchArtifactItems(RSecurityBackend.Models.Generic.PagingParameterModel,System.String)">
|
||||
<summary>
|
||||
search artifact items
|
||||
</summary>
|
||||
<param name="paging"></param>
|
||||
<param name="term"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="P:RMuseum.Controllers.ArtifactController.ReadOnlyMode">
|
||||
<summary>
|
||||
readonly mode
|
||||
@ -9977,6 +9993,22 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IArtifactService.SearchArtifacts(RSecurityBackend.Models.Generic.PagingParameterModel,System.String)">
|
||||
<summary>
|
||||
Search Artifacts
|
||||
</summary>
|
||||
<param name="paging"></param>
|
||||
<param name="term"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IArtifactService.SearchArtifactItems(RSecurityBackend.Models.Generic.PagingParameterModel,System.String)">
|
||||
<summary>
|
||||
search artifact items
|
||||
</summary>
|
||||
<param name="paging"></param>
|
||||
<param name="term"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:RMuseum.Services.IDonationService">
|
||||
<summary>
|
||||
donation service
|
||||
@ -11835,6 +11867,22 @@
|
||||
<param name="linkId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.ArtifactService.SearchArtifacts(RSecurityBackend.Models.Generic.PagingParameterModel,System.String)">
|
||||
<summary>
|
||||
Search Artifacts
|
||||
</summary>
|
||||
<param name="paging"></param>
|
||||
<param name="term"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.ArtifactService.SearchArtifactItems(RSecurityBackend.Models.Generic.PagingParameterModel,System.String)">
|
||||
<summary>
|
||||
search artifact items
|
||||
</summary>
|
||||
<param name="paging"></param>
|
||||
<param name="term"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:RMuseum.Services.Implementation.ArtifactService._context">
|
||||
<summary>
|
||||
Database Contetxt
|
||||
|
||||
@ -563,5 +563,21 @@ namespace RMuseum.Services
|
||||
/// <returns></returns>
|
||||
RServiceResult<bool> StartRemovingOriginalImages();
|
||||
|
||||
/// <summary>
|
||||
/// Search Artifacts
|
||||
/// </summary>
|
||||
/// <param name="paging"></param>
|
||||
/// <param name="term"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<(PaginationMetadata PagingMeta, RArtifactMasterRecord[] Items)>> SearchArtifacts(PagingParameterModel paging, string term);
|
||||
|
||||
/// <summary>
|
||||
/// search artifact items
|
||||
/// </summary>
|
||||
/// <param name="paging"></param>
|
||||
/// <param name="term"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<(PaginationMetadata PagingMeta, RArtifactItemRecord[] Items)>> SearchArtifactItems(PagingParameterModel paging, string term);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -25,6 +25,7 @@ using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using DNTPersianUtils.Core;
|
||||
|
||||
namespace RMuseum.Services.Implementation
|
||||
{
|
||||
@ -3184,6 +3185,85 @@ namespace RMuseum.Services.Implementation
|
||||
return new RServiceResult<bool>(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Search Artifacts
|
||||
/// </summary>
|
||||
/// <param name="paging"></param>
|
||||
/// <param name="term"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<(PaginationMetadata PagingMeta, RArtifactMasterRecord[] Items)>> SearchArtifacts(PagingParameterModel paging, string term)
|
||||
{
|
||||
term = term.Trim().ApplyCorrectYeKe();
|
||||
|
||||
if (string.IsNullOrEmpty(term))
|
||||
{
|
||||
return new RServiceResult<(PaginationMetadata PagingMeta, RArtifactMasterRecord[] Items)>((null, null), "خطای جستجوی عبارت خالی");
|
||||
}
|
||||
|
||||
term = term.Replace("", " ");//replace zwnj with space
|
||||
|
||||
var source =
|
||||
_context.Artifacts.AsNoTracking().Include(a => a.Tags).Include(a => a.CoverImage)
|
||||
.Where(p =>
|
||||
p.Name.Contains(term)
|
||||
||
|
||||
p.NameInEnglish.Contains(term)
|
||||
||
|
||||
p.Description.Contains(term)
|
||||
||
|
||||
p.DescriptionInEnglish.Contains(term)
|
||||
||
|
||||
p.Tags.Where(t => t.Value.Contains(term) || t.ValueInEnglish.Contains(term)).Any()
|
||||
);
|
||||
|
||||
|
||||
(PaginationMetadata PagingMeta, RArtifactMasterRecord[] Items) paginatedResult =
|
||||
await QueryablePaginator<RArtifactMasterRecord>.Paginate(source, paging);
|
||||
|
||||
|
||||
return new RServiceResult<(PaginationMetadata PagingMeta, RArtifactMasterRecord[] Items)>(paginatedResult);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// search artifact items
|
||||
/// </summary>
|
||||
/// <param name="paging"></param>
|
||||
/// <param name="term"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<(PaginationMetadata PagingMeta, RArtifactItemRecord[] Items)>> SearchArtifactItems(PagingParameterModel paging, string term)
|
||||
{
|
||||
term = term.Trim().ApplyCorrectYeKe();
|
||||
|
||||
if (string.IsNullOrEmpty(term))
|
||||
{
|
||||
return new RServiceResult<(PaginationMetadata PagingMeta, RArtifactItemRecord[] Items)>((null, null), "خطای جستجوی عبارت خالی");
|
||||
}
|
||||
|
||||
term = term.Replace("", " ");//replace zwnj with space
|
||||
|
||||
var source =
|
||||
_context.Items.AsNoTracking().Include(a => a.Tags).Include(a => a.Images)
|
||||
.Where(p =>
|
||||
p.Name.Contains(term)
|
||||
||
|
||||
p.NameInEnglish.Contains(term)
|
||||
||
|
||||
p.Description.Contains(term)
|
||||
||
|
||||
p.DescriptionInEnglish.Contains(term)
|
||||
||
|
||||
p.Tags.Where(t => t.Value.Contains(term) || t.ValueInEnglish.Contains(term)).Any()
|
||||
);
|
||||
|
||||
|
||||
(PaginationMetadata PagingMeta, RArtifactItemRecord[] Items) paginatedResult =
|
||||
await QueryablePaginator<RArtifactItemRecord>.Paginate(source, paging);
|
||||
|
||||
return new RServiceResult<(PaginationMetadata PagingMeta, RArtifactItemRecord[] Items)>(paginatedResult);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Database Contetxt
|
||||
/// </summary>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user