Skip to content

Commit 291e876

Browse files
committed
✨ Add reporting functionality with metrics and history queries
1 parent 8e9bac0 commit 291e876

23 files changed

Lines changed: 1019 additions & 0 deletions

File tree

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using System;
2+
3+
namespace TaleEngine.API.Contracts.Dtos.Requests
4+
{
5+
public class ReportingFilterRequest
6+
{
7+
public int EditionId { get; set; }
8+
public DateTime? DateFrom { get; set; }
9+
public DateTime? DateTo { get; set; }
10+
public int Page { get; set; } = 0;
11+
public int PageSize { get; set; } = 20;
12+
}
13+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using System;
2+
using System.Collections.Generic;
3+
4+
namespace TaleEngine.API.Contracts.Dtos.Results
5+
{
6+
public class ActivityHistoryResult
7+
{
8+
public int ActivityId { get; set; }
9+
public string ActivityTitle { get; set; }
10+
public DateTime? ActivityStartDate { get; set; }
11+
public DateTime? ActivityEndDate { get; set; }
12+
public DateTime? CreatedAt { get; set; }
13+
public DateTime? LastModifiedAt { get; set; }
14+
public List<ActivityHistoryUserEntryDto> Participants { get; set; }
15+
}
16+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace TaleEngine.API.Contracts.Dtos.Results
2+
{
3+
public class ActivityHistoryUserEntryDto
4+
{
5+
public int UserId { get; set; }
6+
public string Username { get; set; }
7+
public string RelationType { get; set; }
8+
}
9+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
namespace TaleEngine.API.Contracts.Dtos.Results
2+
{
3+
public class ActivityReportMetricDto
4+
{
5+
public int ActivityId { get; set; }
6+
public string Title { get; set; }
7+
public int Places { get; set; }
8+
public int EnrolledUsers { get; set; }
9+
public int WaitingUsers { get; set; }
10+
public int FavouriteUsers { get; set; }
11+
public decimal OccupancyRate { get; set; }
12+
}
13+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using System;
2+
using System.Collections.Generic;
3+
4+
namespace TaleEngine.API.Contracts.Dtos.Results
5+
{
6+
public class DashboardMetricsResult
7+
{
8+
public int EditionId { get; set; }
9+
public DateTime? DateFrom { get; set; }
10+
public DateTime? DateTo { get; set; }
11+
public int TotalActivities { get; set; }
12+
public int TotalEnrollments { get; set; }
13+
public int TotalWaitingList { get; set; }
14+
public int TotalFavourites { get; set; }
15+
public decimal AverageOccupancyRate { get; set; }
16+
public List<ActivityReportMetricDto> TopActivitiesByParticipation { get; set; }
17+
public List<UserParticipationMetricDto> UserParticipation { get; set; }
18+
}
19+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace TaleEngine.API.Contracts.Dtos.Results
2+
{
3+
public class ReportFileResult
4+
{
5+
public byte[] Content { get; set; }
6+
public string ContentType { get; set; }
7+
public string FileName { get; set; }
8+
}
9+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
using System;
2+
3+
namespace TaleEngine.API.Contracts.Dtos.Results
4+
{
5+
public class UserHistoryEntryDto
6+
{
7+
public int ActivityId { get; set; }
8+
public string ActivityTitle { get; set; }
9+
public string RelationType { get; set; }
10+
public DateTime? ActivityStartDate { get; set; }
11+
public DateTime? ActivityEndDate { get; set; }
12+
}
13+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using System;
2+
using System.Collections.Generic;
3+
4+
namespace TaleEngine.API.Contracts.Dtos.Results
5+
{
6+
public class UserHistoryResult
7+
{
8+
public int UserId { get; set; }
9+
public string Username { get; set; }
10+
public int EditionId { get; set; }
11+
public DateTime? DateFrom { get; set; }
12+
public DateTime? DateTo { get; set; }
13+
public List<UserHistoryEntryDto> Entries { get; set; }
14+
}
15+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
namespace TaleEngine.API.Contracts.Dtos.Results
2+
{
3+
public class UserParticipationMetricDto
4+
{
5+
public int UserId { get; set; }
6+
public string Username { get; set; }
7+
public int EnrolledActivities { get; set; }
8+
public int WaitingListActivities { get; set; }
9+
public int FavouriteActivities { get; set; }
10+
}
11+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using System.Collections.Generic;
2+
using TaleEngine.API.Contracts.Dtos.Requests;
3+
using TaleEngine.API.Contracts.Dtos.Results;
4+
5+
namespace TaleEngine.Services.Contracts
6+
{
7+
public interface IReportingService
8+
{
9+
DashboardMetricsResult GetDashboardMetrics(ReportingFilterRequest request);
10+
List<ActivityHistoryResult> GetActivityHistory(ReportingFilterRequest request);
11+
UserHistoryResult GetUserHistory(int userId, int editionId, System.DateTime? dateFrom = null, System.DateTime? dateTo = null);
12+
ReportFileResult ExportDashboardExcel(ReportingFilterRequest request);
13+
}
14+
}

0 commit comments

Comments
 (0)