moving banner sites code out of GanjoorService/Controller
This commit is contained in:
parent
d0dc5972ae
commit
afb21e566a
@ -40,7 +40,7 @@ namespace GanjooRazor.Areas.Admin.Pages
|
||||
{
|
||||
if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response))
|
||||
{
|
||||
var response = await secureClient.GetAsync($"{APIRoot.Url}/api/ganjoor/site/banners");
|
||||
var response = await secureClient.GetAsync($"{APIRoot.Url}/api/banners");
|
||||
if (!response.IsSuccessStatusCode)
|
||||
{
|
||||
LastMessage = await response.Content.ReadAsStringAsync();
|
||||
@ -78,7 +78,7 @@ namespace GanjooRazor.Areas.Admin.Pages
|
||||
TargetUrl = url,
|
||||
Active = active
|
||||
};
|
||||
HttpResponseMessage response = await secureClient.PutAsync($"{APIRoot.Url}/api/ganjoor/site/banner/{id}", new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json"));
|
||||
HttpResponseMessage response = await secureClient.PutAsync($"{APIRoot.Url}/api/banners/{id}", new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, "application/json"));
|
||||
if (!response.IsSuccessStatusCode)
|
||||
{
|
||||
LastMessage = await response.Content.ReadAsStringAsync();
|
||||
@ -102,7 +102,7 @@ namespace GanjooRazor.Areas.Admin.Pages
|
||||
{
|
||||
if (await GanjoorSessionChecker.PrepareClient(secureClient, Request, Response))
|
||||
{
|
||||
var response = await secureClient.DeleteAsync($"{APIRoot.Url}/api/ganjoor/site/banner?id={id}");
|
||||
var response = await secureClient.DeleteAsync($"{APIRoot.Url}/api/banners?id={id}");
|
||||
|
||||
if (response.StatusCode != HttpStatusCode.OK)
|
||||
{
|
||||
@ -133,7 +133,7 @@ namespace GanjooRazor.Areas.Admin.Pages
|
||||
var fileContent = stream.ToArray();
|
||||
form.Add(new ByteArrayContent(fileContent, 0, fileContent.Length), Upload.Image.FileName, Upload.Image.FileName);
|
||||
|
||||
HttpResponseMessage response = await secureClient.PostAsync($"{APIRoot.Url}/api/ganjoor/site/banner", form);
|
||||
HttpResponseMessage response = await secureClient.PostAsync($"{APIRoot.Url}/api/banners", form);
|
||||
if (!response.IsSuccessStatusCode)
|
||||
{
|
||||
LastMessage = await response.Content.ReadAsStringAsync();
|
||||
|
||||
@ -530,7 +530,7 @@ namespace GanjooRazor.Pages
|
||||
|
||||
if (IsPoemPage)
|
||||
{
|
||||
var bannerQuery = await _httpClient.GetAsync($"{APIRoot.Url}/api/ganjoor/site/banner");
|
||||
var bannerQuery = await _httpClient.GetAsync($"{APIRoot.Url}/api/banners/random");
|
||||
bannerQuery.EnsureSuccessStatusCode();
|
||||
string bannerResponse = await bannerQuery.Content.ReadAsStringAsync();
|
||||
if (!string.IsNullOrEmpty(bannerResponse))
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
},
|
||||
"AllowedHosts": "*",
|
||||
"GoogleAnalyticsCode": "",
|
||||
"APIRoot": "https://ganjgah.ir",
|
||||
"APIRoot": "http://localhost:3439",
|
||||
"GlobalAPIRoot": "https://ganjgah.ir",
|
||||
"ConnectionStrings": {
|
||||
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=museum;Trusted_Connection=True;MultipleActiveResultSets=true"
|
||||
|
||||
@ -1000,179 +1000,7 @@ namespace RMuseum.Controllers
|
||||
return Ok(res.Result);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// add site banner (send form) with these fields: alt, url and an image attachment
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Route("site/banner")]
|
||||
[Authorize(Policy = RMuseumSecurableItem.GanjoorEntityShortName + ":" + RMuseumSecurableItem.Banners)]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GanjoorSiteBannerViewModel))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
[ProducesResponseType((int)HttpStatusCode.Unauthorized)]
|
||||
public async Task<IActionResult> AddSiteBanner()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!Request.Form.TryGetValue("alt", out Microsoft.Extensions.Primitives.StringValues alt))
|
||||
{
|
||||
return BadRequest("alt is null");
|
||||
}
|
||||
if (!Request.Form.TryGetValue("url", out Microsoft.Extensions.Primitives.StringValues url))
|
||||
{
|
||||
return BadRequest("url is null");
|
||||
}
|
||||
if(Request.Form.Files.Count != 1)
|
||||
{
|
||||
return BadRequest("a single image is not provided");
|
||||
}
|
||||
using Stream stream = Request.Form.Files[0].OpenReadStream();
|
||||
RServiceResult<GanjoorSiteBannerViewModel> res = await _ganjoorService.AddSiteBanner(stream, Request.Form.Files[0].FileName, alt.ToString(), url.ToString(), false);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
{
|
||||
return BadRequest(res.ExceptionString);
|
||||
}
|
||||
return Ok(res.Result);
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return BadRequest(exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// modify site banner
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="model"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPut]
|
||||
[Route("site/banner/{id}")]
|
||||
[Authorize(Policy = RMuseumSecurableItem.GanjoorEntityShortName + ":" + RMuseumSecurableItem.Banners)]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK)]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
[ProducesResponseType((int)HttpStatusCode.Unauthorized)]
|
||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||
public async Task<IActionResult> ModifySiteBanner(int id, [FromBody] GanjoorSiteBannerModifyViewModel model)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
RServiceResult<bool> res = await _ganjoorService.ModifySiteBanner(id, model.AlternateText, model.TargetUrl, model.Active);
|
||||
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
{
|
||||
return BadRequest(res.ExceptionString);
|
||||
}
|
||||
|
||||
if(!res.Result)
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
return Ok();
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return BadRequest(exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// delete site banner
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpDelete]
|
||||
[Route("site/banner")]
|
||||
[Authorize(Policy = RMuseumSecurableItem.GanjoorEntityShortName + ":" + RMuseumSecurableItem.Banners)]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK)]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
[ProducesResponseType((int)HttpStatusCode.Unauthorized)]
|
||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||
public async Task<IActionResult> DeleteSiteBanner(int id)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
RServiceResult<bool> res = await _ganjoorService.DeleteSiteBanner(id);
|
||||
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
{
|
||||
return BadRequest(res.ExceptionString);
|
||||
}
|
||||
|
||||
if (!res.Result)
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
return Ok();
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return BadRequest(exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get all defined site banners
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
|
||||
[HttpGet]
|
||||
[Route("site/banners")]
|
||||
[Authorize(Policy = RMuseumSecurableItem.GanjoorEntityShortName + ":" + RMuseumSecurableItem.Banners)]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GanjoorSiteBannerViewModel[]))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
[ProducesResponseType((int)HttpStatusCode.Unauthorized)]
|
||||
public async Task<IActionResult> GetSiteBanners()
|
||||
{
|
||||
try
|
||||
{
|
||||
RServiceResult<GanjoorSiteBannerViewModel[]> res = await _ganjoorService.GetSiteBanners();
|
||||
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
{
|
||||
return BadRequest(res.ExceptionString);
|
||||
}
|
||||
return Ok(res.Result);
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return BadRequest(exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get a random active site banner
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("site/banner")]
|
||||
[AllowAnonymous]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GanjoorSiteBannerViewModel))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
[ProducesResponseType((int)HttpStatusCode.Unauthorized)]
|
||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||
public async Task<IActionResult> GetARandomActiveSiteBanner()
|
||||
{
|
||||
try
|
||||
{
|
||||
RServiceResult<GanjoorSiteBannerViewModel> res = await _ganjoorService.GetARandomActiveSiteBanner();
|
||||
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
{
|
||||
return BadRequest(res.ExceptionString);
|
||||
}
|
||||
|
||||
return Ok(res.Result); //this might be null
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return BadRequest(exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// examine site pages for broken links
|
||||
|
||||
203
RMuseum/Controllers/SiteBannersController.cs
Normal file
203
RMuseum/Controllers/SiteBannersController.cs
Normal file
@ -0,0 +1,203 @@
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using RMuseum.Models.Auth.Memory;
|
||||
using RMuseum.Models.Ganjoor.ViewModels;
|
||||
using RMuseum.Services;
|
||||
using RSecurityBackend.Models.Generic;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace RMuseum.Controllers
|
||||
{
|
||||
[Produces("application/json")]
|
||||
[Route("api/banners")]
|
||||
public class SiteBannersController : Controller
|
||||
{
|
||||
/// <summary>
|
||||
/// add site banner (send form) with these fields: alt, url and an image attachment
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
[Authorize(Policy = RMuseumSecurableItem.GanjoorEntityShortName + ":" + RMuseumSecurableItem.Banners)]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GanjoorSiteBannerViewModel))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
[ProducesResponseType((int)HttpStatusCode.Unauthorized)]
|
||||
public async Task<IActionResult> AddSiteBanner()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!Request.Form.TryGetValue("alt", out Microsoft.Extensions.Primitives.StringValues alt))
|
||||
{
|
||||
return BadRequest("alt is null");
|
||||
}
|
||||
if (!Request.Form.TryGetValue("url", out Microsoft.Extensions.Primitives.StringValues url))
|
||||
{
|
||||
return BadRequest("url is null");
|
||||
}
|
||||
if (Request.Form.Files.Count != 1)
|
||||
{
|
||||
return BadRequest("a single image is not provided");
|
||||
}
|
||||
using Stream stream = Request.Form.Files[0].OpenReadStream();
|
||||
RServiceResult<GanjoorSiteBannerViewModel> res = await _bannersService.AddSiteBanner(stream, Request.Form.Files[0].FileName, alt.ToString(), url.ToString(), false);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
{
|
||||
return BadRequest(res.ExceptionString);
|
||||
}
|
||||
return Ok(res.Result);
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return BadRequest(exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// modify site banner
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="model"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPut("{id}")]
|
||||
[Authorize(Policy = RMuseumSecurableItem.GanjoorEntityShortName + ":" + RMuseumSecurableItem.Banners)]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK)]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
[ProducesResponseType((int)HttpStatusCode.Unauthorized)]
|
||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||
public async Task<IActionResult> ModifySiteBanner(int id, [FromBody] GanjoorSiteBannerModifyViewModel model)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
RServiceResult<bool> res = await _bannersService.ModifySiteBanner(id, model.AlternateText, model.TargetUrl, model.Active);
|
||||
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
{
|
||||
return BadRequest(res.ExceptionString);
|
||||
}
|
||||
|
||||
if (!res.Result)
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
return Ok();
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return BadRequest(exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// delete site banner
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
[HttpDelete]
|
||||
[Authorize(Policy = RMuseumSecurableItem.GanjoorEntityShortName + ":" + RMuseumSecurableItem.Banners)]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK)]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
[ProducesResponseType((int)HttpStatusCode.Unauthorized)]
|
||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||
public async Task<IActionResult> DeleteSiteBanner(int id)
|
||||
{
|
||||
try
|
||||
{
|
||||
|
||||
RServiceResult<bool> res = await _bannersService.DeleteSiteBanner(id);
|
||||
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
{
|
||||
return BadRequest(res.ExceptionString);
|
||||
}
|
||||
|
||||
if (!res.Result)
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
|
||||
return Ok();
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return BadRequest(exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get all defined site banners
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
|
||||
[HttpGet]
|
||||
[Authorize(Policy = RMuseumSecurableItem.GanjoorEntityShortName + ":" + RMuseumSecurableItem.Banners)]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GanjoorSiteBannerViewModel[]))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
[ProducesResponseType((int)HttpStatusCode.Unauthorized)]
|
||||
public async Task<IActionResult> GetSiteBanners()
|
||||
{
|
||||
try
|
||||
{
|
||||
RServiceResult<GanjoorSiteBannerViewModel[]> res = await _bannersService.GetSiteBanners();
|
||||
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
{
|
||||
return BadRequest(res.ExceptionString);
|
||||
}
|
||||
return Ok(res.Result);
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return BadRequest(exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get a random active site banner
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
[Route("random")]
|
||||
[AllowAnonymous]
|
||||
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(GanjoorSiteBannerViewModel))]
|
||||
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
|
||||
[ProducesResponseType((int)HttpStatusCode.Unauthorized)]
|
||||
[ProducesResponseType((int)HttpStatusCode.NotFound)]
|
||||
public async Task<IActionResult> GetARandomActiveSiteBanner()
|
||||
{
|
||||
try
|
||||
{
|
||||
RServiceResult<GanjoorSiteBannerViewModel> res = await _bannersService.GetARandomActiveSiteBanner();
|
||||
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
{
|
||||
return BadRequest(res.ExceptionString);
|
||||
}
|
||||
|
||||
return Ok(res.Result); //this might be null
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return BadRequest(exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ganjoor Service
|
||||
/// </summary>
|
||||
|
||||
protected readonly ISiteBannersService _bannersService;
|
||||
|
||||
/// <summary>
|
||||
/// constructor
|
||||
/// </summary>
|
||||
/// <param name="bannersService"></param>
|
||||
public SiteBannersController(ISiteBannersService bannersService)
|
||||
{
|
||||
_bannersService = bannersService;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -885,39 +885,6 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.AddSiteBanner">
|
||||
<summary>
|
||||
add site banner (send form) with these fields: alt, url and an image attachment
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.ModifySiteBanner(System.Int32,RMuseum.Models.Ganjoor.ViewModels.GanjoorSiteBannerModifyViewModel)">
|
||||
<summary>
|
||||
modify site banner
|
||||
</summary>
|
||||
<param name="id"></param>
|
||||
<param name="model"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.DeleteSiteBanner(System.Int32)">
|
||||
<summary>
|
||||
delete site banner
|
||||
</summary>
|
||||
<param name="id"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.GetSiteBanners">
|
||||
<summary>
|
||||
get all defined site banners
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.GetARandomActiveSiteBanner">
|
||||
<summary>
|
||||
get a random active site banner
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.GanjoorController.HealthCheckContents">
|
||||
<summary>
|
||||
examine site pages for broken links
|
||||
@ -1288,6 +1255,50 @@
|
||||
</summary>
|
||||
<param name="roleService"></param>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.SiteBannersController.AddSiteBanner">
|
||||
<summary>
|
||||
add site banner (send form) with these fields: alt, url and an image attachment
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.SiteBannersController.ModifySiteBanner(System.Int32,RMuseum.Models.Ganjoor.ViewModels.GanjoorSiteBannerModifyViewModel)">
|
||||
<summary>
|
||||
modify site banner
|
||||
</summary>
|
||||
<param name="id"></param>
|
||||
<param name="model"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.SiteBannersController.DeleteSiteBanner(System.Int32)">
|
||||
<summary>
|
||||
delete site banner
|
||||
</summary>
|
||||
<param name="id"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.SiteBannersController.GetSiteBanners">
|
||||
<summary>
|
||||
get all defined site banners
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.SiteBannersController.GetARandomActiveSiteBanner">
|
||||
<summary>
|
||||
get a random active site banner
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:RMuseum.Controllers.SiteBannersController._bannersService">
|
||||
<summary>
|
||||
Ganjoor Service
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:RMuseum.Controllers.SiteBannersController.#ctor(RMuseum.Services.ISiteBannersService)">
|
||||
<summary>
|
||||
constructor
|
||||
</summary>
|
||||
<param name="bannersService"></param>
|
||||
</member>
|
||||
<member name="T:RMuseum.DbContext.RMuseumDbContext">
|
||||
<summary>
|
||||
Museum Database Context
|
||||
@ -6785,46 +6796,6 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorService.AddSiteBanner(System.IO.Stream,System.String,System.String,System.String,System.Boolean)">
|
||||
<summary>
|
||||
Add site banner
|
||||
</summary>
|
||||
<param name="imageStream"></param>
|
||||
<param name="fileName"></param>
|
||||
<param name="alternateText"></param>
|
||||
<param name="targetUrl"></param>
|
||||
<param name="active"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorService.ModifySiteBanner(System.Int32,System.String,System.String,System.Boolean)">
|
||||
<summary>
|
||||
modify site banner
|
||||
</summary>
|
||||
<param name="id"></param>
|
||||
<param name="alternateText"></param>
|
||||
<param name="targetUrl"></param>
|
||||
<param name="active"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorService.DeleteSiteBanner(System.Int32)">
|
||||
<summary>
|
||||
delete site banner
|
||||
</summary>
|
||||
<param name="id"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorService.GetSiteBanners">
|
||||
<summary>
|
||||
get site banners
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorService.GetARandomActiveSiteBanner">
|
||||
<summary>
|
||||
get a random site banner
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorService.Faal(System.Int32,System.Boolean)">
|
||||
<summary>
|
||||
get a random poem (2 = from hafez)
|
||||
@ -7937,46 +7908,6 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.AddSiteBanner(System.IO.Stream,System.String,System.String,System.String,System.Boolean)">
|
||||
<summary>
|
||||
Add site banner
|
||||
</summary>
|
||||
<param name="imageStream"></param>
|
||||
<param name="fileName"></param>
|
||||
<param name="alternateText"></param>
|
||||
<param name="targetUrl"></param>
|
||||
<param name="active"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.ModifySiteBanner(System.Int32,System.String,System.String,System.Boolean)">
|
||||
<summary>
|
||||
modify site banner
|
||||
</summary>
|
||||
<param name="id"></param>
|
||||
<param name="alternateText"></param>
|
||||
<param name="targetUrl"></param>
|
||||
<param name="active"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.DeleteSiteBanner(System.Int32)">
|
||||
<summary>
|
||||
delete site banner
|
||||
</summary>
|
||||
<param name="id"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.GetSiteBanners">
|
||||
<summary>
|
||||
get site banners
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.GetARandomActiveSiteBanner">
|
||||
<summary>
|
||||
get a random site banner
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorService.HealthCheckContents">
|
||||
<summary>
|
||||
examine site pages for broken links
|
||||
@ -8280,6 +8211,74 @@
|
||||
</summary>
|
||||
<param name="roleManager"></param>
|
||||
</member>
|
||||
<member name="T:RMuseum.Services.Implementation.SiteBannersService">
|
||||
<summary>
|
||||
ganjoor.net banners service
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.SiteBannersService.AddSiteBanner(System.IO.Stream,System.String,System.String,System.String,System.Boolean)">
|
||||
<summary>
|
||||
Add site banner
|
||||
</summary>
|
||||
<param name="imageStream"></param>
|
||||
<param name="fileName"></param>
|
||||
<param name="alternateText"></param>
|
||||
<param name="targetUrl"></param>
|
||||
<param name="active"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.SiteBannersService.ModifySiteBanner(System.Int32,System.String,System.String,System.Boolean)">
|
||||
<summary>
|
||||
modify site banner
|
||||
</summary>
|
||||
<param name="id"></param>
|
||||
<param name="alternateText"></param>
|
||||
<param name="targetUrl"></param>
|
||||
<param name="active"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.SiteBannersService.DeleteSiteBanner(System.Int32)">
|
||||
<summary>
|
||||
delete site banner
|
||||
</summary>
|
||||
<param name="id"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.SiteBannersService.GetSiteBanners">
|
||||
<summary>
|
||||
get site banners
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.SiteBannersService.GetARandomActiveSiteBanner">
|
||||
<summary>
|
||||
get a random site banner
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:RMuseum.Services.Implementation.SiteBannersService._context">
|
||||
<summary>
|
||||
Database Context
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:RMuseum.Services.Implementation.SiteBannersService._imageFileService">
|
||||
<summary>
|
||||
Image File Service
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:RMuseum.Services.Implementation.SiteBannersService._memoryCache">
|
||||
<summary>
|
||||
IMemoryCache
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.SiteBannersService.#ctor(RMuseum.DbContext.RMuseumDbContext,RSecurityBackend.Services.IImageFileService,Microsoft.Extensions.Caching.Memory.IMemoryCache)">
|
||||
<summary>
|
||||
constructor
|
||||
</summary>
|
||||
<param name="context"></param>
|
||||
<param name="imageFileService"></param>
|
||||
<param name="memoryCache"></param>
|
||||
</member>
|
||||
<member name="T:RMuseum.Services.Implementationa.RecitationService">
|
||||
<summary>
|
||||
Audio Narration Service Implementation
|
||||
@ -8829,6 +8828,46 @@
|
||||
Upload Enabled (temporary switch off/on for upload)
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.ISiteBannersService.AddSiteBanner(System.IO.Stream,System.String,System.String,System.String,System.Boolean)">
|
||||
<summary>
|
||||
Add site banner
|
||||
</summary>
|
||||
<param name="imageStream"></param>
|
||||
<param name="fileName"></param>
|
||||
<param name="alternateText"></param>
|
||||
<param name="targetUrl"></param>
|
||||
<param name="active"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.ISiteBannersService.ModifySiteBanner(System.Int32,System.String,System.String,System.Boolean)">
|
||||
<summary>
|
||||
modify site banner
|
||||
</summary>
|
||||
<param name="id"></param>
|
||||
<param name="alternateText"></param>
|
||||
<param name="targetUrl"></param>
|
||||
<param name="active"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.ISiteBannersService.DeleteSiteBanner(System.Int32)">
|
||||
<summary>
|
||||
delete site banner
|
||||
</summary>
|
||||
<param name="id"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.ISiteBannersService.GetSiteBanners">
|
||||
<summary>
|
||||
get site banners
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.ISiteBannersService.GetARandomActiveSiteBanner">
|
||||
<summary>
|
||||
get a random site banner
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:RMuseum.Swashbuckle.SecurityRequirementsOperationFilter">
|
||||
<summary>
|
||||
//https://mattfrear.com/2018/07/21/add-an-authorization-header-to-your-swagger-ui-with-swashbuckle-revisited/
|
||||
|
||||
@ -3,7 +3,6 @@ using RMuseum.Models.Ganjoor.ViewModels;
|
||||
using RMuseum.Models.GanjoorAudio.ViewModels;
|
||||
using RSecurityBackend.Models.Generic;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace RMuseum.Services
|
||||
@ -258,45 +257,6 @@ namespace RMuseum.Services
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<GanjoorMetre[]>> GetGanjoorMetres();
|
||||
|
||||
/// <summary>
|
||||
/// Add site banner
|
||||
/// </summary>
|
||||
/// <param name="imageStream"></param>
|
||||
/// <param name="fileName"></param>
|
||||
/// <param name="alternateText"></param>
|
||||
/// <param name="targetUrl"></param>
|
||||
/// <param name="active"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<GanjoorSiteBannerViewModel>> AddSiteBanner(Stream imageStream, string fileName, string alternateText, string targetUrl, bool active);
|
||||
|
||||
/// <summary>
|
||||
/// modify site banner
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="alternateText"></param>
|
||||
/// <param name="targetUrl"></param>
|
||||
/// <param name="active"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<bool>> ModifySiteBanner(int id, string alternateText, string targetUrl, bool active);
|
||||
|
||||
/// <summary>
|
||||
/// delete site banner
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<bool>> DeleteSiteBanner(int id);
|
||||
|
||||
/// <summary>
|
||||
/// get site banners
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<GanjoorSiteBannerViewModel[]>> GetSiteBanners();
|
||||
|
||||
/// <summary>
|
||||
/// get a random site banner
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<GanjoorSiteBannerViewModel>> GetARandomActiveSiteBanner();
|
||||
|
||||
/// <summary>
|
||||
/// get a random poem (2 = from hafez)
|
||||
|
||||
50
RMuseum/Services/ISiteBannersService.cs
Normal file
50
RMuseum/Services/ISiteBannersService.cs
Normal file
@ -0,0 +1,50 @@
|
||||
using RMuseum.Models.Ganjoor.ViewModels;
|
||||
using RSecurityBackend.Models.Generic;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace RMuseum.Services
|
||||
{
|
||||
public interface ISiteBannersService
|
||||
{
|
||||
/// <summary>
|
||||
/// Add site banner
|
||||
/// </summary>
|
||||
/// <param name="imageStream"></param>
|
||||
/// <param name="fileName"></param>
|
||||
/// <param name="alternateText"></param>
|
||||
/// <param name="targetUrl"></param>
|
||||
/// <param name="active"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<GanjoorSiteBannerViewModel>> AddSiteBanner(Stream imageStream, string fileName, string alternateText, string targetUrl, bool active);
|
||||
|
||||
/// <summary>
|
||||
/// modify site banner
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="alternateText"></param>
|
||||
/// <param name="targetUrl"></param>
|
||||
/// <param name="active"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<bool>> ModifySiteBanner(int id, string alternateText, string targetUrl, bool active);
|
||||
|
||||
/// <summary>
|
||||
/// delete site banner
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<bool>> DeleteSiteBanner(int id);
|
||||
|
||||
/// <summary>
|
||||
/// get site banners
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<GanjoorSiteBannerViewModel[]>> GetSiteBanners();
|
||||
|
||||
/// <summary>
|
||||
/// get a random site banner
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<GanjoorSiteBannerViewModel>> GetARandomActiveSiteBanner();
|
||||
}
|
||||
}
|
||||
@ -17,8 +17,6 @@ using System.Threading.Tasks;
|
||||
using RMuseum.Models.Artifact;
|
||||
using RSecurityBackend.Services.Implementation;
|
||||
using DNTPersianUtils.Core;
|
||||
using System.IO;
|
||||
using RSecurityBackend.Models.Image;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
|
||||
namespace RMuseum.Services.Implementation
|
||||
@ -2212,182 +2210,6 @@ namespace RMuseum.Services.Implementation
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Add site banner
|
||||
/// </summary>
|
||||
/// <param name="imageStream"></param>
|
||||
/// <param name="fileName"></param>
|
||||
/// <param name="alternateText"></param>
|
||||
/// <param name="targetUrl"></param>
|
||||
/// <param name="active"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<GanjoorSiteBannerViewModel>> AddSiteBanner(Stream imageStream, string fileName, string alternateText, string targetUrl, bool active)
|
||||
{
|
||||
try
|
||||
{
|
||||
RServiceResult<RImage> image = await _imageFileService.Add(null, imageStream, fileName, "SiteBanners");
|
||||
|
||||
if (!string.IsNullOrEmpty(image.ExceptionString))
|
||||
{
|
||||
return new RServiceResult<GanjoorSiteBannerViewModel>(null, image.ExceptionString);
|
||||
}
|
||||
|
||||
|
||||
GanjoorSiteBanner banner = new GanjoorSiteBanner()
|
||||
{
|
||||
RImage = image.Result,
|
||||
AlternateText = alternateText,
|
||||
TargetUrl = targetUrl,
|
||||
Active = active
|
||||
};
|
||||
|
||||
_context.GanjoorSiteBanners.Add(banner);
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
return new RServiceResult<GanjoorSiteBannerViewModel>
|
||||
(
|
||||
new GanjoorSiteBannerViewModel()
|
||||
{
|
||||
Id = banner.Id,
|
||||
ImageUrl = $"api/rimages/{banner.RImageId}.jpg",
|
||||
AlternateText = banner.AlternateText,
|
||||
TargetUrl = banner.TargetUrl,
|
||||
Active = banner.Active
|
||||
}
|
||||
);
|
||||
|
||||
}
|
||||
catch(Exception exp)
|
||||
{
|
||||
return new RServiceResult<GanjoorSiteBannerViewModel>(null, exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// modify site banner
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="alternateText"></param>
|
||||
/// <param name="targetUrl"></param>
|
||||
/// <param name="active"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<bool>> ModifySiteBanner(int id, string alternateText, string targetUrl, bool active)
|
||||
{
|
||||
try
|
||||
{
|
||||
GanjoorSiteBanner target = await _context.GanjoorSiteBanners.Where(b => b.Id == id).SingleOrDefaultAsync();
|
||||
if(target == null)
|
||||
return new RServiceResult<bool>(false);//not found
|
||||
|
||||
target.AlternateText = alternateText;
|
||||
target.TargetUrl = targetUrl;
|
||||
target.Active = active;
|
||||
|
||||
_context.GanjoorSiteBanners.Update(target);
|
||||
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
return new RServiceResult<bool>(true);
|
||||
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return new RServiceResult<bool>(false, exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// delete site banner
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<bool>> DeleteSiteBanner(int id)
|
||||
{
|
||||
try
|
||||
{
|
||||
GanjoorSiteBanner target = await _context.GanjoorSiteBanners.Where(b => b.Id == id).SingleOrDefaultAsync();
|
||||
if (target == null)
|
||||
return new RServiceResult<bool>(false);//not found
|
||||
|
||||
_context.GanjoorSiteBanners.Remove(target);
|
||||
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
return new RServiceResult<bool>(true);
|
||||
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return new RServiceResult<bool>(false, exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get site banners
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<GanjoorSiteBannerViewModel[]>> GetSiteBanners()
|
||||
{
|
||||
try
|
||||
{
|
||||
return new RServiceResult<GanjoorSiteBannerViewModel[]>(
|
||||
await _context.GanjoorSiteBanners
|
||||
.Select(b => new GanjoorSiteBannerViewModel()
|
||||
{
|
||||
Id = b.Id,
|
||||
ImageUrl = $"api/rimages/{b.RImageId}.jpg",
|
||||
AlternateText = b.AlternateText,
|
||||
TargetUrl = b.TargetUrl,
|
||||
Active = b.Active
|
||||
}).ToArrayAsync()
|
||||
);
|
||||
}
|
||||
catch(Exception exp)
|
||||
{
|
||||
return new RServiceResult<GanjoorSiteBannerViewModel[]>(null, exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get a random site banner
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<GanjoorSiteBannerViewModel>> GetARandomActiveSiteBanner()
|
||||
{
|
||||
try
|
||||
{
|
||||
var cacheKeyForIdSet = $"GetARandomActiveSiteBanner::idSet";
|
||||
if(!_memoryCache.TryGetValue(cacheKeyForIdSet, out int[] idSet))
|
||||
{
|
||||
idSet = await _context.GanjoorSiteBanners.Where(b => b.Active == true).Select(b => b.Id).ToArrayAsync();
|
||||
_memoryCache.Set(cacheKeyForIdSet, idSet);
|
||||
}
|
||||
if (idSet.Length == 0)
|
||||
return new RServiceResult<GanjoorSiteBannerViewModel>(null);//not found
|
||||
|
||||
Random rnd = new Random(DateTime.Now.Millisecond);
|
||||
int id = idSet[rnd.Next(0, idSet.Length)];
|
||||
|
||||
return new RServiceResult<GanjoorSiteBannerViewModel>(
|
||||
await _context.GanjoorSiteBanners
|
||||
.Where(b => b.Id == id)
|
||||
.Select(b => new GanjoorSiteBannerViewModel()
|
||||
{
|
||||
Id = b.Id,
|
||||
ImageUrl = $"api/rimages/{b.RImageId}.jpg",
|
||||
AlternateText = b.AlternateText,
|
||||
TargetUrl = b.TargetUrl,
|
||||
Active = b.Active
|
||||
}).AsNoTracking().SingleAsync()
|
||||
);
|
||||
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return new RServiceResult<GanjoorSiteBannerViewModel>(null, exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// examine site pages for broken links
|
||||
/// </summary>
|
||||
|
||||
227
RMuseum/Services/Implementation/SiteBannersService.cs
Normal file
227
RMuseum/Services/Implementation/SiteBannersService.cs
Normal file
@ -0,0 +1,227 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
using RMuseum.DbContext;
|
||||
using RMuseum.Models.Ganjoor;
|
||||
using RMuseum.Models.Ganjoor.ViewModels;
|
||||
using RSecurityBackend.Models.Generic;
|
||||
using RSecurityBackend.Models.Image;
|
||||
using RSecurityBackend.Services;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace RMuseum.Services.Implementation
|
||||
{
|
||||
/// <summary>
|
||||
/// ganjoor.net banners service
|
||||
/// </summary>
|
||||
public class SiteBannersService : ISiteBannersService
|
||||
{
|
||||
/// <summary>
|
||||
/// Add site banner
|
||||
/// </summary>
|
||||
/// <param name="imageStream"></param>
|
||||
/// <param name="fileName"></param>
|
||||
/// <param name="alternateText"></param>
|
||||
/// <param name="targetUrl"></param>
|
||||
/// <param name="active"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<GanjoorSiteBannerViewModel>> AddSiteBanner(Stream imageStream, string fileName, string alternateText, string targetUrl, bool active)
|
||||
{
|
||||
try
|
||||
{
|
||||
RServiceResult<RImage> image = await _imageFileService.Add(null, imageStream, fileName, "SiteBanners");
|
||||
|
||||
if (!string.IsNullOrEmpty(image.ExceptionString))
|
||||
{
|
||||
return new RServiceResult<GanjoorSiteBannerViewModel>(null, image.ExceptionString);
|
||||
}
|
||||
|
||||
|
||||
GanjoorSiteBanner banner = new GanjoorSiteBanner()
|
||||
{
|
||||
RImage = image.Result,
|
||||
AlternateText = alternateText,
|
||||
TargetUrl = targetUrl,
|
||||
Active = active
|
||||
};
|
||||
|
||||
_context.GanjoorSiteBanners.Add(banner);
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
return new RServiceResult<GanjoorSiteBannerViewModel>
|
||||
(
|
||||
new GanjoorSiteBannerViewModel()
|
||||
{
|
||||
Id = banner.Id,
|
||||
ImageUrl = $"api/rimages/{banner.RImageId}.jpg",
|
||||
AlternateText = banner.AlternateText,
|
||||
TargetUrl = banner.TargetUrl,
|
||||
Active = banner.Active
|
||||
}
|
||||
);
|
||||
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return new RServiceResult<GanjoorSiteBannerViewModel>(null, exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// modify site banner
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="alternateText"></param>
|
||||
/// <param name="targetUrl"></param>
|
||||
/// <param name="active"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<bool>> ModifySiteBanner(int id, string alternateText, string targetUrl, bool active)
|
||||
{
|
||||
try
|
||||
{
|
||||
GanjoorSiteBanner target = await _context.GanjoorSiteBanners.Where(b => b.Id == id).SingleOrDefaultAsync();
|
||||
if (target == null)
|
||||
return new RServiceResult<bool>(false);//not found
|
||||
|
||||
target.AlternateText = alternateText;
|
||||
target.TargetUrl = targetUrl;
|
||||
target.Active = active;
|
||||
|
||||
_context.GanjoorSiteBanners.Update(target);
|
||||
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
return new RServiceResult<bool>(true);
|
||||
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return new RServiceResult<bool>(false, exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// delete site banner
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<bool>> DeleteSiteBanner(int id)
|
||||
{
|
||||
try
|
||||
{
|
||||
GanjoorSiteBanner target = await _context.GanjoorSiteBanners.Where(b => b.Id == id).SingleOrDefaultAsync();
|
||||
if (target == null)
|
||||
return new RServiceResult<bool>(false);//not found
|
||||
|
||||
_context.GanjoorSiteBanners.Remove(target);
|
||||
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
return new RServiceResult<bool>(true);
|
||||
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return new RServiceResult<bool>(false, exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get site banners
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<GanjoorSiteBannerViewModel[]>> GetSiteBanners()
|
||||
{
|
||||
try
|
||||
{
|
||||
return new RServiceResult<GanjoorSiteBannerViewModel[]>(
|
||||
await _context.GanjoorSiteBanners
|
||||
.Select(b => new GanjoorSiteBannerViewModel()
|
||||
{
|
||||
Id = b.Id,
|
||||
ImageUrl = $"api/rimages/{b.RImageId}.jpg",
|
||||
AlternateText = b.AlternateText,
|
||||
TargetUrl = b.TargetUrl,
|
||||
Active = b.Active
|
||||
}).ToArrayAsync()
|
||||
);
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return new RServiceResult<GanjoorSiteBannerViewModel[]>(null, exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get a random site banner
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<GanjoorSiteBannerViewModel>> GetARandomActiveSiteBanner()
|
||||
{
|
||||
try
|
||||
{
|
||||
var cacheKeyForIdSet = $"GetARandomActiveSiteBanner::idSet";
|
||||
if (!_memoryCache.TryGetValue(cacheKeyForIdSet, out int[] idSet))
|
||||
{
|
||||
idSet = await _context.GanjoorSiteBanners.Where(b => b.Active == true).Select(b => b.Id).ToArrayAsync();
|
||||
_memoryCache.Set(cacheKeyForIdSet, idSet);
|
||||
}
|
||||
if (idSet.Length == 0)
|
||||
return new RServiceResult<GanjoorSiteBannerViewModel>(null);//not found
|
||||
|
||||
Random rnd = new Random(DateTime.Now.Millisecond);
|
||||
int id = idSet[rnd.Next(0, idSet.Length)];
|
||||
|
||||
return new RServiceResult<GanjoorSiteBannerViewModel>(
|
||||
await _context.GanjoorSiteBanners
|
||||
.Where(b => b.Id == id)
|
||||
.Select(b => new GanjoorSiteBannerViewModel()
|
||||
{
|
||||
Id = b.Id,
|
||||
ImageUrl = $"api/rimages/{b.RImageId}.jpg",
|
||||
AlternateText = b.AlternateText,
|
||||
TargetUrl = b.TargetUrl,
|
||||
Active = b.Active
|
||||
}).AsNoTracking().SingleAsync()
|
||||
);
|
||||
|
||||
}
|
||||
catch (Exception exp)
|
||||
{
|
||||
return new RServiceResult<GanjoorSiteBannerViewModel>(null, exp.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Database Context
|
||||
/// </summary>
|
||||
protected readonly RMuseumDbContext _context;
|
||||
|
||||
/// <summary>
|
||||
/// Image File Service
|
||||
/// </summary>
|
||||
protected readonly IImageFileService _imageFileService;
|
||||
|
||||
/// <summary>
|
||||
/// IMemoryCache
|
||||
/// </summary>
|
||||
protected readonly IMemoryCache _memoryCache;
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// constructor
|
||||
/// </summary>
|
||||
/// <param name="context"></param>
|
||||
/// <param name="imageFileService"></param>
|
||||
/// <param name="memoryCache"></param>
|
||||
public SiteBannersService(RMuseumDbContext context,IImageFileService imageFileService, IMemoryCache memoryCache)
|
||||
{
|
||||
_context = context;
|
||||
_imageFileService = imageFileService;
|
||||
_memoryCache = memoryCache;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -274,6 +274,9 @@ namespace RMuseum
|
||||
//long running job service
|
||||
services.AddTransient<ILongRunningJobProgressService, LongRunningJobProgressServiceEF>();
|
||||
|
||||
//site banner service
|
||||
services.AddTransient<ISiteBannersService, SiteBannersService>();
|
||||
|
||||
//upload limit for IIS
|
||||
services.Configure<IISServerOptions>(options =>
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user