docs: #275 IPoetPhotoSuggestionService

This commit is contained in:
Hamid Reza Mohammadi 2022-02-04 16:32:40 +03:30
parent fd85e6765c
commit 9c2b05a6b5
7 changed files with 300 additions and 0 deletions

View File

@ -435,5 +435,10 @@ namespace RMuseum.DbContext
/// </summary>
public DbSet<GanjoorPoetSuggestedSpecLine> GanjoorPoetSuggestedSpecLines { get; set; }
/// <summary>
/// suggested pictures for poets
/// </summary>
public DbSet<GanjoorPoetSuggestedPicture> GanjoorPoetSuggestedPictures { get; set; }
}
}

View File

@ -0,0 +1,55 @@
using System;
namespace RMuseum.Models.Ganjoor.ViewModels
{
public class GanjoorPoetSuggestedPictureViewModel
{
/// <summary>
/// id
/// </summary>
public int Id { get; set; }
/// <summary>
/// Poet Id
/// </summary>
public int PoetId { get; set; }
/// <summary>
/// order
/// </summary>
public int PicOrder { get; set; }
/// <summary>
/// Title
/// </summary>
public string Title { get; set; }
/// <summary>
/// Description
/// </summary>
public string Description { get; set; }
/// <summary>
/// image url
/// </summary>
public string ImageUrl { get; set; }
/// <summary>
/// suggested by id
/// </summary>
public Guid? SuggestedById { get; set; }
/// <summary>
/// published
/// </summary>
public bool Published { get; set; }
/// <summary>
/// selected
/// </summary>
public bool ChosenOne { get; set; }
}
}

View File

@ -2544,6 +2544,11 @@
suggested spec line for poets
</summary>
</member>
<member name="P:RMuseum.DbContext.RMuseumDbContext.GanjoorPoetSuggestedPictures">
<summary>
suggested pictures for poets
</summary>
</member>
<member name="T:RMuseum.Models.Accounting.DonationExpenditure">
<summary>
donation expenditures
@ -7763,6 +7768,51 @@
poet cat info
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorPoetSuggestedPictureViewModel.Id">
<summary>
id
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorPoetSuggestedPictureViewModel.PoetId">
<summary>
Poet Id
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorPoetSuggestedPictureViewModel.PicOrder">
<summary>
order
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorPoetSuggestedPictureViewModel.Title">
<summary>
Title
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorPoetSuggestedPictureViewModel.Description">
<summary>
Description
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorPoetSuggestedPictureViewModel.ImageUrl">
<summary>
image url
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorPoetSuggestedPictureViewModel.SuggestedById">
<summary>
suggested by id
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorPoetSuggestedPictureViewModel.Published">
<summary>
published
</summary>
</member>
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorPoetSuggestedPictureViewModel.ChosenOne">
<summary>
selected
</summary>
</member>
<member name="T:RMuseum.Models.Ganjoor.ViewModels.GanjoorPoetSuggestedSpecLineViewModel">
<summary>
Ganjoor Poet Specification view model
@ -13036,6 +13086,41 @@
<param name="simpleImageStorage"></param>
<param name="memoryCache"></param>
</member>
<member name="T:RMuseum.Services.Implementation.PoetPhotoSuggestionService">
<summary>
poet photo suggestion service
</summary>
</member>
<member name="M:RMuseum.Services.Implementation.PoetPhotoSuggestionService.SuggestPhotoForPoet(System.Int32,System.Guid,System.IO.Stream,System.String,System.String,System.String,System.String)">
<summary>
suggest a new photo for a poet
</summary>
<param name="poetId"></param>
<param name="userId"></param>
<param name="imageStream"></param>
<param name="fileName"></param>
<param name="title"></param>
<param name="description"></param>
<param name="srcUrl"></param>
<returns></returns>
</member>
<member name="F:RMuseum.Services.Implementation.PoetPhotoSuggestionService._context">
<summary>
Database Context
</summary>
</member>
<member name="F:RMuseum.Services.Implementation.PoetPhotoSuggestionService._pictureFileService">
<summary>
picture file service
</summary>
</member>
<member name="M:RMuseum.Services.Implementation.PoetPhotoSuggestionService.#ctor(RMuseum.DbContext.RMuseumDbContext,RMuseum.Services.IPictureFileService)">
<summary>
constructor
</summary>
<param name="context"></param>
<param name="pictureFileService"></param>
</member>
<member name="T:RMuseum.Services.Implementation.RecitationsRssBuilder">
<summary>
creates an RSS feed from recitations
@ -13628,6 +13713,24 @@
Image Storage Path
</summary>
</member>
<member name="T:RMuseum.Services.IPoetPhotoSuggestionService">
<summary>
poet photo suggestion service
</summary>
</member>
<member name="M:RMuseum.Services.IPoetPhotoSuggestionService.SuggestPhotoForPoet(System.Int32,System.Guid,System.IO.Stream,System.String,System.String,System.String,System.String)">
<summary>
suggest a new photo for a poet
</summary>
<param name="poetId"></param>
<param name="userId"></param>
<param name="imageStream"></param>
<param name="fileName"></param>
<param name="title"></param>
<param name="description"></param>
<param name="srcUrl"></param>
<returns></returns>
</member>
<member name="T:RMuseum.Services.IRecitationService">
<summary>
Audio Narration Service

View File

@ -0,0 +1,27 @@
using RMuseum.Models.Ganjoor.ViewModels;
using RSecurityBackend.Models.Generic;
using System;
using System.IO;
using System.Threading.Tasks;
namespace RMuseum.Services
{
/// <summary>
/// poet photo suggestion service
/// </summary>
public interface IPoetPhotoSuggestionService
{
/// <summary>
/// suggest a new photo for a poet
/// </summary>
/// <param name="poetId"></param>
/// <param name="userId"></param>
/// <param name="imageStream"></param>
/// <param name="fileName"></param>
/// <param name="title"></param>
/// <param name="description"></param>
/// <param name="srcUrl"></param>
/// <returns></returns>
Task<RServiceResult<GanjoorPoetSuggestedPictureViewModel>> SuggestPhotoForPoet(int poetId, Guid userId, Stream imageStream, string fileName, string title, string description, string srcUrl);
}
}

View File

@ -4,8 +4,10 @@ using RMuseum.Models.Ganjoor;
using RMuseum.Models.Ganjoor.ViewModels;
using RSecurityBackend.Models.Auth.Memory;
using RSecurityBackend.Models.Generic;
using RSecurityBackend.Models.Image;
using System;
using System.Data;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
@ -264,5 +266,8 @@ namespace RMuseum.Services.Implementation
return new RServiceResult<bool>(false, exp.ToString());
}
}
}
}

View File

@ -0,0 +1,102 @@
using Microsoft.EntityFrameworkCore;
using RMuseum.DbContext;
using RMuseum.Models.Artifact;
using RMuseum.Models.Ganjoor;
using RMuseum.Models.Ganjoor.ViewModels;
using RSecurityBackend.Models.Generic;
using System;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
namespace RMuseum.Services.Implementation
{
/// <summary>
/// poet photo suggestion service
/// </summary>
public class PoetPhotoSuggestionService : IPoetPhotoSuggestionService
{
/// <summary>
/// suggest a new photo for a poet
/// </summary>
/// <param name="poetId"></param>
/// <param name="userId"></param>
/// <param name="imageStream"></param>
/// <param name="fileName"></param>
/// <param name="title"></param>
/// <param name="description"></param>
/// <param name="srcUrl"></param>
/// <returns></returns>
public async Task<RServiceResult<GanjoorPoetSuggestedPictureViewModel>> SuggestPhotoForPoet(int poetId, Guid userId, Stream imageStream, string fileName, string title, string description, string srcUrl)
{
RServiceResult<RPictureFile> imageRes = await _pictureFileService.Add(title, description, 0, null, srcUrl, imageStream, fileName, "PoetsPhotoSuggestions");
if (!string.IsNullOrEmpty(imageRes.ExceptionString))
{
return new RServiceResult<GanjoorPoetSuggestedPictureViewModel>(null, imageRes.ExceptionString);
}
await _context.SaveChangesAsync();
try
{
var image = imageRes.Result;
int picOrder = 1 + (await _context.GanjoorPoetSuggestedPictures.Where(p => p.PoetId == poetId).CountAsync());
GanjoorPoetSuggestedPicture picture = new GanjoorPoetSuggestedPicture()
{
PoetId = poetId,
PicOrder = picOrder,
PictureId = image.Id,
SuggestedById = userId,
Published = false,
ChosenOne = false
};
_context.GanjoorPoetSuggestedPictures.Add(picture);
await _context.SaveChangesAsync();
return new RServiceResult<GanjoorPoetSuggestedPictureViewModel>
(
new GanjoorPoetSuggestedPictureViewModel()
{
Id = picture.Id,
PoetId = poetId,
Title = image.Title,
Description = image.Description,
PicOrder = picture.PicOrder,
Published = picture.Published,
ChosenOne = picture.ChosenOne,
SuggestedById = picture.SuggestedById,
ImageUrl = $"api/rimages/{picture.PictureId}.jpg"
}
);
}
catch (Exception exp)
{
return new RServiceResult<GanjoorPoetSuggestedPictureViewModel>(null, exp.ToString());
}
}
/// <summary>
/// Database Context
/// </summary>
protected readonly RMuseumDbContext _context;
/// <summary>
/// picture file service
/// </summary>
protected IPictureFileService _pictureFileService;
/// <summary>
/// constructor
/// </summary>
/// <param name="context"></param>
/// <param name="pictureFileService"></param>
public PoetPhotoSuggestionService(RMuseumDbContext context, IPictureFileService pictureFileService)
{
_context = context;
_pictureFileService = pictureFileService;
}
}
}

View File

@ -296,6 +296,9 @@ namespace RMuseum
//tracking service
services.AddTransient<IUserVisitsTrackingService, UserVisitsTrackingService>();
//poet photo suggestion service
services.AddTransient<IPoetPhotoSuggestionService, PoetPhotoSuggestionService>();
//upload limit for IIS
services.Configure<IISServerOptions>(options =>
{