docs: #285 changes the FAQ pinned items API

This commit is contained in:
Hamid Reza Mohammadi 2022-03-03 21:02:58 +03:30
parent b3e9f3077d
commit 67abb34c95
4 changed files with 39 additions and 15 deletions

View File

@ -119,11 +119,11 @@ namespace RMuseum.Controllers
/// <returns></returns>
[HttpGet("pinned")]
[AllowAnonymous]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(FAQItem[]))]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(FAQCategory[]))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
public async Task<IActionResult> GetPinnedItemsAsync()
{
var res = await _faqService.GetPinnedItemsAsync(true);
var res = await _faqService.GetPinnedItemsAsync();
if (!string.IsNullOrEmpty(res.ExceptionString))
return BadRequest(res.ExceptionString);
return Ok(res.Result);

View File

@ -10154,11 +10154,10 @@
<param name="id"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IFAQService.GetPinnedItemsAsync(System.Boolean)">
<member name="M:RMuseum.Services.IFAQService.GetPinnedItemsAsync">
<summary>
get pinned items
</summary>
<param name="onlyPublished"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IFAQService.GetCategoryItemsAsync(System.Int32,System.Boolean)">
@ -12163,11 +12162,10 @@
<param name="id"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementation.FAQService.GetPinnedItemsAsync(System.Boolean)">
<member name="M:RMuseum.Services.Implementation.FAQService.GetPinnedItemsAsync">
<summary>
get pinned items
</summary>
<param name="onlyPublished"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementation.FAQService.GetCategoryItemsAsync(System.Int32,System.Boolean)">

View File

@ -48,9 +48,8 @@ namespace RMuseum.Services
/// <summary>
/// get pinned items
/// </summary>
/// <param name="onlyPublished"></param>
/// <returns></returns>
Task<RServiceResult<FAQItem[]>> GetPinnedItemsAsync(bool onlyPublished);
Task<RServiceResult<FAQCategory[]>> GetPinnedItemsAsync();
/// <summary>
/// get category items

View File

@ -3,6 +3,7 @@ using RMuseum.DbContext;
using RMuseum.Models.FAQ;
using RSecurityBackend.Models.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
@ -110,15 +111,41 @@ namespace RMuseum.Services.Implementation
/// <summary>
/// get pinned items
/// </summary>
/// <param name="onlyPublished"></param>
/// <returns></returns>
public async Task<RServiceResult<FAQItem[]>> GetPinnedItemsAsync(bool onlyPublished)
public async Task<RServiceResult<FAQCategory[]>> GetPinnedItemsAsync()
{
var items = await _context.FAQItems.Where(c => c.Pinned && (c.Published == onlyPublished || c.Published == true)).OrderBy(c => c.PinnedItemOrder).ToArrayAsync();
return new RServiceResult<FAQItem[]>
(
items
);
var items = await _context.FAQItems.Include(i => i.Category).Where(c => c.Pinned && c.Published == true).OrderBy(c => c.Category.CatOrder).ThenBy(c => c.PinnedItemOrder).ThenBy(c => c.ItemOrderInCategory).ToArrayAsync();
List<FAQCategory> result = new List<FAQCategory>();
FAQCategory cat = null;
int catId = -1;
foreach (var item in items)
{
if(item.CategoryId != catId)
{
if(cat != null)
{
result.Add(cat);
}
cat = item.Category;
catId = item.CategoryId;
cat.Items = new List<FAQItem>();
}
cat.Items.Add(item);
}
if (cat != null)
{
result.Add(cat);
}
foreach (var resultCat in result)
{
foreach (var item in resultCat.Items)
{
item.Category = null;
}
}
return new RServiceResult<FAQCategory[]>(result.ToArray());
}
/// <summary>