Files
SkydiveLogs/Back/skydiveLogs-api/Controllers/StatsController.cs
T
2026-03-24 22:11:58 +01:00

172 lines
5.7 KiB
C#

using AutoMapper;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Mvc;
using skydiveLogs_api.DataContract;
using skydiveLogs_api.DomainBusiness.Interfaces;
using System.Collections.Generic;
namespace skydiveLogs_api.Controllers
{
public class StatsController : Base
{
#region Public Constructors
public StatsController(IStatsService statsService,
IMapper mapper)
{
_statsService = statsService;
_mapper = mapper;
}
#endregion Public Constructors
#region Public Methods
/// <summary>
/// Retrieves statistics grouped by aircraft.
/// </summary>
/// <returns>A collection of StatisticResp objects containing aircraft statistics.</returns>
[HttpGet("ByAircraft")]
[EnableCors]
public IEnumerable<StatisticResp> ByAircraft()
{
var result = _statsService.GetStatsByAircraft();
return _mapper.Map<IEnumerable<StatisticResp>>(result);
}
/// <summary>
/// Retrieves statistics grouped by drop zone.
/// </summary>
/// <returns>A collection of StatisticResp objects containing drop zone statistics.</returns>
[HttpGet("ByDz")]
[EnableCors]
public IEnumerable<StatisticResp> ByDz()
{
var result = _statsService.GetStatsByDz();
return _mapper.Map<IEnumerable<StatisticResp>>(result);
}
/// <summary>
/// Retrieves statistics grouped by gear.
/// </summary>
/// <returns>A collection of StatisticResp objects containing gear statistics.</returns>
[HttpGet("ByGear")]
[EnableCors]
public IEnumerable<StatisticResp> ByGear()
{
var result = _statsService.GetStatsByGear();
return _mapper.Map<IEnumerable<StatisticResp>>(result);
}
/// <summary>
/// Retrieves statistics grouped by jump type.
/// </summary>
/// <returns>A collection of StatisticResp objects containing jump type statistics.</returns>
[HttpGet("ByJumpType")]
[EnableCors]
public IEnumerable<StatisticResp> ByJumpType()
{
var result = _statsService.GetStatsByJumpType();
return _mapper.Map<IEnumerable<StatisticResp>>(result);
}
/// <summary>
/// Retrieves statistics grouped by year.
/// </summary>
/// <returns>A collection of StatisticResp objects containing year statistics.</returns>
[HttpGet("ByYear")]
[EnableCors]
public IEnumerable<StatisticResp> ByYear()
{
var result = _statsService.GetStatsByYear();
return _mapper.Map<IEnumerable<StatisticResp>>(result);
}
/// <summary>
/// Retrieves statistics for the last month grouped by drop zone and jump type.
/// </summary>
/// <returns>A StatisticForLastMonthResp object containing last month statistics.</returns>
[HttpGet("ForLastMonth")]
[EnableCors]
public StatisticForLastMonthResp ForLastMonth()
{
var resultByDz = _statsService.GetStatsForLastMonthByDz();
var resultByJumpType = _statsService.GetStatsForLastMonthByJumpType();
var result = new StatisticForLastMonthResp();
result.ByDz = _mapper.Map<IEnumerable<StatisticResp>>(resultByDz);
result.ByJumpType = _mapper.Map<IEnumerable<StatisticResp>>(resultByJumpType);
return result;
}
/// <summary>
/// Retrieves statistics for the last year grouped by drop zone and jump type.
/// </summary>
/// <returns>A StatisticForLastYearResp object containing last year statistics.</returns>
[HttpGet("ForLastYear")]
[EnableCors]
public StatisticForLastYearResp ForLastYear()
{
var resultByDz = _statsService.GetStatsForLastYearByDz();
var resultByJumpType = _statsService.GetStatsForLastYearByJumpType();
var result = new StatisticForLastYearResp();
result.ByDz = _mapper.Map<IEnumerable<StatisticResp>>(resultByDz);
result.ByJumpType = _mapper.Map<IEnumerable<StatisticResp>>(resultByJumpType);
return result;
}
/// <summary>
/// Retrieves statistics by year grouped with jump type for chart visualization.
/// </summary>
/// <returns>A collection of StatisticForChartResp objects containing yearly jump type statistics.</returns>
[HttpGet("ByYearByJumpType")]
[EnableCors]
public IEnumerable<StatisticForChartResp> ByYearByJumpType()
{
var result = _statsService.GetStatsByYearByJumpType();
return _mapper.Map<IEnumerable<StatisticForChartResp>>(result);
}
/// <summary>
/// Resets all statistics to their initial state.
/// </summary>
[HttpGet("Reset")]
[EnableCors]
public void Reset()
{
_statsService.Reset();
}
/// <summary>
/// Retrieves a simple summary of all statistics.
/// </summary>
/// <returns>A SimpleSummaryResp object containing the simple summary statistics.</returns>
[HttpGet("Simple")]
[EnableCors]
public SimpleSummaryResp Simple()
{
var result = _statsService.GetSimpleSummary();
return _mapper.Map<SimpleSummaryResp>(result);
}
#endregion Public Methods
#region Private properties
private readonly IMapper _mapper;
private readonly IStatsService _statsService;
#endregion Private properties
}
}