Merge pull request #78 from imanabidi/main
SearchVersesByQuery service added
This commit is contained in:
commit
da8d7006db
@ -601,6 +601,29 @@ namespace RMuseum.Controllers
|
||||
return BadRequest(res.ExceptionString);
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Search Verses By query
|
||||
/// </summary>
|
||||
/// <param name="query"></param>
|
||||
/// <param name="poetId"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("verse/search")]
|
||||
[AllowAnonymous]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GanjoorSearchVerseViewModel[]))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||
public async Task<IActionResult> SearchVersesByQuery(string query, int poetId = 0)
|
||||
{
|
||||
RServiceResult<GanjoorSearchVerseViewModel[]> res = await _ganjoorService.SearchVersesByQuery(query, poetId);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
if (res.Result == null)
|
||||
return NotFound();
|
||||
return Ok(res.Result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ganjoor Service
|
||||
/// </summary>
|
||||
|
||||
@ -0,0 +1,36 @@
|
||||
namespace RMuseum.Models.Ganjoor.ViewModels
|
||||
{
|
||||
/// <summary>
|
||||
/// Ganjoor Verse View Model
|
||||
/// </summary>
|
||||
public class GanjoorSearchVerseViewModel
|
||||
{
|
||||
/// <summary>
|
||||
/// global id, auto generated (missing in Ganjoor Desktop database)
|
||||
/// </summary>
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// vorder
|
||||
/// </summary>
|
||||
public int VOrder { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// position
|
||||
/// </summary>
|
||||
public VersePosition VersePosition { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// text
|
||||
/// </summary>
|
||||
public string Text { get; set; }
|
||||
|
||||
public int? PoemId { get; set; }
|
||||
|
||||
public string PoemFullTitle { get; set; }
|
||||
|
||||
public string PoemFullUrl { get; set; }
|
||||
|
||||
public int PoetId { get; set; }
|
||||
}
|
||||
}
|
||||
@ -799,6 +799,14 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.SearchVersesByQuery(System.String,System.Int32)">
|
||||
<summary>
|
||||
Search Verses By query
|
||||
</summary>
|
||||
<param name="query"></param>
|
||||
<param name="poetId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:RMuseum.Controllers.GanjoorController._ganjoorService">
|
||||
<summary>
|
||||
Ganjoor Service
|
||||
@ -4550,6 +4558,31 @@
|
||||
root cat id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:RMuseum.Models.Ganjoor.ViewModels.GanjoorSearchVerseViewModel">
|
||||
<summary>
|
||||
Ganjoor Verse View Model
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorSearchVerseViewModel.Id">
|
||||
<summary>
|
||||
global id, auto generated (missing in Ganjoor Desktop database)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorSearchVerseViewModel.VOrder">
|
||||
<summary>
|
||||
vorder
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorSearchVerseViewModel.VersePosition">
|
||||
<summary>
|
||||
position
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorSearchVerseViewModel.Text">
|
||||
<summary>
|
||||
text
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:RMuseum.Models.Ganjoor.ViewModels.GanjoorVerseViewModel">
|
||||
<summary>
|
||||
Ganjoor Verse View Model
|
||||
@ -6112,6 +6145,14 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorService.SearchVersesByQuery(System.String,System.Int32)">
|
||||
<summary>
|
||||
Search Verses By query
|
||||
</summary>
|
||||
<param name="query"></param>
|
||||
<param name="poetId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:RMuseum.Services.Implementation.ArtifactService">
|
||||
<summary>
|
||||
IArtifactService implementation
|
||||
|
||||
@ -212,5 +212,15 @@ namespace RMuseum.Services
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
RServiceResult<bool> ImportFromMySql();
|
||||
|
||||
/// <summary>
|
||||
/// Search Verses By query
|
||||
/// </summary>
|
||||
/// <param name="query"></param>
|
||||
/// <param name="poetId"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<GanjoorSearchVerseViewModel[]>> SearchVersesByQuery(string query, int poetId = 0);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -1386,9 +1386,42 @@ namespace RMuseum.Services.Implementation
|
||||
return new RServiceResult<GanjoorPoemCompleteViewModel>(null, exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public async Task<RServiceResult<GanjoorSearchVerseViewModel[]>> SearchVersesByQuery(string query, int poetId = 0)
|
||||
{
|
||||
try
|
||||
{
|
||||
var versesQ = _context.GanjoorVerses.Include(v => v.Poem).ThenInclude(p => p.Cat)
|
||||
.Where(v => v.Text.Contains(query));
|
||||
|
||||
if (poetId != 0)
|
||||
{
|
||||
versesQ = versesQ.Where(v => v.Poem.Cat.PoetId == poetId);
|
||||
}
|
||||
|
||||
var verses = await versesQ.Select
|
||||
(
|
||||
v => new GanjoorSearchVerseViewModel
|
||||
{
|
||||
Id = v.Id,
|
||||
VOrder = v.VOrder,
|
||||
VersePosition = v.VersePosition,
|
||||
Text = v.Text,
|
||||
PoemId = v.PoemId,
|
||||
PoetId = v.Poem.Cat.PoetId,
|
||||
PoemFullTitle = v.Poem.FullTitle,
|
||||
PoemFullUrl = v.Poem.FullUrl,
|
||||
}
|
||||
).Take(50).ToArrayAsync();
|
||||
|
||||
return new RServiceResult<GanjoorSearchVerseViewModel[]>(verses);
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return new RServiceResult<GanjoorSearchVerseViewModel[]>(null, exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Database Contetxt
|
||||
/// </summary>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user