more generalized poem related images
This commit is contained in:
parent
e1d00095ca
commit
e5fe3a91ed
@ -215,11 +215,11 @@ namespace RMuseum.Controllers
|
|||||||
[HttpGet]
|
[HttpGet]
|
||||||
[Route("poem/{id}/images")]
|
[Route("poem/{id}/images")]
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GanjoorLinkViewModel[]))]
|
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(PoemRelatedImage[]))]
|
||||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||||
public async Task<IActionResult> GetPoemImages(int id)
|
public async Task<IActionResult> GetPoemImages(int id)
|
||||||
{
|
{
|
||||||
RServiceResult<GanjoorLinkViewModel[]> res =
|
RServiceResult<PoemRelatedImage[]> res =
|
||||||
await _ganjoorService.GetPoemImages(id);
|
await _ganjoorService.GetPoemImages(id);
|
||||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||||
return BadRequest(res.ExceptionString);
|
return BadRequest(res.ExceptionString);
|
||||||
|
|||||||
@ -71,6 +71,6 @@ namespace RMuseum.Models.Ganjoor.ViewModels
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Images
|
/// Images
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public GanjoorLinkViewModel[] Images { get; set; }
|
public PoemRelatedImage[] Images { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
49
RMuseum/Models/Ganjoor/ViewModels/PoemRelatedImage.cs
Normal file
49
RMuseum/Models/Ganjoor/ViewModels/PoemRelatedImage.cs
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
namespace RMuseum.Models.Ganjoor.ViewModels
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Related Image Type
|
||||||
|
/// </summary>
|
||||||
|
public enum PoemRelatedImageType
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// musueum.ganjoor.net link
|
||||||
|
/// </summary>
|
||||||
|
MuseumLink = 0,
|
||||||
|
/// <summary>
|
||||||
|
/// external link
|
||||||
|
/// </summary>
|
||||||
|
ExternalLink = 1
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Poem Related Images
|
||||||
|
/// </summary>
|
||||||
|
public class PoemRelatedImage
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Image Order
|
||||||
|
/// </summary>
|
||||||
|
public int ImageOrder { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// poem related image type
|
||||||
|
/// </summary>
|
||||||
|
public PoemRelatedImageType PoemRelatedImageType { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// thumbnail image url
|
||||||
|
/// </summary>
|
||||||
|
public string ThumbnailImageUrl { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// target page url
|
||||||
|
/// </summary>
|
||||||
|
public string TargetPageUrl { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// alternate text
|
||||||
|
/// </summary>
|
||||||
|
public string AltText { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -860,7 +860,18 @@
|
|||||||
</member>
|
</member>
|
||||||
<member name="M:RMuseum.Controllers.RecitationController.GetXMLContent(System.Int32)">
|
<member name="M:RMuseum.Controllers.RecitationController.GetXMLContent(System.Int32)">
|
||||||
<summary>
|
<summary>
|
||||||
get the corresponding xml file contemnts (xml) for the narration
|
get the corresponding xml file contents (xml) for the narration
|
||||||
|
</summary>
|
||||||
|
<remarks>
|
||||||
|
it could be protected (Authorized), but I guess I would have problems with available client components support,
|
||||||
|
so I preferred it to be anonymous, as it does not harm anybody I guess
|
||||||
|
</remarks>
|
||||||
|
<param name="id"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
|
<member name="M:RMuseum.Controllers.RecitationController.GetXMLFile(System.Int32)">
|
||||||
|
<summary>
|
||||||
|
get the corresponding xml file for the recitation
|
||||||
</summary>
|
</summary>
|
||||||
<remarks>
|
<remarks>
|
||||||
it could be protected (Authorized), but I guess I would have problems with available client components support,
|
it could be protected (Authorized), but I guess I would have problems with available client components support,
|
||||||
@ -2360,7 +2371,7 @@
|
|||||||
</member>
|
</member>
|
||||||
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.PublicRecitationViewModel.XmlText">
|
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.PublicRecitationViewModel.XmlText">
|
||||||
<summary>
|
<summary>
|
||||||
Xml Url
|
Xml Text, xml file url is https://ganjgah.ir/api/audio/file/{audio.Id}.xml
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.PublicRecitationViewModel.PlainText">
|
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.PublicRecitationViewModel.PlainText">
|
||||||
@ -3687,6 +3698,51 @@
|
|||||||
text
|
text
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:RMuseum.Models.Ganjoor.ViewModels.PoemRelatedImageType">
|
||||||
|
<summary>
|
||||||
|
Related Image Type
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:RMuseum.Models.Ganjoor.ViewModels.PoemRelatedImageType.MuseumLink">
|
||||||
|
<summary>
|
||||||
|
musueum.ganjoor.net link
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:RMuseum.Models.Ganjoor.ViewModels.PoemRelatedImageType.ExternalLink">
|
||||||
|
<summary>
|
||||||
|
external link
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="T:RMuseum.Models.Ganjoor.ViewModels.PoemRelatedImage">
|
||||||
|
<summary>
|
||||||
|
Poem Related Images
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RMuseum.Models.Ganjoor.ViewModels.PoemRelatedImage.ImageOrder">
|
||||||
|
<summary>
|
||||||
|
Image Order
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RMuseum.Models.Ganjoor.ViewModels.PoemRelatedImage.PoemRelatedImageType">
|
||||||
|
<summary>
|
||||||
|
poem related image type
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RMuseum.Models.Ganjoor.ViewModels.PoemRelatedImage.ThumbnailImageUrl">
|
||||||
|
<summary>
|
||||||
|
thumbnail image url
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RMuseum.Models.Ganjoor.ViewModels.PoemRelatedImage.TargetPageUrl">
|
||||||
|
<summary>
|
||||||
|
target page url
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:RMuseum.Models.Ganjoor.ViewModels.PoemRelatedImage.AltText">
|
||||||
|
<summary>
|
||||||
|
alternate text
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="T:RMuseum.Models.ImportJob.ImportJob">
|
<member name="T:RMuseum.Models.ImportJob.ImportJob">
|
||||||
<summary>
|
<summary>
|
||||||
Import Job
|
Import Job
|
||||||
|
|||||||
@ -96,7 +96,7 @@ namespace RMuseum.Services
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="id"></param>
|
/// <param name="id"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<RServiceResult<GanjoorLinkViewModel[]>> GetPoemImages(int id);
|
Task<RServiceResult<PoemRelatedImage[]>> GetPoemImages(int id);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// get a random poem from hafez
|
/// get a random poem from hafez
|
||||||
|
|||||||
@ -325,11 +325,11 @@ namespace RMuseum.Services.Implementation
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="id"></param>
|
/// <param name="id"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public async Task<RServiceResult<GanjoorLinkViewModel[]>> GetPoemImages(int id)
|
public async Task<RServiceResult<PoemRelatedImage[]>> GetPoemImages(int id)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var source =
|
var museumSrc =
|
||||||
from link in _context.GanjoorLinks.Include(l => l.Artifact).Include(l => l.Item).ThenInclude(i => i.Images)
|
from link in _context.GanjoorLinks.Include(l => l.Artifact).Include(l => l.Item).ThenInclude(i => i.Images)
|
||||||
join poem in _context.GanjoorPoems
|
join poem in _context.GanjoorPoems
|
||||||
on link.GanjoorPostId equals poem.Id
|
on link.GanjoorPostId equals poem.Id
|
||||||
@ -338,24 +338,45 @@ namespace RMuseum.Services.Implementation
|
|||||||
&&
|
&&
|
||||||
poem.Id == id
|
poem.Id == id
|
||||||
orderby link.ReviewDate
|
orderby link.ReviewDate
|
||||||
select new GanjoorLinkViewModel()
|
select new PoemRelatedImage()
|
||||||
{
|
{
|
||||||
Id = link.Id,
|
PoemRelatedImageType = PoemRelatedImageType.MuseumLink,
|
||||||
GanjoorPostId = link.GanjoorPostId,
|
ThumbnailImageUrl = $"https://ganjgah.ir/api/images/thumb/{link.Item.Images.First().Id}.jpg",
|
||||||
GanjoorUrl = $"https://ganjoor.net{poem.FullUrl}",
|
TargetPageUrl = $"https://museum.ganjoor.net/items/{link.Artifact.FriendlyUrl}/{link.Item.FriendlyUrl}",
|
||||||
GanjoorTitle = poem.FullTitle,
|
AltText = $"{link.Artifact.Name} » {link.Item.Name}",
|
||||||
EntityName = $"{link.Artifact.Name} » {link.Item.Name}",
|
|
||||||
EntityFriendlyUrl = $"https://museum.ganjoor.net/items/{link.Artifact.FriendlyUrl}/{link.Item.FriendlyUrl}",
|
|
||||||
EntityImageId = link.Item.Images.First().Id,//the most important data field, image url is https://ganjgah.ir/api/images/thumb/{EntityImageId}.jpg
|
|
||||||
ReviewResult = link.ReviewResult,
|
|
||||||
Synchronized = link.Synchronized,
|
|
||||||
SuggestedBy = null //intentional (this is going to be used in an anonymous method)
|
|
||||||
};
|
};
|
||||||
return new RServiceResult<GanjoorLinkViewModel[]>(await source.ToArrayAsync());
|
List<PoemRelatedImage> museumImages = await museumSrc.ToListAsync();
|
||||||
|
|
||||||
|
var externalSrc =
|
||||||
|
from link in _context.PinterestLinks
|
||||||
|
join poem in _context.GanjoorPoems
|
||||||
|
on link.GanjoorPostId equals poem.Id
|
||||||
|
where
|
||||||
|
link.ReviewResult == Models.GanjoorIntegration.ReviewResult.Approved
|
||||||
|
&&
|
||||||
|
poem.Id == id
|
||||||
|
orderby link.ReviewDate
|
||||||
|
select new PoemRelatedImage()
|
||||||
|
{
|
||||||
|
PoemRelatedImageType = PoemRelatedImageType.ExternalLink,
|
||||||
|
ThumbnailImageUrl = $"https://ganjgah.ir/api/images/thumb/{link.Item.Images.First().Id}.jpg",
|
||||||
|
TargetPageUrl = $"https://museum.ganjoor.net/items/{link.Artifact.FriendlyUrl}/{link.Item.FriendlyUrl}",
|
||||||
|
AltText = link.AltText,
|
||||||
|
};
|
||||||
|
|
||||||
|
museumImages.AddRange(await externalSrc.ToListAsync());
|
||||||
|
|
||||||
|
for(int i=0; i<museumImages.Count; i++)
|
||||||
|
{
|
||||||
|
museumImages[i].ImageOrder = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return new RServiceResult<PoemRelatedImage[]>(museumImages.ToArray());
|
||||||
}
|
}
|
||||||
catch (Exception exp)
|
catch (Exception exp)
|
||||||
{
|
{
|
||||||
return new RServiceResult<GanjoorLinkViewModel[]>(null, exp.ToString());
|
return new RServiceResult<PoemRelatedImage[]>(null, exp.ToString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -512,7 +533,7 @@ namespace RMuseum.Services.Implementation
|
|||||||
rc = rcRes.Result;
|
rc = rcRes.Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
GanjoorLinkViewModel[] imgs = null;
|
PoemRelatedImage[] imgs = null;
|
||||||
if(images)
|
if(images)
|
||||||
{
|
{
|
||||||
var imgsRes = await GetPoemImages(id);
|
var imgsRes = await GetPoemImages(id);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user