#478 GetApprovedEditsGroupedByUserAsync
This commit is contained in:
parent
01f3569c20
commit
3d2560440e
25
RMuseum/Models/Generic/ViewModels/GroupedByUserViewModel.cs
Normal file
25
RMuseum/Models/Generic/ViewModels/GroupedByUserViewModel.cs
Normal file
@ -0,0 +1,25 @@
|
||||
using System;
|
||||
|
||||
namespace RMuseum.Models.Generic.ViewModels
|
||||
{
|
||||
/// <summary>
|
||||
/// grouped by user view model
|
||||
/// </summary>
|
||||
public class GroupedByUserViewModel
|
||||
{
|
||||
/// <summary>
|
||||
/// number of clicks
|
||||
/// </summary>
|
||||
public int Number { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// user id
|
||||
/// </summary>
|
||||
public Guid UserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// user name
|
||||
/// </summary>
|
||||
public string UserName { get; set; }
|
||||
}
|
||||
}
|
||||
@ -13397,6 +13397,26 @@
|
||||
number of clicks
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:RMuseum.Models.Generic.ViewModels.GroupedByUserViewModel">
|
||||
<summary>
|
||||
grouped by user view model
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Generic.ViewModels.GroupedByUserViewModel.Number">
|
||||
<summary>
|
||||
number of clicks
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Generic.ViewModels.GroupedByUserViewModel.UserId">
|
||||
<summary>
|
||||
user id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Generic.ViewModels.GroupedByUserViewModel.UserName">
|
||||
<summary>
|
||||
user name
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:RMuseum.Models.ImportJob.ImportJob">
|
||||
<summary>
|
||||
Import Job
|
||||
@ -15842,6 +15862,15 @@
|
||||
<param name="paging"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IContributionStatsService.GetApprovedEditsGroupedByUserAsync(RSecurityBackend.Models.Generic.PagingParameterModel,System.Nullable{System.DateTime},System.Nullable{System.Guid})">
|
||||
<summary>
|
||||
approved edits grouped by user
|
||||
</summary>
|
||||
<param name="paging"></param>
|
||||
<param name="day"></param>
|
||||
<param name="userId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:RMuseum.Services.IDonationService">
|
||||
<summary>
|
||||
donation service
|
||||
@ -18750,7 +18779,7 @@
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.ContributionStatsService.GetApprovedEditsGroupedByDateAsync(RSecurityBackend.Models.Generic.PagingParameterModel,System.Nullable{System.Guid})">
|
||||
<summary>
|
||||
get approved edits daily
|
||||
approved edits daily
|
||||
</summary>
|
||||
<param name="paging"></param>
|
||||
<param name="userId"></param>
|
||||
@ -18758,11 +18787,20 @@
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.ContributionStatsService.GetApprovedEditsGroupedByDateAndUserAsync(RSecurityBackend.Models.Generic.PagingParameterModel)">
|
||||
<summary>
|
||||
get approved edits grouped by user / daily
|
||||
approved edits grouped by user / daily
|
||||
</summary>
|
||||
<param name="paging"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.ContributionStatsService.GetApprovedEditsGroupedByUserAsync(RSecurityBackend.Models.Generic.PagingParameterModel,System.Nullable{System.DateTime},System.Nullable{System.Guid})">
|
||||
<summary>
|
||||
approved edits grouped by user
|
||||
</summary>
|
||||
<param name="paging"></param>
|
||||
<param name="day"></param>
|
||||
<param name="userId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="F:RMuseum.Services.Implementation.ContributionStatsService._context">
|
||||
<summary>
|
||||
Database Context
|
||||
|
||||
@ -25,5 +25,14 @@ namespace RMuseum.Services
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<(PaginationMetadata PagingMeta, GroupedByDateUserViewModel[] Tracks)>> GetApprovedEditsGroupedByDateAndUserAsync(PagingParameterModel paging);
|
||||
|
||||
/// <summary>
|
||||
/// approved 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)>> GetApprovedEditsGroupedByUserAsync(PagingParameterModel paging, DateTime? day, Guid? userId);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@ -14,7 +14,7 @@ namespace RMuseum.Services.Implementation
|
||||
public class ContributionStatsService : IContributionStatsService
|
||||
{
|
||||
/// <summary>
|
||||
/// get approved edits daily
|
||||
/// approved edits daily
|
||||
/// </summary>
|
||||
/// <param name="paging"></param>
|
||||
/// <param name="userId"></param>
|
||||
@ -46,7 +46,7 @@ namespace RMuseum.Services.Implementation
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// get approved edits grouped by user / daily
|
||||
/// approved edits grouped by user / daily
|
||||
/// </summary>
|
||||
/// <param name="paging"></param>
|
||||
/// <returns></returns>
|
||||
@ -64,7 +64,6 @@ namespace RMuseum.Services.Implementation
|
||||
user => user.Id,
|
||||
(correction, user) => new
|
||||
{
|
||||
correction.Id,
|
||||
UserId = user.Id,
|
||||
UserName = user.NickName,
|
||||
DateTime = correction.Date,
|
||||
@ -89,6 +88,52 @@ namespace RMuseum.Services.Implementation
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// approved 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)>> GetApprovedEditsGroupedByUserAsync(PagingParameterModel paging, DateTime? day, Guid? userId)
|
||||
{
|
||||
try
|
||||
{
|
||||
return new RServiceResult<(PaginationMetadata PagingMeta, GroupedByUserViewModel[] Tracks)>(
|
||||
await QueryablePaginator<GroupedByUserViewModel>.Paginate(
|
||||
_context.GanjoorPoemCorrections
|
||||
.Join
|
||||
(
|
||||
_context.Users,
|
||||
correction => correction.UserId,
|
||||
user => user.Id,
|
||||
(correction, user) => new
|
||||
{
|
||||
correction.Date,
|
||||
UserId = user.Id,
|
||||
UserName = user.NickName,
|
||||
correction.AffectedThePoem,
|
||||
}
|
||||
)
|
||||
.Where(f =>
|
||||
f.AffectedThePoem
|
||||
&&
|
||||
(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>
|
||||
/// Database Context
|
||||
/// </summary>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user