docs: #302 endpoint for retrieving the list of saved duplicates of a category poems
This commit is contained in:
parent
df81656953
commit
333f6f0b68
@ -2653,6 +2653,26 @@ namespace RMuseum.Controllers
|
||||
return Ok();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// list of category saved duplicated poems
|
||||
/// </summary>
|
||||
/// <param name="catId"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("duplicates/{catId}")]
|
||||
[Authorize(Policy = RMuseumSecurableItem.GanjoorEntityShortName + ":" + SecurableItem.ModifyOperationShortName)]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable<GanjoorDuplicateViewModel>))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||
public async Task<IActionResult> GetCategoryDuplicates(int catId)
|
||||
{
|
||||
var res =
|
||||
await _ganjoorService.GetCategoryDuplicates(catId);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
return Ok(res.Result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// readonly mode
|
||||
/// </summary>
|
||||
|
||||
@ -0,0 +1,48 @@
|
||||
namespace RMuseum.Models.Ganjoor.ViewModels
|
||||
{
|
||||
/// <summary>
|
||||
/// Ganjoor Duplicate View Model
|
||||
/// </summary>
|
||||
public class GanjoorDuplicateViewModel
|
||||
{
|
||||
/// <summary>
|
||||
/// Id
|
||||
/// </summary>
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Source Poem Id
|
||||
/// </summary>
|
||||
public int SrcPoemId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Source Poem cat + parent cats title + title
|
||||
/// </summary>
|
||||
public string SrcPoemFullTitle { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Source Poem sample: /hafez/ghazal/sh1
|
||||
/// </summary>
|
||||
public string SrcPoemFullUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Source Poem First Verse
|
||||
/// </summary>
|
||||
public string FirstVerse { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// destination poem id
|
||||
/// </summary>
|
||||
public int? DestPoemId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// destination Poem cat + parent cats title + title
|
||||
/// </summary>
|
||||
public string DestPoemFullTitle { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// destination Poem sample: /hafez/ghazal/sh1
|
||||
/// </summary>
|
||||
public string DestPoemFullUrl { get; set; }
|
||||
}
|
||||
}
|
||||
@ -1641,6 +1641,13 @@
|
||||
<param name="destCatId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.GetCategoryDuplicates(System.Int32)">
|
||||
<summary>
|
||||
list of category saved duplicated poems
|
||||
</summary>
|
||||
<param name="catId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="P:RMuseum.Controllers.GanjoorController.ReadOnlyMode">
|
||||
<summary>
|
||||
readonly mode
|
||||
@ -7789,6 +7796,51 @@
|
||||
total paragraphs
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:RMuseum.Models.Ganjoor.ViewModels.GanjoorDuplicateViewModel">
|
||||
<summary>
|
||||
Ganjoor Duplicate View Model
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorDuplicateViewModel.Id">
|
||||
<summary>
|
||||
Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorDuplicateViewModel.SrcPoemId">
|
||||
<summary>
|
||||
Source Poem Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorDuplicateViewModel.SrcPoemFullTitle">
|
||||
<summary>
|
||||
Source Poem cat + parent cats title + title
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorDuplicateViewModel.SrcPoemFullUrl">
|
||||
<summary>
|
||||
Source Poem sample: /hafez/ghazal/sh1
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorDuplicateViewModel.FirstVerse">
|
||||
<summary>
|
||||
Source Poem First Verse
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorDuplicateViewModel.DestPoemId">
|
||||
<summary>
|
||||
destination poem id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorDuplicateViewModel.DestPoemFullTitle">
|
||||
<summary>
|
||||
destination Poem cat + parent cats title + title
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorDuplicateViewModel.DestPoemFullUrl">
|
||||
<summary>
|
||||
destination Poem sample: /hafez/ghazal/sh1
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:RMuseum.Models.Ganjoor.ViewModels.GanjooRhymeAnalysisResult">
|
||||
<summary>
|
||||
Rhyme Analysis Result
|
||||
@ -11352,6 +11404,13 @@
|
||||
<param name="destCatId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorService.GetCategoryDuplicates(System.Int32)">
|
||||
<summary>
|
||||
list of category saved duplicated poems
|
||||
</summary>
|
||||
<param name="catId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:RMuseum.Services.IGanjoorTranslationService">
|
||||
<summary>
|
||||
translation service implementation
|
||||
@ -13607,6 +13666,13 @@
|
||||
<param name="id"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.GetCategoryDuplicates(System.Int32)">
|
||||
<summary>
|
||||
list of category saved duplicated poems
|
||||
</summary>
|
||||
<param name="catId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="P:RMuseum.Services.Implementation.GanjoorService.AggressiveCacheEnabled">
|
||||
<summary>
|
||||
aggressive cache
|
||||
|
||||
@ -862,5 +862,12 @@ namespace RMuseum.Services
|
||||
/// <param name="destCatId"></param>
|
||||
/// <returns></returns>
|
||||
RServiceResult<bool> StartFindingCategoryPoemsDuplicates(int srcCatId, int destCatId);
|
||||
|
||||
/// <summary>
|
||||
/// list of category saved duplicated poems
|
||||
/// </summary>
|
||||
/// <param name="catId"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<GanjoorDuplicateViewModel[]>> GetCategoryDuplicates(int catId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -3222,6 +3222,48 @@ namespace RMuseum.Services.Implementation
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// list of category saved duplicated poems
|
||||
/// </summary>
|
||||
/// <param name="catId"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<GanjoorDuplicateViewModel[]>> GetCategoryDuplicates(int catId)
|
||||
{
|
||||
try
|
||||
{
|
||||
List<GanjoorDuplicateViewModel> dups = new List<GanjoorDuplicateViewModel>();
|
||||
|
||||
var poems = await _context.GanjoorPoems.AsNoTracking().Where(p => p.CatId == catId).OrderBy(p => p.Id).ToListAsync();
|
||||
foreach (var poem in poems)
|
||||
{
|
||||
var firstVerse = await _context.GanjoorVerses.AsNoTracking().Where(v => v.PoemId == poem.Id).OrderBy(v => v.VOrder).FirstAsync();
|
||||
var dupPoem = await _context.GanjoorDuplicates.AsNoTracking().Where(d => d.SrcCatId == catId && d.SrcPoemId == poem.Id).FirstOrDefaultAsync();
|
||||
GanjoorPoem destPoem = dupPoem == null || dupPoem.DestPoemId == null ? null :
|
||||
await _context.GanjoorPoems.AsNoTracking().Where(p => p.Id == dupPoem.DestPoemId).SingleAsync();
|
||||
dups.Add
|
||||
(
|
||||
new GanjoorDuplicateViewModel()
|
||||
{
|
||||
Id = dupPoem == null ? 0 : dupPoem.Id,
|
||||
SrcPoemId = poem.Id,
|
||||
SrcPoemFullTitle = poem.FullTitle,
|
||||
SrcPoemFullUrl = poem.FullUrl,
|
||||
FirstVerse = firstVerse.Text,
|
||||
DestPoemId = dupPoem == null ? null : dupPoem.DestPoemId,
|
||||
DestPoemFullTitle = dupPoem == null ? "" : destPoem.FullTitle,
|
||||
DestPoemFullUrl = dupPoem == null ? "" : destPoem.FullUrl
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
return new RServiceResult<GanjoorDuplicateViewModel[]>(dups.ToArray());
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return new RServiceResult<GanjoorDuplicateViewModel[]>(null, exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// aggressive cache
|
||||
/// </summary>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user