more generalized poem related images
This commit is contained in:
parent
e1d00095ca
commit
e5fe3a91ed
@ -215,11 +215,11 @@ namespace RMuseum.Controllers
|
||||
[HttpGet]
|
||||
[Route("poem/{id}/images")]
|
||||
[AllowAnonymous]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GanjoorLinkViewModel[]))]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(PoemRelatedImage[]))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
public async Task<IActionResult> GetPoemImages(int id)
|
||||
{
|
||||
RServiceResult<GanjoorLinkViewModel[]> res =
|
||||
RServiceResult<PoemRelatedImage[]> res =
|
||||
await _ganjoorService.GetPoemImages(id);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
|
||||
@ -71,6 +71,6 @@ namespace RMuseum.Models.Ganjoor.ViewModels
|
||||
/// <summary>
|
||||
/// Images
|
||||
/// </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 name="M:RMuseum.Controllers.RecitationController.GetXMLContent(System.Int32)">
|
||||
<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>
|
||||
<remarks>
|
||||
it could be protected (Authorized), but I guess I would have problems with available client components support,
|
||||
@ -2360,7 +2371,7 @@
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.PublicRecitationViewModel.XmlText">
|
||||
<summary>
|
||||
Xml Url
|
||||
Xml Text, xml file url is https://ganjgah.ir/api/audio/file/{audio.Id}.xml
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.PublicRecitationViewModel.PlainText">
|
||||
@ -3687,6 +3698,51 @@
|
||||
text
|
||||
</summary>
|
||||
</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">
|
||||
<summary>
|
||||
Import Job
|
||||
|
||||
@ -96,7 +96,7 @@ namespace RMuseum.Services
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<GanjoorLinkViewModel[]>> GetPoemImages(int id);
|
||||
Task<RServiceResult<PoemRelatedImage[]>> GetPoemImages(int id);
|
||||
|
||||
/// <summary>
|
||||
/// get a random poem from hafez
|
||||
|
||||
@ -325,11 +325,11 @@ namespace RMuseum.Services.Implementation
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<GanjoorLinkViewModel[]>> GetPoemImages(int id)
|
||||
public async Task<RServiceResult<PoemRelatedImage[]>> GetPoemImages(int id)
|
||||
{
|
||||
try
|
||||
{
|
||||
var source =
|
||||
var museumSrc =
|
||||
from link in _context.GanjoorLinks.Include(l => l.Artifact).Include(l => l.Item).ThenInclude(i => i.Images)
|
||||
join poem in _context.GanjoorPoems
|
||||
on link.GanjoorPostId equals poem.Id
|
||||
@ -338,24 +338,45 @@ namespace RMuseum.Services.Implementation
|
||||
&&
|
||||
poem.Id == id
|
||||
orderby link.ReviewDate
|
||||
select new GanjoorLinkViewModel()
|
||||
select new PoemRelatedImage()
|
||||
{
|
||||
Id = link.Id,
|
||||
GanjoorPostId = link.GanjoorPostId,
|
||||
GanjoorUrl = $"https://ganjoor.net{poem.FullUrl}",
|
||||
GanjoorTitle = poem.FullTitle,
|
||||
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)
|
||||
PoemRelatedImageType = PoemRelatedImageType.MuseumLink,
|
||||
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.Artifact.Name} » {link.Item.Name}",
|
||||
};
|
||||
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)
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
GanjoorLinkViewModel[] imgs = null;
|
||||
PoemRelatedImage[] imgs = null;
|
||||
if(images)
|
||||
{
|
||||
var imgsRes = await GetPoemImages(id);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user