#478 cat edits stats

This commit is contained in:
Hamid Reza Mohammadi 2025-03-27 12:29:47 +03:30
parent 3d8d3a5574
commit 1ad35e0aca
4 changed files with 192 additions and 9 deletions

View File

@ -159,7 +159,7 @@ namespace RMuseum.Controllers
{
if (!_memoryCache.TryGetValue($"section/corrections/{DateTime.Now.Date}", out SummedUpViewModel result))
{
var res = await _service.GetApprrovedSedtionEditsSummedUpStatsAsync();
var res = await _service.GetApprrovedSectionEditsSummedUpStatsAsync();
if (!string.IsNullOrEmpty(res.ExceptionString))
return BadRequest(res.ExceptionString);
result = res.Result;

View File

@ -15970,9 +15970,32 @@
<param name="userId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IContributionStatsService.GetApprrovedSedtionEditsSummedUpStatsAsync">
<member name="M:RMuseum.Services.IContributionStatsService.GetApprrovedSectionEditsSummedUpStatsAsync">
<summary>
summed up stats of approved secton corrections
summed up stats of approved section corrections
</summary>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IContributionStatsService.GetApprovedCatEditsGroupedByDateAsync(RSecurityBackend.Models.Generic.PagingParameterModel,System.Nullable{System.Guid})">
<summary>
approved cat edits daily
</summary>
<param name="paging"></param>
<param name="userId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IContributionStatsService.GetApprovedCatEditsGroupedByUserAsync(RSecurityBackend.Models.Generic.PagingParameterModel,System.Nullable{System.DateTime},System.Nullable{System.Guid})">
<summary>
approved cat edits grouped by user
</summary>
<param name="paging"></param>
<param name="day"></param>
<param name="userId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.IContributionStatsService.GetApprrovedCatEditsSummedUpStatsAsync">
<summary>
summed up stats of approved cat corrections
</summary>
<returns></returns>
</member>
@ -18922,9 +18945,32 @@
<param name="userId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementation.ContributionStatsService.GetApprrovedSedtionEditsSummedUpStatsAsync">
<member name="M:RMuseum.Services.Implementation.ContributionStatsService.GetApprrovedSectionEditsSummedUpStatsAsync">
<summary>
summed up stats of approved secton corrections
summed up stats of approved section corrections
</summary>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementation.ContributionStatsService.GetApprovedCatEditsGroupedByDateAsync(RSecurityBackend.Models.Generic.PagingParameterModel,System.Nullable{System.Guid})">
<summary>
approved cat edits daily
</summary>
<param name="paging"></param>
<param name="userId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementation.ContributionStatsService.GetApprovedCatEditsGroupedByUserAsync(RSecurityBackend.Models.Generic.PagingParameterModel,System.Nullable{System.DateTime},System.Nullable{System.Guid})">
<summary>
approved cat edits grouped by user
</summary>
<param name="paging"></param>
<param name="day"></param>
<param name="userId"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Services.Implementation.ContributionStatsService.GetApprrovedCatEditsSummedUpStatsAsync">
<summary>
summed up stats of approved cat corrections
</summary>
<returns></returns>
</member>

View File

@ -51,11 +51,33 @@ namespace RMuseum.Services
Task<RServiceResult<(PaginationMetadata PagingMeta, GroupedByUserViewModel[] Tracks)>> GetApprovedSectionEditsGroupedByUserAsync(PagingParameterModel paging, DateTime? day, Guid? userId);
/// <summary>
/// summed up stats of approved secton corrections
/// summed up stats of approved section corrections
/// </summary>
/// <returns></returns>
Task<RServiceResult<SummedUpViewModel>> GetApprrovedSedtionEditsSummedUpStatsAsync();
Task<RServiceResult<SummedUpViewModel>> GetApprrovedSectionEditsSummedUpStatsAsync();
/// <summary>
/// approved cat edits daily
/// </summary>
/// <param name="paging"></param>
/// <param name="userId"></param>
/// <returns></returns>
Task<RServiceResult<(PaginationMetadata PagingMeta, GroupedByDateViewModel[] Tracks)>> GetApprovedCatEditsGroupedByDateAsync(PagingParameterModel paging, Guid? userId);
/// <summary>
/// approved cat edits grouped by user
/// </summary>
/// <param name="paging"></param>
/// <param name="day"></param>
/// <param name="userId"></param>
/// <returns></returns>
Task<RServiceResult<(PaginationMetadata PagingMeta, GroupedByUserViewModel[] Tracks)>> GetApprovedCatEditsGroupedByUserAsync(PagingParameterModel paging, DateTime? day, Guid? userId);
/// <summary>
/// summed up stats of approved cat corrections
/// </summary>
/// <returns></returns>
Task<RServiceResult<SummedUpViewModel>> GetApprrovedCatEditsSummedUpStatsAsync();
}
}

View File

@ -206,10 +206,10 @@ namespace RMuseum.Services.Implementation
}
/// <summary>
/// summed up stats of approved secton corrections
/// summed up stats of approved section corrections
/// </summary>
/// <returns></returns>
public async Task<RServiceResult<SummedUpViewModel>> GetApprrovedSedtionEditsSummedUpStatsAsync()
public async Task<RServiceResult<SummedUpViewModel>> GetApprrovedSectionEditsSummedUpStatsAsync()
{
try
{
@ -241,6 +241,121 @@ namespace RMuseum.Services.Implementation
}
/// <summary>
/// approved cat edits daily
/// </summary>
/// <param name="paging"></param>
/// <param name="userId"></param>
/// <returns></returns>
public async Task<RServiceResult<(PaginationMetadata PagingMeta, GroupedByDateViewModel[] Tracks)>> GetApprovedCatEditsGroupedByDateAsync(PagingParameterModel paging, Guid? userId)
{
try
{
return new RServiceResult<(PaginationMetadata PagingMeta, GroupedByDateViewModel[] Tracks)>(
await QueryablePaginator<GroupedByDateViewModel>.Paginate(
_context.GanjoorCatCorrections
.Where(c =>
c.Result == Models.Ganjoor.CorrectionReviewResult.Approved
&&
(userId == null || c.UserId == userId)
)
.GroupBy(a => a.Date.Date)
.Select(a => new GroupedByDateViewModel()
{
Date = a.Key.Date.ToString(),
Number = a.Count(),
}).OrderByDescending(s => s.Date)
, paging));
}
catch (Exception e)
{
return new RServiceResult<(PaginationMetadata PagingMeta, GroupedByDateViewModel[] Tracks)>((null, null), e.ToString());
}
}
/// <summary>
/// approved cat edits grouped by user
/// </summary>
/// <param name="paging"></param>
/// <param name="day"></param>
/// <param name="userId"></param>
/// <returns></returns>
public async Task<RServiceResult<(PaginationMetadata PagingMeta, GroupedByUserViewModel[] Tracks)>> GetApprovedCatEditsGroupedByUserAsync(PagingParameterModel paging, DateTime? day, Guid? userId)
{
try
{
return new RServiceResult<(PaginationMetadata PagingMeta, GroupedByUserViewModel[] Tracks)>(
await QueryablePaginator<GroupedByUserViewModel>.Paginate(
_context.GanjoorCatCorrections
.Join
(
_context.Users,
correction => correction.UserId,
user => user.Id,
(correction, user) => new
{
correction.Date,
UserId = user.Id,
UserName = user.NickName,
correction.Result,
}
)
.Where(f =>
f.Result == Models.Ganjoor.CorrectionReviewResult.Approved
&&
(day == null || f.Date.Date == day) && (userId == null || f.UserId == userId))
.GroupBy(a => new { a.UserId, a.UserName }).Select(a => new GroupedByUserViewModel()
{
UserId = a.Key.UserId,
UserName = a.Key.UserName,
Number = a.Count(),
}).OrderByDescending(s => s.Number)
, paging));
}
catch (Exception e)
{
return new RServiceResult<(PaginationMetadata PagingMeta, GroupedByUserViewModel[] Tracks)>((null, null), e.ToString());
}
}
/// <summary>
/// summed up stats of approved cat corrections
/// </summary>
/// <returns></returns>
public async Task<RServiceResult<SummedUpViewModel>> GetApprrovedCatEditsSummedUpStatsAsync()
{
try
{
return new RServiceResult<SummedUpViewModel>
(
new SummedUpViewModel()
{
Days = await _context.GanjoorCatCorrections
.Where(f => f.Result == Models.Ganjoor.CorrectionReviewResult.Approved
)
.GroupBy(f => f.Date.Date).CountAsync(),
TotalCount = await _context.GanjoorCatCorrections
.Where(f => f.Result == Models.Ganjoor.CorrectionReviewResult.Approved
)
.CountAsync(),
UserIds = await _context.GanjoorCatCorrections
.Where(f => f.Result == Models.Ganjoor.CorrectionReviewResult.Approved
)
.GroupBy(f => f.UserId).CountAsync(),
}
);
}
catch (Exception e)
{
return new RServiceResult<SummedUpViewModel>(null, e.ToString());
}
}
/// <summary>
/// Database Context
/// </summary>