From 7bf270985b18ed644ac2d343f088afd6840181f5 Mon Sep 17 00:00:00 2001 From: sandre Date: Thu, 22 Jan 2026 15:36:12 +0100 Subject: [PATCH 01/11] Add repos + repo interfaces + models + ioc --- .../skydiveLogs-api.Domain/StatsByAircraft.cs | 17 ++++ Back/skydiveLogs-api.Domain/StatsByDz.cs | 17 ++++ Back/skydiveLogs-api.Domain/StatsByGear.cs | 17 ++++ .../skydiveLogs-api.Domain/StatsByJumpType.cs | 17 ++++ Back/skydiveLogs-api.Domain/StatsByYear.cs | 17 ++++ .../StatsByYearByJumpType.cs | 17 ++++ .../StatsForLastMonthByDz.cs | 17 ++++ .../StatsForLastMonthByJumpType.cs | 17 ++++ .../StatsForLastYearByDz.cs | 17 ++++ .../StatsForLastYearByJumpType.cs | 17 ++++ .../Repositories/IStatsByDzRepository.cs | 13 ++++ .../Repositories/IStatsByGearRepository.cs | 13 ++++ .../IStatsByJumpTypeRepository.cs | 13 ++++ .../IStatsByYearByJumpTypeRepository.cs | 13 ++++ .../Repositories/IStatsByYearRepository.cs | 13 ++++ .../IStatsForLastMonthByDzRepository.cs | 13 ++++ .../IStatsForLastMonthByJumpTypeRepository.cs | 13 ++++ .../IStatsForLastYearByDzRepository.cs | 13 ++++ .../IStatsForLastYearByJumpTypeRepository.cs | 13 ++++ .../Interfaces/IDataProvider.cs | 24 +++++- .../LiteDbProvider.cs | 25 +++++- ...tsRepository.cs => StatsByDzRepository.cs} | 20 ++--- .../StatsByGearRepository.cs | 77 +++++++++++++++++++ .../StatsByJumpTypeRepository.cs | 77 +++++++++++++++++++ .../StatsByYearByJumpTypeRepository.cs | 77 +++++++++++++++++++ .../StatsByYearRepository.cs | 77 +++++++++++++++++++ .../StatsForLastMonthByDzRepository.cs | 77 +++++++++++++++++++ .../StatsForLastMonthByJumpTypeRepository.cs | 77 +++++++++++++++++++ .../StatsForLastYearByDzRepository.cs | 77 +++++++++++++++++++ .../StatsForLastYearByJumpTypeRepository.cs | 77 +++++++++++++++++++ Back/skydiveLogs-api.Ioc/IocService.cs | 11 ++- 31 files changed, 965 insertions(+), 18 deletions(-) create mode 100644 Back/skydiveLogs-api.Domain/StatsByAircraft.cs create mode 100644 Back/skydiveLogs-api.Domain/StatsByDz.cs create mode 100644 Back/skydiveLogs-api.Domain/StatsByGear.cs create mode 100644 Back/skydiveLogs-api.Domain/StatsByJumpType.cs create mode 100644 Back/skydiveLogs-api.Domain/StatsByYear.cs create mode 100644 Back/skydiveLogs-api.Domain/StatsByYearByJumpType.cs create mode 100644 Back/skydiveLogs-api.Domain/StatsForLastMonthByDz.cs create mode 100644 Back/skydiveLogs-api.Domain/StatsForLastMonthByJumpType.cs create mode 100644 Back/skydiveLogs-api.Domain/StatsForLastYearByDz.cs create mode 100644 Back/skydiveLogs-api.Domain/StatsForLastYearByJumpType.cs create mode 100644 Back/skydiveLogs-api.DomainService/Repositories/IStatsByDzRepository.cs create mode 100644 Back/skydiveLogs-api.DomainService/Repositories/IStatsByGearRepository.cs create mode 100644 Back/skydiveLogs-api.DomainService/Repositories/IStatsByJumpTypeRepository.cs create mode 100644 Back/skydiveLogs-api.DomainService/Repositories/IStatsByYearByJumpTypeRepository.cs create mode 100644 Back/skydiveLogs-api.DomainService/Repositories/IStatsByYearRepository.cs create mode 100644 Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastMonthByDzRepository.cs create mode 100644 Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastMonthByJumpTypeRepository.cs create mode 100644 Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastYearByDzRepository.cs create mode 100644 Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastYearByJumpTypeRepository.cs rename Back/skydiveLogs-api.Infrastructure/{UserStatsRepository.cs => StatsByDzRepository.cs} (74%) create mode 100644 Back/skydiveLogs-api.Infrastructure/StatsByGearRepository.cs create mode 100644 Back/skydiveLogs-api.Infrastructure/StatsByJumpTypeRepository.cs create mode 100644 Back/skydiveLogs-api.Infrastructure/StatsByYearByJumpTypeRepository.cs create mode 100644 Back/skydiveLogs-api.Infrastructure/StatsByYearRepository.cs create mode 100644 Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByDzRepository.cs create mode 100644 Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByJumpTypeRepository.cs create mode 100644 Back/skydiveLogs-api.Infrastructure/StatsForLastYearByDzRepository.cs create mode 100644 Back/skydiveLogs-api.Infrastructure/StatsForLastYearByJumpTypeRepository.cs diff --git a/Back/skydiveLogs-api.Domain/StatsByAircraft.cs b/Back/skydiveLogs-api.Domain/StatsByAircraft.cs new file mode 100644 index 0000000..c957e48 --- /dev/null +++ b/Back/skydiveLogs-api.Domain/StatsByAircraft.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +namespace skydiveLogs_api.Domain +{ + public class StatsByAircraft + { + public string Label { get; set; } + + public string Label2 { get; set; } + + public int Nb { get; set; } + + public int Id { get; set; } + + public User User { get; set; } + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.Domain/StatsByDz.cs b/Back/skydiveLogs-api.Domain/StatsByDz.cs new file mode 100644 index 0000000..ec22e6f --- /dev/null +++ b/Back/skydiveLogs-api.Domain/StatsByDz.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +namespace skydiveLogs_api.Domain +{ + public class StatsByDz + { + public string Label { get; set; } + + public string Label2 { get; set; } + + public int Nb { get; set; } + + public int Id { get; set; } + + public User User { get; set; } + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.Domain/StatsByGear.cs b/Back/skydiveLogs-api.Domain/StatsByGear.cs new file mode 100644 index 0000000..5219ab1 --- /dev/null +++ b/Back/skydiveLogs-api.Domain/StatsByGear.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +namespace skydiveLogs_api.Domain +{ + public class StatsByGear + { + public string Label { get; set; } + + public string Label2 { get; set; } + + public int Nb { get; set; } + + public int Id { get; set; } + + public User User { get; set; } + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.Domain/StatsByJumpType.cs b/Back/skydiveLogs-api.Domain/StatsByJumpType.cs new file mode 100644 index 0000000..a1ffc5f --- /dev/null +++ b/Back/skydiveLogs-api.Domain/StatsByJumpType.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +namespace skydiveLogs_api.Domain +{ + public class StatsByJumpType + { + public string Label { get; set; } + + public string Label2 { get; set; } + + public int Nb { get; set; } + + public int Id { get; set; } + + public User User { get; set; } + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.Domain/StatsByYear.cs b/Back/skydiveLogs-api.Domain/StatsByYear.cs new file mode 100644 index 0000000..3fe078e --- /dev/null +++ b/Back/skydiveLogs-api.Domain/StatsByYear.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +namespace skydiveLogs_api.Domain +{ + public class StatsByYear + { + public string Label { get; set; } + + public string Label2 { get; set; } + + public int Nb { get; set; } + + public int Id { get; set; } + + public User User { get; set; } + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.Domain/StatsByYearByJumpType.cs b/Back/skydiveLogs-api.Domain/StatsByYearByJumpType.cs new file mode 100644 index 0000000..0fc8461 --- /dev/null +++ b/Back/skydiveLogs-api.Domain/StatsByYearByJumpType.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +namespace skydiveLogs_api.Domain +{ + public class StatsByYearByJumpType + { + public string Label { get; set; } + + public string Label2 { get; set; } + + public int Nb { get; set; } + + public int Id { get; set; } + + public User User { get; set; } + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.Domain/StatsForLastMonthByDz.cs b/Back/skydiveLogs-api.Domain/StatsForLastMonthByDz.cs new file mode 100644 index 0000000..77e21a2 --- /dev/null +++ b/Back/skydiveLogs-api.Domain/StatsForLastMonthByDz.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +namespace skydiveLogs_api.Domain +{ + public class StatsForLastMonthByDz + { + public string Label { get; set; } + + public string Label2 { get; set; } + + public int Nb { get; set; } + + public int Id { get; set; } + + public User User { get; set; } + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.Domain/StatsForLastMonthByJumpType.cs b/Back/skydiveLogs-api.Domain/StatsForLastMonthByJumpType.cs new file mode 100644 index 0000000..c6feffb --- /dev/null +++ b/Back/skydiveLogs-api.Domain/StatsForLastMonthByJumpType.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +namespace skydiveLogs_api.Domain +{ + public class StatsForLastMonthByJumpType + { + public string Label { get; set; } + + public string Label2 { get; set; } + + public int Nb { get; set; } + + public int Id { get; set; } + + public User User { get; set; } + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.Domain/StatsForLastYearByDz.cs b/Back/skydiveLogs-api.Domain/StatsForLastYearByDz.cs new file mode 100644 index 0000000..546792d --- /dev/null +++ b/Back/skydiveLogs-api.Domain/StatsForLastYearByDz.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +namespace skydiveLogs_api.Domain +{ + public class StatsForLastYearByDz + { + public string Label { get; set; } + + public string Label2 { get; set; } + + public int Nb { get; set; } + + public int Id { get; set; } + + public User User { get; set; } + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.Domain/StatsForLastYearByJumpType.cs b/Back/skydiveLogs-api.Domain/StatsForLastYearByJumpType.cs new file mode 100644 index 0000000..1f41ee1 --- /dev/null +++ b/Back/skydiveLogs-api.Domain/StatsForLastYearByJumpType.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +namespace skydiveLogs_api.Domain +{ + public class StatsForLastYearByJumpType + { + public string Label { get; set; } + + public string Label2 { get; set; } + + public int Nb { get; set; } + + public int Id { get; set; } + + public User User { get; set; } + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsByDzRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByDzRepository.cs new file mode 100644 index 0000000..b5af2c3 --- /dev/null +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByDzRepository.cs @@ -0,0 +1,13 @@ +using skydiveLogs_api.Domain; + +namespace skydiveLogs_api.DomainService.Repositories +{ + public interface IStatsByDzRepository : IRepository + { + #region Public Methods + + StatsByDz GetAll(User user); + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsByGearRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByGearRepository.cs new file mode 100644 index 0000000..02ac751 --- /dev/null +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByGearRepository.cs @@ -0,0 +1,13 @@ +using skydiveLogs_api.Domain; + +namespace skydiveLogs_api.DomainService.Repositories +{ + public interface IStatsByGearRepository : IRepository + { + #region Public Methods + + StatsByGear GetAll(User user); + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsByJumpTypeRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByJumpTypeRepository.cs new file mode 100644 index 0000000..555a76e --- /dev/null +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByJumpTypeRepository.cs @@ -0,0 +1,13 @@ +using skydiveLogs_api.Domain; + +namespace skydiveLogs_api.DomainService.Repositories +{ + public interface IStatsByJumpTypeRepository : IRepository + { + #region Public Methods + + StatsByJumpType GetAll(User user); + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsByYearByJumpTypeRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByYearByJumpTypeRepository.cs new file mode 100644 index 0000000..0da9de6 --- /dev/null +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByYearByJumpTypeRepository.cs @@ -0,0 +1,13 @@ +using skydiveLogs_api.Domain; + +namespace skydiveLogs_api.DomainService.Repositories +{ + public interface IStatsByYearByJumpTypeRepository : IRepository + { + #region Public Methods + + StatsByYearByJumpType GetAll(User user); + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsByYearRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByYearRepository.cs new file mode 100644 index 0000000..0f12ea3 --- /dev/null +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByYearRepository.cs @@ -0,0 +1,13 @@ +using skydiveLogs_api.Domain; + +namespace skydiveLogs_api.DomainService.Repositories +{ + public interface IStatsByYearRepository : IRepository + { + #region Public Methods + + StatsByYear GetAll(User user); + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastMonthByDzRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastMonthByDzRepository.cs new file mode 100644 index 0000000..9efdf24 --- /dev/null +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastMonthByDzRepository.cs @@ -0,0 +1,13 @@ +using skydiveLogs_api.Domain; + +namespace skydiveLogs_api.DomainService.Repositories +{ + public interface IStatsForLastMonthByDzRepository : IRepository + { + #region Public Methods + + StatsForLastMonthByDz GetAll(User user); + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastMonthByJumpTypeRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastMonthByJumpTypeRepository.cs new file mode 100644 index 0000000..c548b41 --- /dev/null +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastMonthByJumpTypeRepository.cs @@ -0,0 +1,13 @@ +using skydiveLogs_api.Domain; + +namespace skydiveLogs_api.DomainService.Repositories +{ + public interface IStatsForLastMonthByJumpTypeRepository : IRepository + { + #region Public Methods + + StatsForLastMonthByJumpType GetAll(User user); + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastYearByDzRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastYearByDzRepository.cs new file mode 100644 index 0000000..84712e8 --- /dev/null +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastYearByDzRepository.cs @@ -0,0 +1,13 @@ +using skydiveLogs_api.Domain; + +namespace skydiveLogs_api.DomainService.Repositories +{ + public interface IStatsForLastYearByDzRepository : IRepository + { + #region Public Methods + + StatsForLastYearByDz GetAll(User user); + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastYearByJumpTypeRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastYearByJumpTypeRepository.cs new file mode 100644 index 0000000..25b176e --- /dev/null +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastYearByJumpTypeRepository.cs @@ -0,0 +1,13 @@ +using skydiveLogs_api.Domain; + +namespace skydiveLogs_api.DomainService.Repositories +{ + public interface IStatsForLastYearByJumpTypeRepository : IRepository + { + #region Public Methods + + StatsForLastYearByJumpType GetAll(User user); + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.Infrastructure/Interfaces/IDataProvider.cs b/Back/skydiveLogs-api.Infrastructure/Interfaces/IDataProvider.cs index 9590cbe..cf934e2 100644 --- a/Back/skydiveLogs-api.Infrastructure/Interfaces/IDataProvider.cs +++ b/Back/skydiveLogs-api.Infrastructure/Interfaces/IDataProvider.cs @@ -30,12 +30,30 @@ namespace skydiveLogs_api.Infrastructure.Interfaces ILiteCollection CollOfJumpType { get; } - ILiteCollection CollOfStats { get; } - ILiteCollection CollOfUser { get; } - + ILiteCollection CollOfTunnelFlight { get; } + ILiteCollection CollOfStatsByAircraft { get; } + + ILiteCollection CollOfStatsByDz { get; } + + ILiteCollection CollOfStatsByGear { get; } + + ILiteCollection CollOfStatsByJumpType { get; } + + ILiteCollection CollOfStatsByYear { get; } + + ILiteCollection CollOfStatsForLastMonthByDz { get; } + + ILiteCollection CollOfStatsForLastMonthByJumpType { get; } + + ILiteCollection CollOfStatsForLastYearByDz { get; } + + ILiteCollection CollOfStatsForLastYearByJumpType { get; } + + ILiteCollection CollOfStatsByYearByJumpType { get; } + #endregion Public Properties } } \ No newline at end of file diff --git a/Back/skydiveLogs-api.Infrastructure/LiteDbProvider.cs b/Back/skydiveLogs-api.Infrastructure/LiteDbProvider.cs index 4cd74b6..3376856 100644 --- a/Back/skydiveLogs-api.Infrastructure/LiteDbProvider.cs +++ b/Back/skydiveLogs-api.Infrastructure/LiteDbProvider.cs @@ -21,8 +21,6 @@ namespace skydiveLogs_api.Infrastructure BsonMapper.Global.Entity().DbRef(x => x.User, "User"); - BsonMapper.Global.Entity().DbRef(x => x.User, "User"); - BsonMapper.Global.Entity().DbRef(x => x.User, "User"); BsonMapper.Global.Entity().DbRef(x => x.User, "User"); @@ -31,6 +29,17 @@ namespace skydiveLogs_api.Infrastructure BsonMapper.Global.Entity().DbRef(x => x.Tunnel, "DropZone"); BsonMapper.Global.Entity().DbRef(x => x.JumpType, "JumpType"); BsonMapper.Global.Entity().DbRef(x => x.User, "User"); + + BsonMapper.Global.Entity().DbRef(x => x.User, "User"); + BsonMapper.Global.Entity().DbRef(x => x.User, "User"); + BsonMapper.Global.Entity().DbRef(x => x.User, "User"); + BsonMapper.Global.Entity().DbRef(x => x.User, "User"); + BsonMapper.Global.Entity().DbRef(x => x.User, "User"); + BsonMapper.Global.Entity().DbRef(x => x.User, "User"); + BsonMapper.Global.Entity().DbRef(x => x.User, "User"); + BsonMapper.Global.Entity().DbRef(x => x.User, "User"); + BsonMapper.Global.Entity().DbRef(x => x.User, "User"); + BsonMapper.Global.Entity().DbRef(x => x.User, "User"); } #endregion Public Constructors @@ -58,10 +67,18 @@ namespace skydiveLogs_api.Infrastructure public ILiteCollection CollOfImage => _db.GetCollection(); public ILiteCollection CollOfJump => _db.GetCollection(); public ILiteCollection CollOfJumpType => _db.GetCollection(); - public ILiteCollection CollOfStats => _db.GetCollection(); public ILiteCollection CollOfUser => _db.GetCollection(); public ILiteCollection CollOfTunnelFlight => _db.GetCollection(); - + public ILiteCollection CollOfStatsByAircraft => _db.GetCollection(); + public ILiteCollection CollOfStatsByDz => _db.GetCollection(); + public ILiteCollection CollOfStatsByGear => _db.GetCollection(); + public ILiteCollection CollOfStatsByJumpType => _db.GetCollection(); + public ILiteCollection CollOfStatsByYear => _db.GetCollection(); + public ILiteCollection CollOfStatsForLastMonthByDz => _db.GetCollection(); + public ILiteCollection CollOfStatsForLastMonthByJumpType => _db.GetCollection(); + public ILiteCollection CollOfStatsForLastYearByDz => _db.GetCollection(); + public ILiteCollection CollOfStatsForLastYearByJumpType => _db.GetCollection(); + public ILiteCollection CollOfStatsByYearByJumpType => _db.GetCollection(); #endregion Public Properties #region Private Fields diff --git a/Back/skydiveLogs-api.Infrastructure/UserStatsRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByDzRepository.cs similarity index 74% rename from Back/skydiveLogs-api.Infrastructure/UserStatsRepository.cs rename to Back/skydiveLogs-api.Infrastructure/StatsByDzRepository.cs index dbe9305..0771146 100644 --- a/Back/skydiveLogs-api.Infrastructure/UserStatsRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsByDzRepository.cs @@ -1,4 +1,4 @@ -using LiteDB; +using LiteDB; using skydiveLogs_api.Domain; using skydiveLogs_api.DomainService.Repositories; using skydiveLogs_api.Infrastructure.Interfaces; @@ -6,21 +6,21 @@ using System.Collections.Generic; namespace skydiveLogs_api.Infrastructure { - public class UserStatsRepository : IUserStatsRepository + public class StatsByDzRepository : IStatsByDzRepository { #region Public Constructors - public UserStatsRepository(IDataProvider dataProvider) + public StatsByDzRepository(IDataProvider dataProvider) { _dataProvider = dataProvider; - _col = _dataProvider.CollOfStats; + _col = _dataProvider.CollOfStatsByDz; } #endregion Public Constructors #region Public Methods - public int Add(UserStats newStats) + public int Add(StatsByDz newStats) { int result; @@ -37,12 +37,12 @@ namespace skydiveLogs_api.Infrastructure return result; } - public IEnumerable GetAll() + public IEnumerable GetAll() { throw new System.NotImplementedException(); } - public UserStats GetAll(User user) + public StatsByDz GetAll(User user) { return _col.Include(x => x.User) .Query() @@ -50,7 +50,7 @@ namespace skydiveLogs_api.Infrastructure .SingleOrDefault(); } - public UserStats GetById(int id) + public StatsByDz GetById(int id) { throw new System.NotImplementedException(); } @@ -60,7 +60,7 @@ namespace skydiveLogs_api.Infrastructure throw new System.NotImplementedException(); } - public bool Update(UserStats stats) + public bool Update(StatsByDz stats) { return _col.Update(stats); } @@ -69,7 +69,7 @@ namespace skydiveLogs_api.Infrastructure #region Private Fields - private readonly ILiteCollection _col; + private readonly ILiteCollection _col; private readonly IDataProvider _dataProvider; #endregion Private Fields diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByGearRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByGearRepository.cs new file mode 100644 index 0000000..6f65985 --- /dev/null +++ b/Back/skydiveLogs-api.Infrastructure/StatsByGearRepository.cs @@ -0,0 +1,77 @@ +using LiteDB; +using skydiveLogs_api.Domain; +using skydiveLogs_api.DomainService.Repositories; +using skydiveLogs_api.Infrastructure.Interfaces; +using System.Collections.Generic; + +namespace skydiveLogs_api.Infrastructure +{ + public class StatsByGearRepository : IStatsByGearRepository + { + #region Public Constructors + + public StatsByGearRepository(IDataProvider dataProvider) + { + _dataProvider = dataProvider; + _col = _dataProvider.CollOfStatsByGear; + } + + #endregion Public Constructors + + #region Public Methods + + public int Add(StatsByGear newStats) + { + int result; + + try + { + var tmp = _col.Insert(newStats); + result = tmp.AsInt32; + } + catch + { + result = 0; + } + + return result; + } + + public IEnumerable GetAll() + { + throw new System.NotImplementedException(); + } + + public StatsByGear GetAll(User user) + { + return _col.Include(x => x.User) + .Query() + .Where(j => j.User.Id == user.Id) + .SingleOrDefault(); + } + + public StatsByGear GetById(int id) + { + throw new System.NotImplementedException(); + } + + public int GetCount() + { + throw new System.NotImplementedException(); + } + + public bool Update(StatsByGear stats) + { + return _col.Update(stats); + } + + #endregion Public Methods + + #region Private Fields + + private readonly ILiteCollection _col; + private readonly IDataProvider _dataProvider; + + #endregion Private Fields + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByJumpTypeRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByJumpTypeRepository.cs new file mode 100644 index 0000000..0ee2f21 --- /dev/null +++ b/Back/skydiveLogs-api.Infrastructure/StatsByJumpTypeRepository.cs @@ -0,0 +1,77 @@ +using LiteDB; +using skydiveLogs_api.Domain; +using skydiveLogs_api.DomainService.Repositories; +using skydiveLogs_api.Infrastructure.Interfaces; +using System.Collections.Generic; + +namespace skydiveLogs_api.Infrastructure +{ + public class StatsByJumpTypeRepository : IStatsByJumpTypeRepository + { + #region Public Constructors + + public StatsByJumpTypeRepository(IDataProvider dataProvider) + { + _dataProvider = dataProvider; + _col = _dataProvider.CollOfStatsByJumpType; + } + + #endregion Public Constructors + + #region Public Methods + + public int Add(StatsByJumpType newStats) + { + int result; + + try + { + var tmp = _col.Insert(newStats); + result = tmp.AsInt32; + } + catch + { + result = 0; + } + + return result; + } + + public IEnumerable GetAll() + { + throw new System.NotImplementedException(); + } + + public StatsByJumpType GetAll(User user) + { + return _col.Include(x => x.User) + .Query() + .Where(j => j.User.Id == user.Id) + .SingleOrDefault(); + } + + public StatsByJumpType GetById(int id) + { + throw new System.NotImplementedException(); + } + + public int GetCount() + { + throw new System.NotImplementedException(); + } + + public bool Update(StatsByJumpType stats) + { + return _col.Update(stats); + } + + #endregion Public Methods + + #region Private Fields + + private readonly ILiteCollection _col; + private readonly IDataProvider _dataProvider; + + #endregion Private Fields + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByYearByJumpTypeRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByYearByJumpTypeRepository.cs new file mode 100644 index 0000000..c35e296 --- /dev/null +++ b/Back/skydiveLogs-api.Infrastructure/StatsByYearByJumpTypeRepository.cs @@ -0,0 +1,77 @@ +using LiteDB; +using skydiveLogs_api.Domain; +using skydiveLogs_api.DomainService.Repositories; +using skydiveLogs_api.Infrastructure.Interfaces; +using System.Collections.Generic; + +namespace skydiveLogs_api.Infrastructure +{ + public class StatsByYearByJumpTypeRepository : IStatsByYearByJumpTypeRepository + { + #region Public Constructors + + public StatsByYearByJumpTypeRepository(IDataProvider dataProvider) + { + _dataProvider = dataProvider; + _col = _dataProvider.CollOfStatsByYearByJumpType; + } + + #endregion Public Constructors + + #region Public Methods + + public int Add(StatsByYearByJumpType newStats) + { + int result; + + try + { + var tmp = _col.Insert(newStats); + result = tmp.AsInt32; + } + catch + { + result = 0; + } + + return result; + } + + public IEnumerable GetAll() + { + throw new System.NotImplementedException(); + } + + public StatsByYearByJumpType GetAll(User user) + { + return _col.Include(x => x.User) + .Query() + .Where(j => j.User.Id == user.Id) + .SingleOrDefault(); + } + + public StatsByYearByJumpType GetById(int id) + { + throw new System.NotImplementedException(); + } + + public int GetCount() + { + throw new System.NotImplementedException(); + } + + public bool Update(StatsByYearByJumpType stats) + { + return _col.Update(stats); + } + + #endregion Public Methods + + #region Private Fields + + private readonly ILiteCollection _col; + private readonly IDataProvider _dataProvider; + + #endregion Private Fields + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByYearRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByYearRepository.cs new file mode 100644 index 0000000..085b96a --- /dev/null +++ b/Back/skydiveLogs-api.Infrastructure/StatsByYearRepository.cs @@ -0,0 +1,77 @@ +using LiteDB; +using skydiveLogs_api.Domain; +using skydiveLogs_api.DomainService.Repositories; +using skydiveLogs_api.Infrastructure.Interfaces; +using System.Collections.Generic; + +namespace skydiveLogs_api.Infrastructure +{ + public class StatsByYearRepository : IStatsByYearRepository + { + #region Public Constructors + + public StatsByYearRepository(IDataProvider dataProvider) + { + _dataProvider = dataProvider; + _col = _dataProvider.CollOfStatsByYear; + } + + #endregion Public Constructors + + #region Public Methods + + public int Add(StatsByYear newStats) + { + int result; + + try + { + var tmp = _col.Insert(newStats); + result = tmp.AsInt32; + } + catch + { + result = 0; + } + + return result; + } + + public IEnumerable GetAll() + { + throw new System.NotImplementedException(); + } + + public StatsByYear GetAll(User user) + { + return _col.Include(x => x.User) + .Query() + .Where(j => j.User.Id == user.Id) + .SingleOrDefault(); + } + + public StatsByYear GetById(int id) + { + throw new System.NotImplementedException(); + } + + public int GetCount() + { + throw new System.NotImplementedException(); + } + + public bool Update(StatsByYear stats) + { + return _col.Update(stats); + } + + #endregion Public Methods + + #region Private Fields + + private readonly ILiteCollection _col; + private readonly IDataProvider _dataProvider; + + #endregion Private Fields + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByDzRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByDzRepository.cs new file mode 100644 index 0000000..b68cdd6 --- /dev/null +++ b/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByDzRepository.cs @@ -0,0 +1,77 @@ +using LiteDB; +using skydiveLogs_api.Domain; +using skydiveLogs_api.DomainService.Repositories; +using skydiveLogs_api.Infrastructure.Interfaces; +using System.Collections.Generic; + +namespace skydiveLogs_api.Infrastructure +{ + public class StatsForLastMonthByDzRepository : IStatsForLastMonthByDzRepository + { + #region Public Constructors + + public StatsForLastMonthByDzRepository(IDataProvider dataProvider) + { + _dataProvider = dataProvider; + _col = _dataProvider.CollOfStatsForLastMonthByDz; + } + + #endregion Public Constructors + + #region Public Methods + + public int Add(StatsForLastMonthByDz newStats) + { + int result; + + try + { + var tmp = _col.Insert(newStats); + result = tmp.AsInt32; + } + catch + { + result = 0; + } + + return result; + } + + public IEnumerable GetAll() + { + throw new System.NotImplementedException(); + } + + public StatsForLastMonthByDz GetAll(User user) + { + return _col.Include(x => x.User) + .Query() + .Where(j => j.User.Id == user.Id) + .SingleOrDefault(); + } + + public StatsForLastMonthByDz GetById(int id) + { + throw new System.NotImplementedException(); + } + + public int GetCount() + { + throw new System.NotImplementedException(); + } + + public bool Update(StatsForLastMonthByDz stats) + { + return _col.Update(stats); + } + + #endregion Public Methods + + #region Private Fields + + private readonly ILiteCollection _col; + private readonly IDataProvider _dataProvider; + + #endregion Private Fields + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByJumpTypeRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByJumpTypeRepository.cs new file mode 100644 index 0000000..4416306 --- /dev/null +++ b/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByJumpTypeRepository.cs @@ -0,0 +1,77 @@ +using LiteDB; +using skydiveLogs_api.Domain; +using skydiveLogs_api.DomainService.Repositories; +using skydiveLogs_api.Infrastructure.Interfaces; +using System.Collections.Generic; + +namespace skydiveLogs_api.Infrastructure +{ + public class StatsForLastMonthByJumpTypeRepository : IStatsForLastMonthByJumpTypeRepository + { + #region Public Constructors + + public StatsForLastMonthByJumpTypeRepository(IDataProvider dataProvider) + { + _dataProvider = dataProvider; + _col = _dataProvider.CollOfStatsForLastMonthByJumpType; + } + + #endregion Public Constructors + + #region Public Methods + + public int Add(StatsForLastMonthByJumpType newStats) + { + int result; + + try + { + var tmp = _col.Insert(newStats); + result = tmp.AsInt32; + } + catch + { + result = 0; + } + + return result; + } + + public IEnumerable GetAll() + { + throw new System.NotImplementedException(); + } + + public StatsForLastMonthByJumpType GetAll(User user) + { + return _col.Include(x => x.User) + .Query() + .Where(j => j.User.Id == user.Id) + .SingleOrDefault(); + } + + public StatsForLastMonthByJumpType GetById(int id) + { + throw new System.NotImplementedException(); + } + + public int GetCount() + { + throw new System.NotImplementedException(); + } + + public bool Update(StatsForLastMonthByJumpType stats) + { + return _col.Update(stats); + } + + #endregion Public Methods + + #region Private Fields + + private readonly ILiteCollection _col; + private readonly IDataProvider _dataProvider; + + #endregion Private Fields + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByDzRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByDzRepository.cs new file mode 100644 index 0000000..38dd2c3 --- /dev/null +++ b/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByDzRepository.cs @@ -0,0 +1,77 @@ +using LiteDB; +using skydiveLogs_api.Domain; +using skydiveLogs_api.DomainService.Repositories; +using skydiveLogs_api.Infrastructure.Interfaces; +using System.Collections.Generic; + +namespace skydiveLogs_api.Infrastructure +{ + public class StatsForLastYearByDzRepository : IStatsForLastYearByDzRepository + { + #region Public Constructors + + public StatsForLastYearByDzRepository(IDataProvider dataProvider) + { + _dataProvider = dataProvider; + _col = _dataProvider.CollOfStatsForLastYearByDz; + } + + #endregion Public Constructors + + #region Public Methods + + public int Add(StatsForLastYearByDz newStats) + { + int result; + + try + { + var tmp = _col.Insert(newStats); + result = tmp.AsInt32; + } + catch + { + result = 0; + } + + return result; + } + + public IEnumerable GetAll() + { + throw new System.NotImplementedException(); + } + + public StatsForLastYearByDz GetAll(User user) + { + return _col.Include(x => x.User) + .Query() + .Where(j => j.User.Id == user.Id) + .SingleOrDefault(); + } + + public StatsForLastYearByDz GetById(int id) + { + throw new System.NotImplementedException(); + } + + public int GetCount() + { + throw new System.NotImplementedException(); + } + + public bool Update(StatsForLastYearByDz stats) + { + return _col.Update(stats); + } + + #endregion Public Methods + + #region Private Fields + + private readonly ILiteCollection _col; + private readonly IDataProvider _dataProvider; + + #endregion Private Fields + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByJumpTypeRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByJumpTypeRepository.cs new file mode 100644 index 0000000..fd7ae3f --- /dev/null +++ b/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByJumpTypeRepository.cs @@ -0,0 +1,77 @@ +using LiteDB; +using skydiveLogs_api.Domain; +using skydiveLogs_api.DomainService.Repositories; +using skydiveLogs_api.Infrastructure.Interfaces; +using System.Collections.Generic; + +namespace skydiveLogs_api.Infrastructure +{ + public class StatsForLastYearByJumpTypeRepository : IStatsForLastYearByJumpTypeRepository + { + #region Public Constructors + + public StatsForLastYearByJumpTypeRepository(IDataProvider dataProvider) + { + _dataProvider = dataProvider; + _col = _dataProvider.CollOfStatsForLastYearByJumpType; + } + + #endregion Public Constructors + + #region Public Methods + + public int Add(StatsForLastYearByJumpType newStats) + { + int result; + + try + { + var tmp = _col.Insert(newStats); + result = tmp.AsInt32; + } + catch + { + result = 0; + } + + return result; + } + + public IEnumerable GetAll() + { + throw new System.NotImplementedException(); + } + + public StatsForLastYearByJumpType GetAll(User user) + { + return _col.Include(x => x.User) + .Query() + .Where(j => j.User.Id == user.Id) + .SingleOrDefault(); + } + + public StatsForLastYearByJumpType GetById(int id) + { + throw new System.NotImplementedException(); + } + + public int GetCount() + { + throw new System.NotImplementedException(); + } + + public bool Update(StatsForLastYearByJumpType stats) + { + return _col.Update(stats); + } + + #endregion Public Methods + + #region Private Fields + + private readonly ILiteCollection _col; + private readonly IDataProvider _dataProvider; + + #endregion Private Fields + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.Ioc/IocService.cs b/Back/skydiveLogs-api.Ioc/IocService.cs index a08586b..82c4435 100644 --- a/Back/skydiveLogs-api.Ioc/IocService.cs +++ b/Back/skydiveLogs-api.Ioc/IocService.cs @@ -52,9 +52,18 @@ namespace skydiveLogs_api.Ioc _services.AddScoped(); _services.AddScoped(); _services.AddScoped(); - _services.AddScoped(); _services.AddScoped(); + _services.AddScoped(); + _services.AddScoped(); + _services.AddScoped(); + _services.AddScoped(); + _services.AddScoped(); + _services.AddScoped(); + _services.AddScoped(); + _services.AddScoped(); + _services.AddScoped(); + string connectionString = _configuration.GetConnectionString("DefaultConnection"); _services.AddSingleton(c => new LiteDbProvider(connectionString)); } -- 2.49.1 From eb42aebfd139df9026d6eaa2e87bdba501fc00cc Mon Sep 17 00:00:00 2001 From: sandre Date: Thu, 22 Jan 2026 16:30:47 +0100 Subject: [PATCH 02/11] Begin with add services and interfaces --- Back/skydiveLogs-api.Domain/UserStats.cs | 42 -- .../Interfaces/IStatsByDzService.cs | 14 + .../Interfaces/IStatsByGearService.cs | 14 + .../Interfaces/IStatsByJumpTypeService.cs | 14 + .../IStatsByYearByJumpTypeService.cs | 14 + .../Interfaces/IStatsByYearService.cs | 13 + .../IStatsForLastMonthByDzService.cs | 14 + .../IStatsForLastMonthByJumpTypeService.cs | 14 + .../IStatsForLastYearByDzService.cs | 14 + .../IStatsForLastYearByJumpTypeService.cs | 14 + .../Interfaces/IStatsService.cs | 21 - .../StatsByDzService.cs | 399 ++++++++++++++++++ .../StatsByGearService.cs | 396 +++++++++++++++++ .../StatsByJumpTypeService.cs | 396 +++++++++++++++++ .../StatsByYearByJumpTypeService.cs | 396 +++++++++++++++++ .../StatsByYearService.cs | 396 +++++++++++++++++ .../StatsForLastMonthByDzService.cs | 396 +++++++++++++++++ .../StatsForLastMonthByJumpTypeService.cs | 396 +++++++++++++++++ .../StatsForLastYearByDzService.cs | 396 +++++++++++++++++ .../StatsForLastYearByJumpTypeService.cs | 396 +++++++++++++++++ .../StatsService.cs | 344 +-------------- .../Repositories/IUserStatsRepository.cs | 13 - Back/skydiveLogs-api.Ioc/IocService.cs | 12 +- 23 files changed, 3717 insertions(+), 407 deletions(-) delete mode 100644 Back/skydiveLogs-api.Domain/UserStats.cs create mode 100644 Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByDzService.cs create mode 100644 Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByGearService.cs create mode 100644 Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByJumpTypeService.cs create mode 100644 Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearByJumpTypeService.cs create mode 100644 Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearService.cs create mode 100644 Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByDzService.cs create mode 100644 Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByJumpTypeService.cs create mode 100644 Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByDzService.cs create mode 100644 Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByJumpTypeService.cs create mode 100644 Back/skydiveLogs-api.DomainBusiness/StatsByDzService.cs create mode 100644 Back/skydiveLogs-api.DomainBusiness/StatsByGearService.cs create mode 100644 Back/skydiveLogs-api.DomainBusiness/StatsByJumpTypeService.cs create mode 100644 Back/skydiveLogs-api.DomainBusiness/StatsByYearByJumpTypeService.cs create mode 100644 Back/skydiveLogs-api.DomainBusiness/StatsByYearService.cs create mode 100644 Back/skydiveLogs-api.DomainBusiness/StatsForLastMonthByDzService.cs create mode 100644 Back/skydiveLogs-api.DomainBusiness/StatsForLastMonthByJumpTypeService.cs create mode 100644 Back/skydiveLogs-api.DomainBusiness/StatsForLastYearByDzService.cs create mode 100644 Back/skydiveLogs-api.DomainBusiness/StatsForLastYearByJumpTypeService.cs delete mode 100644 Back/skydiveLogs-api.DomainService/Repositories/IUserStatsRepository.cs diff --git a/Back/skydiveLogs-api.Domain/UserStats.cs b/Back/skydiveLogs-api.Domain/UserStats.cs deleted file mode 100644 index 0303b74..0000000 --- a/Back/skydiveLogs-api.Domain/UserStats.cs +++ /dev/null @@ -1,42 +0,0 @@ -using System.Collections.Generic; - -namespace skydiveLogs_api.Domain -{ - public class UserStats - { - #region Public Constructors - - public UserStats() - { - ByAircraft = new List(); - ByDz = new List(); - ByGear = new List(); - ByJumpType = new List(); - ByYear = new List(); - ForLastMonthByDz = new List(); - ForLastMonthByJumpType = new List(); - ForLastYearByDz = new List(); - ForLastYearByJumpType = new List(); - ByYearByJumpType = new List(); - } - - #endregion Public Constructors - - #region Public Properties - - public IEnumerable ByAircraft { get; set; } - public IEnumerable ByDz { get; set; } - public IEnumerable ByGear { get; set; } - public IEnumerable ByJumpType { get; set; } - public IEnumerable ByYear { get; set; } - public IEnumerable ForLastMonthByDz { get; set; } - public IEnumerable ForLastMonthByJumpType { get; set; } - public IEnumerable ForLastYearByDz { get; set; } - public IEnumerable ForLastYearByJumpType { get; set; } - public IEnumerable ByYearByJumpType { get; set; } - public int Id { get; set; } - public User User { get; set; } - - #endregion Public Properties - } -} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByDzService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByDzService.cs new file mode 100644 index 0000000..20e2b9a --- /dev/null +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByDzService.cs @@ -0,0 +1,14 @@ +using skydiveLogs_api.Domain; +using System.Collections.Generic; + +namespace skydiveLogs_api.DomainBusiness.Interfaces +{ + public interface IStatsByDzService + { + #region Public Methods + + IEnumerable GetStats(); + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByGearService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByGearService.cs new file mode 100644 index 0000000..69077d5 --- /dev/null +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByGearService.cs @@ -0,0 +1,14 @@ +using skydiveLogs_api.Domain; +using System.Collections.Generic; + +namespace skydiveLogs_api.DomainBusiness.Interfaces +{ + public interface IStatsByGearService + { + #region Public Methods + + IEnumerable GetStats(); + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByJumpTypeService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByJumpTypeService.cs new file mode 100644 index 0000000..ec89782 --- /dev/null +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByJumpTypeService.cs @@ -0,0 +1,14 @@ +using skydiveLogs_api.Domain; +using System.Collections.Generic; + +namespace skydiveLogs_api.DomainBusiness.Interfaces +{ + public interface IStatsByJumpTypeService + { + #region Public Methods + + IEnumerable GetStats(); + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearByJumpTypeService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearByJumpTypeService.cs new file mode 100644 index 0000000..d14db86 --- /dev/null +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearByJumpTypeService.cs @@ -0,0 +1,14 @@ +using skydiveLogs_api.Domain; +using System.Collections.Generic; + +namespace skydiveLogs_api.DomainBusiness.Interfaces +{ + public interface IStatsByYearByJumpTypeService + { + #region Public Methods + + IEnumerable GetStats(); + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearService.cs new file mode 100644 index 0000000..780ff1c --- /dev/null +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearService.cs @@ -0,0 +1,13 @@ +using skydiveLogs_api.Domain; +using System.Collections.Generic; + +namespace skydiveLogs_api.DomainBusiness.Interfaces +{ + public interface IStatsByYearService + { + #region Public Methods + IEnumerable GetStats(); + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByDzService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByDzService.cs new file mode 100644 index 0000000..57d0a33 --- /dev/null +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByDzService.cs @@ -0,0 +1,14 @@ +using skydiveLogs_api.Domain; +using System.Collections.Generic; + +namespace skydiveLogs_api.DomainBusiness.Interfaces +{ + public interface IStatsForLastMonthByDzService + { + #region Public Methods + + IEnumerable GetStats(); + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByJumpTypeService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByJumpTypeService.cs new file mode 100644 index 0000000..7dc7565 --- /dev/null +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByJumpTypeService.cs @@ -0,0 +1,14 @@ +using skydiveLogs_api.Domain; +using System.Collections.Generic; + +namespace skydiveLogs_api.DomainBusiness.Interfaces +{ + public interface IStatsForLastMonthByJumpTypeService + { + #region Public Methods + + IEnumerable GetStats(); + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByDzService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByDzService.cs new file mode 100644 index 0000000..ad0f651 --- /dev/null +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByDzService.cs @@ -0,0 +1,14 @@ +using skydiveLogs_api.Domain; +using System.Collections.Generic; + +namespace skydiveLogs_api.DomainBusiness.Interfaces +{ + public interface IStatsForLastYearByDzService + { + #region Public Methods + + IEnumerable GetStats(); + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByJumpTypeService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByJumpTypeService.cs new file mode 100644 index 0000000..7ee94da --- /dev/null +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByJumpTypeService.cs @@ -0,0 +1,14 @@ +using skydiveLogs_api.Domain; +using System.Collections.Generic; + +namespace skydiveLogs_api.DomainBusiness.Interfaces +{ + public interface IStatsForLastYearByJumpTypeService + { + #region Public Methods + + IEnumerable GetStats(); + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsService.cs index a04913b..f01349e 100644 --- a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsService.cs @@ -1,5 +1,4 @@ using skydiveLogs_api.Domain; -using System.Collections.Generic; namespace skydiveLogs_api.DomainBusiness.Interfaces { @@ -9,26 +8,6 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces SimpleSummary GetSimpleSummary(); - IEnumerable GetStatsByAircraft(); - - IEnumerable GetStatsByDz(); - - IEnumerable GetStatsByGear(); - - IEnumerable GetStatsByJumpType(); - - IEnumerable GetStatsByYear(); - - IEnumerable GetStatsForLastMonthByDz(); - - IEnumerable GetStatsForLastMonthByJumpType(); - - IEnumerable GetStatsForLastYearByDz(); - - IEnumerable GetStatsForLastYearByJumpType(); - - IEnumerable GetStatsByYearByJumpType(); - void Reset(); #endregion Public Methods diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsByDzService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsByDzService.cs new file mode 100644 index 0000000..0664085 --- /dev/null +++ b/Back/skydiveLogs-api.DomainBusiness/StatsByDzService.cs @@ -0,0 +1,399 @@ +using skydiveLogs_api.Domain; +using skydiveLogs_api.DomainBusiness.Interfaces; +using skydiveLogs_api.DomainService.Repositories; +using System.Collections.Generic; +using System.Linq; + +namespace skydiveLogs_api.DomainBusiness +{ + public class StatsByDzService : IStatsByDzService + { + #region Public Constructors + + public StatsByDzService(IJumpService jumpService, + IIdentityService identityService, + IStatsByDzRepository statsByDzRepository) + { + _jumpService = jumpService; + _identityService = identityService; + _statsByDzRepository = statsByDzRepository; + } + + #endregion Public Constructors + + #region Public Methods + + public IEnumerable GetStats() + { + // var allStats = GetAllStats(); + // if (!allStats.ByAircraft.Any()) + // { + // var allJumps = _jumpService.GetAllJumps(); + // var results = new List(); + + // if (allJumps.Any()) + // { + // results = [.. allJumps.GroupBy(j => j.Aircraft.Name, + // j => j, + // (groupby, jumps) => new Statistic + // { + // Label = groupby.ToString(), + // Nb = jumps.Count() + // })]; + // } + + // allStats.ByAircraft = results; + // _userStatsRepository.Update(allStats); + // } + + // return allStats.ByAircraft; + return null; + } + + public SimpleSummary GetSimpleSummary() + { + var allJumps = _jumpService.GetAllJumps(); + var results = new SimpleSummary(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + + results = new SimpleSummary + { + LastJump = lastJump, + TotalJumps = allJumps.Count(), + TotalCutaways = allJumps.Where(j => j.WithCutaway).Count() + }; + } + + return results; + } + + public IEnumerable GetStatsByAircraft() + { + var allStats = GetAllStats(); + if (!allStats.ByAircraft.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.Aircraft.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByAircraft = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByAircraft; + } + + public IEnumerable GetStatsByDz() + { + var allStats = GetAllStats(); + if (!allStats.ByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByDz; + } + + public IEnumerable GetStatsByGear() + { + var allStats = GetAllStats(); + if (!allStats.ByGear.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => $"{j.Gear.Name} / {j.Gear.MainCanopy}", + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByGear = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByGear; + } + + public IEnumerable GetStatsByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByJumpType; + } + + public IEnumerable GetStatsByYear() + { + var allStats = GetAllStats(); + if (!allStats.ByYear.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.JumpDate.Year, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByYear = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByYear; + } + + public IEnumerable GetStatsForLastMonthByDz() + { + var allStats = GetAllStats(); + if (!allStats.ForLastMonthByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + var monthOfLastJump = lastJump.JumpDate.Month; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) + .GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastMonthByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastMonthByDz; + } + + public IEnumerable GetStatsForLastMonthByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ForLastMonthByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + var monthOfLastJump = lastJump.JumpDate.Month; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) + .GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastMonthByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastMonthByJumpType; + } + + public IEnumerable GetStatsForLastYearByDz() + { + var allStats = GetAllStats(); + if (!allStats.ForLastYearByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) + .GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastYearByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastYearByDz; + } + + public IEnumerable GetStatsForLastYearByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ForLastYearByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) + .GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastYearByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastYearByJumpType; + } + + public IEnumerable GetStatsByYearByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ByYearByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => new { j.JumpType.Name, j.JumpDate.Year }, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.Year.ToString(), + Label2 = groupby.Name.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByYearByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByYearByJumpType; + } + + public void Reset() + { + var resetStats = new UserStats(); + var myStats = GetAllStats(); + myStats.ByAircraft = resetStats.ByAircraft; + myStats.ByDz = resetStats.ByDz; + myStats.ByGear = resetStats.ByGear; + myStats.ByJumpType = resetStats.ByJumpType; + myStats.ByYear = resetStats.ByYear; + myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; + myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; + myStats.ForLastYearByDz = resetStats.ForLastYearByDz; + myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; + myStats.ByYearByJumpType = resetStats.ByYearByJumpType; + + _userStatsRepository.Update(myStats); + } + + #endregion Public Methods + + #region Private Methods + + private UserStats GetAllStats() + { + var allStats = _userStatsRepository.GetAll(_identityService.ConnectedUser); + if (allStats == null) + { + allStats = new UserStats + { + User = _identityService.ConnectedUser + }; + _userStatsRepository.Add(allStats); + } + + return allStats; + } + + #endregion Private Methods + + #region Private Fields + + private readonly IIdentityService _identityService; + private readonly IJumpService _jumpService; + private readonly IStatsByDzRepository _statsByDzRepository; + + #endregion Private Fields + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsByGearService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsByGearService.cs new file mode 100644 index 0000000..177fbad --- /dev/null +++ b/Back/skydiveLogs-api.DomainBusiness/StatsByGearService.cs @@ -0,0 +1,396 @@ +using skydiveLogs_api.Domain; +using skydiveLogs_api.DomainBusiness.Interfaces; +using skydiveLogs_api.DomainService.Repositories; +using System.Collections.Generic; +using System.Linq; + +namespace skydiveLogs_api.DomainBusiness +{ + public class StatsByGearService : IStatsByGearService + { + #region Public Constructors + + public StatsByGearService(IJumpService jumpService, + IIdentityService identityService, + IStatsByDzRepository statsByDzRepository, + IStatsByGearRepository statsByGearRepository, + IStatsByJumpTypeRepository statsByJumpTypeRepository, + IStatsByYearByJumpTypeRepository statsByYearByJumpTypeRepository, + IStatsByYearRepository statsByYearRepository, + IStatsForLastMonthByDzRepository statsForLastMonthByDzRepository, + IStatsForLastMonthByJumpTypeRepository statsForLastMonthByJumpTypeRepository, + IStatsForLastYearByDzRepository statsForLastYearByDzRepository, + IStatsForLastYearByJumpTypeRepository statsForLastYearByJumpTypeRepository) + { + _jumpService = jumpService; + _identityService = identityService; + _statsByDzRepository = statsByDzRepository; + _statsByGearRepository = statsByGearRepository; + _statsByJumpTypeRepository = statsByJumpTypeRepository; + _statsByYearByJumpTypeRepository = statsByYearByJumpTypeRepository; + _statsByYearRepository = statsByYearRepository; + _statsForLastMonthByDzRepository = statsForLastMonthByDzRepository; + _statsForLastMonthByJumpTypeRepository = statsForLastMonthByJumpTypeRepository; + _statsForLastYearByDzRepository = statsForLastYearByDzRepository; + _statsForLastYearByJumpTypeRepository = statsForLastYearByJumpTypeRepository; + } + + #endregion Public Constructors + + #region Public Methods + + public SimpleSummary GetSimpleSummary() + { + var allJumps = _jumpService.GetAllJumps(); + var results = new SimpleSummary(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + + results = new SimpleSummary + { + LastJump = lastJump, + TotalJumps = allJumps.Count(), + TotalCutaways = allJumps.Where(j => j.WithCutaway).Count() + }; + } + + return results; + } + + public IEnumerable GetStatsByAircraft() + { + var allStats = GetAllStats(); + if (!allStats.ByAircraft.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.Aircraft.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByAircraft = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByAircraft; + } + + public IEnumerable GetStatsByDz() + { + var allStats = GetAllStats(); + if (!allStats.ByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByDz; + } + + public IEnumerable GetStatsByGear() + { + var allStats = GetAllStats(); + if (!allStats.ByGear.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => $"{j.Gear.Name} / {j.Gear.MainCanopy}", + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByGear = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByGear; + } + + public IEnumerable GetStatsByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByJumpType; + } + + public IEnumerable GetStatsByYear() + { + var allStats = GetAllStats(); + if (!allStats.ByYear.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.JumpDate.Year, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByYear = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByYear; + } + + public IEnumerable GetStatsForLastMonthByDz() + { + var allStats = GetAllStats(); + if (!allStats.ForLastMonthByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + var monthOfLastJump = lastJump.JumpDate.Month; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) + .GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastMonthByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastMonthByDz; + } + + public IEnumerable GetStatsForLastMonthByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ForLastMonthByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + var monthOfLastJump = lastJump.JumpDate.Month; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) + .GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastMonthByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastMonthByJumpType; + } + + public IEnumerable GetStatsForLastYearByDz() + { + var allStats = GetAllStats(); + if (!allStats.ForLastYearByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) + .GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastYearByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastYearByDz; + } + + public IEnumerable GetStatsForLastYearByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ForLastYearByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) + .GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastYearByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastYearByJumpType; + } + + public IEnumerable GetStatsByYearByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ByYearByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => new { j.JumpType.Name, j.JumpDate.Year }, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.Year.ToString(), + Label2 = groupby.Name.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByYearByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByYearByJumpType; + } + + public void Reset() + { + var resetStats = new UserStats(); + var myStats = GetAllStats(); + myStats.ByAircraft = resetStats.ByAircraft; + myStats.ByDz = resetStats.ByDz; + myStats.ByGear = resetStats.ByGear; + myStats.ByJumpType = resetStats.ByJumpType; + myStats.ByYear = resetStats.ByYear; + myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; + myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; + myStats.ForLastYearByDz = resetStats.ForLastYearByDz; + myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; + myStats.ByYearByJumpType = resetStats.ByYearByJumpType; + + _userStatsRepository.Update(myStats); + } + + #endregion Public Methods + + #region Private Methods + + private UserStats GetAllStats() + { + var allStats = _userStatsRepository.GetAll(_identityService.ConnectedUser); + if (allStats == null) + { + allStats = new UserStats + { + User = _identityService.ConnectedUser + }; + _userStatsRepository.Add(allStats); + } + + return allStats; + } + + #endregion Private Methods + + #region Private Fields + + private readonly IIdentityService _identityService; + private readonly IJumpService _jumpService; + private readonly IStatsByDzRepository _statsByDzRepository; + private readonly IStatsByGearRepository _statsByGearRepository; + private readonly IStatsByJumpTypeRepository _statsByJumpTypeRepository; + private readonly IStatsByYearByJumpTypeRepository _statsByYearByJumpTypeRepository; + private readonly IStatsByYearRepository _statsByYearRepository; + private readonly IStatsForLastMonthByDzRepository _statsForLastMonthByDzRepository; + private readonly IStatsForLastMonthByJumpTypeRepository _statsForLastMonthByJumpTypeRepository; + private readonly IStatsForLastYearByDzRepository _statsForLastYearByDzRepository; + private readonly IStatsForLastYearByJumpTypeRepository _statsForLastYearByJumpTypeRepository; + + #endregion Private Fields + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsByJumpTypeService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsByJumpTypeService.cs new file mode 100644 index 0000000..9a46f75 --- /dev/null +++ b/Back/skydiveLogs-api.DomainBusiness/StatsByJumpTypeService.cs @@ -0,0 +1,396 @@ +using skydiveLogs_api.Domain; +using skydiveLogs_api.DomainBusiness.Interfaces; +using skydiveLogs_api.DomainService.Repositories; +using System.Collections.Generic; +using System.Linq; + +namespace skydiveLogs_api.DomainBusiness +{ + public class StatsByJumpTypeService : IStatsByJumpTypeService + { + #region Public Constructors + + public StatsByJumpTypeService(IJumpService jumpService, + IIdentityService identityService, + IStatsByDzRepository statsByDzRepository, + IStatsByGearRepository statsByGearRepository, + IStatsByJumpTypeRepository statsByJumpTypeRepository, + IStatsByYearByJumpTypeRepository statsByYearByJumpTypeRepository, + IStatsByYearRepository statsByYearRepository, + IStatsForLastMonthByDzRepository statsForLastMonthByDzRepository, + IStatsForLastMonthByJumpTypeRepository statsForLastMonthByJumpTypeRepository, + IStatsForLastYearByDzRepository statsForLastYearByDzRepository, + IStatsForLastYearByJumpTypeRepository statsForLastYearByJumpTypeRepository) + { + _jumpService = jumpService; + _identityService = identityService; + _statsByDzRepository = statsByDzRepository; + _statsByGearRepository = statsByGearRepository; + _statsByJumpTypeRepository = statsByJumpTypeRepository; + _statsByYearByJumpTypeRepository = statsByYearByJumpTypeRepository; + _statsByYearRepository = statsByYearRepository; + _statsForLastMonthByDzRepository = statsForLastMonthByDzRepository; + _statsForLastMonthByJumpTypeRepository = statsForLastMonthByJumpTypeRepository; + _statsForLastYearByDzRepository = statsForLastYearByDzRepository; + _statsForLastYearByJumpTypeRepository = statsForLastYearByJumpTypeRepository; + } + + #endregion Public Constructors + + #region Public Methods + + public SimpleSummary GetSimpleSummary() + { + var allJumps = _jumpService.GetAllJumps(); + var results = new SimpleSummary(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + + results = new SimpleSummary + { + LastJump = lastJump, + TotalJumps = allJumps.Count(), + TotalCutaways = allJumps.Where(j => j.WithCutaway).Count() + }; + } + + return results; + } + + public IEnumerable GetStatsByAircraft() + { + var allStats = GetAllStats(); + if (!allStats.ByAircraft.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.Aircraft.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByAircraft = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByAircraft; + } + + public IEnumerable GetStatsByDz() + { + var allStats = GetAllStats(); + if (!allStats.ByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByDz; + } + + public IEnumerable GetStatsByGear() + { + var allStats = GetAllStats(); + if (!allStats.ByGear.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => $"{j.Gear.Name} / {j.Gear.MainCanopy}", + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByGear = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByGear; + } + + public IEnumerable GetStatsByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByJumpType; + } + + public IEnumerable GetStatsByYear() + { + var allStats = GetAllStats(); + if (!allStats.ByYear.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.JumpDate.Year, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByYear = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByYear; + } + + public IEnumerable GetStatsForLastMonthByDz() + { + var allStats = GetAllStats(); + if (!allStats.ForLastMonthByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + var monthOfLastJump = lastJump.JumpDate.Month; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) + .GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastMonthByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastMonthByDz; + } + + public IEnumerable GetStatsForLastMonthByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ForLastMonthByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + var monthOfLastJump = lastJump.JumpDate.Month; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) + .GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastMonthByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastMonthByJumpType; + } + + public IEnumerable GetStatsForLastYearByDz() + { + var allStats = GetAllStats(); + if (!allStats.ForLastYearByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) + .GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastYearByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastYearByDz; + } + + public IEnumerable GetStatsForLastYearByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ForLastYearByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) + .GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastYearByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastYearByJumpType; + } + + public IEnumerable GetStatsByYearByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ByYearByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => new { j.JumpType.Name, j.JumpDate.Year }, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.Year.ToString(), + Label2 = groupby.Name.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByYearByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByYearByJumpType; + } + + public void Reset() + { + var resetStats = new UserStats(); + var myStats = GetAllStats(); + myStats.ByAircraft = resetStats.ByAircraft; + myStats.ByDz = resetStats.ByDz; + myStats.ByGear = resetStats.ByGear; + myStats.ByJumpType = resetStats.ByJumpType; + myStats.ByYear = resetStats.ByYear; + myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; + myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; + myStats.ForLastYearByDz = resetStats.ForLastYearByDz; + myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; + myStats.ByYearByJumpType = resetStats.ByYearByJumpType; + + _userStatsRepository.Update(myStats); + } + + #endregion Public Methods + + #region Private Methods + + private UserStats GetAllStats() + { + var allStats = _userStatsRepository.GetAll(_identityService.ConnectedUser); + if (allStats == null) + { + allStats = new UserStats + { + User = _identityService.ConnectedUser + }; + _userStatsRepository.Add(allStats); + } + + return allStats; + } + + #endregion Private Methods + + #region Private Fields + + private readonly IIdentityService _identityService; + private readonly IJumpService _jumpService; + private readonly IStatsByDzRepository _statsByDzRepository; + private readonly IStatsByGearRepository _statsByGearRepository; + private readonly IStatsByJumpTypeRepository _statsByJumpTypeRepository; + private readonly IStatsByYearByJumpTypeRepository _statsByYearByJumpTypeRepository; + private readonly IStatsByYearRepository _statsByYearRepository; + private readonly IStatsForLastMonthByDzRepository _statsForLastMonthByDzRepository; + private readonly IStatsForLastMonthByJumpTypeRepository _statsForLastMonthByJumpTypeRepository; + private readonly IStatsForLastYearByDzRepository _statsForLastYearByDzRepository; + private readonly IStatsForLastYearByJumpTypeRepository _statsForLastYearByJumpTypeRepository; + + #endregion Private Fields + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsByYearByJumpTypeService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsByYearByJumpTypeService.cs new file mode 100644 index 0000000..ac10b65 --- /dev/null +++ b/Back/skydiveLogs-api.DomainBusiness/StatsByYearByJumpTypeService.cs @@ -0,0 +1,396 @@ +using skydiveLogs_api.Domain; +using skydiveLogs_api.DomainBusiness.Interfaces; +using skydiveLogs_api.DomainService.Repositories; +using System.Collections.Generic; +using System.Linq; + +namespace skydiveLogs_api.DomainBusiness +{ + public class StatsByYearByJumpTypeService : IStatsByYearByJumpTypeService + { + #region Public Constructors + + public StatsByYearByJumpTypeService(IJumpService jumpService, + IIdentityService identityService, + IStatsByDzRepository statsByDzRepository, + IStatsByGearRepository statsByGearRepository, + IStatsByJumpTypeRepository statsByJumpTypeRepository, + IStatsByYearByJumpTypeRepository statsByYearByJumpTypeRepository, + IStatsByYearRepository statsByYearRepository, + IStatsForLastMonthByDzRepository statsForLastMonthByDzRepository, + IStatsForLastMonthByJumpTypeRepository statsForLastMonthByJumpTypeRepository, + IStatsForLastYearByDzRepository statsForLastYearByDzRepository, + IStatsForLastYearByJumpTypeRepository statsForLastYearByJumpTypeRepository) + { + _jumpService = jumpService; + _identityService = identityService; + _statsByDzRepository = statsByDzRepository; + _statsByGearRepository = statsByGearRepository; + _statsByJumpTypeRepository = statsByJumpTypeRepository; + _statsByYearByJumpTypeRepository = statsByYearByJumpTypeRepository; + _statsByYearRepository = statsByYearRepository; + _statsForLastMonthByDzRepository = statsForLastMonthByDzRepository; + _statsForLastMonthByJumpTypeRepository = statsForLastMonthByJumpTypeRepository; + _statsForLastYearByDzRepository = statsForLastYearByDzRepository; + _statsForLastYearByJumpTypeRepository = statsForLastYearByJumpTypeRepository; + } + + #endregion Public Constructors + + #region Public Methods + + public SimpleSummary GetSimpleSummary() + { + var allJumps = _jumpService.GetAllJumps(); + var results = new SimpleSummary(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + + results = new SimpleSummary + { + LastJump = lastJump, + TotalJumps = allJumps.Count(), + TotalCutaways = allJumps.Where(j => j.WithCutaway).Count() + }; + } + + return results; + } + + public IEnumerable GetStatsByAircraft() + { + var allStats = GetAllStats(); + if (!allStats.ByAircraft.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.Aircraft.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByAircraft = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByAircraft; + } + + public IEnumerable GetStatsByDz() + { + var allStats = GetAllStats(); + if (!allStats.ByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByDz; + } + + public IEnumerable GetStatsByGear() + { + var allStats = GetAllStats(); + if (!allStats.ByGear.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => $"{j.Gear.Name} / {j.Gear.MainCanopy}", + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByGear = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByGear; + } + + public IEnumerable GetStatsByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByJumpType; + } + + public IEnumerable GetStatsByYear() + { + var allStats = GetAllStats(); + if (!allStats.ByYear.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.JumpDate.Year, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByYear = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByYear; + } + + public IEnumerable GetStatsForLastMonthByDz() + { + var allStats = GetAllStats(); + if (!allStats.ForLastMonthByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + var monthOfLastJump = lastJump.JumpDate.Month; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) + .GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastMonthByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastMonthByDz; + } + + public IEnumerable GetStatsForLastMonthByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ForLastMonthByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + var monthOfLastJump = lastJump.JumpDate.Month; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) + .GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastMonthByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastMonthByJumpType; + } + + public IEnumerable GetStatsForLastYearByDz() + { + var allStats = GetAllStats(); + if (!allStats.ForLastYearByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) + .GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastYearByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastYearByDz; + } + + public IEnumerable GetStatsForLastYearByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ForLastYearByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) + .GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastYearByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastYearByJumpType; + } + + public IEnumerable GetStatsByYearByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ByYearByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => new { j.JumpType.Name, j.JumpDate.Year }, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.Year.ToString(), + Label2 = groupby.Name.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByYearByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByYearByJumpType; + } + + public void Reset() + { + var resetStats = new UserStats(); + var myStats = GetAllStats(); + myStats.ByAircraft = resetStats.ByAircraft; + myStats.ByDz = resetStats.ByDz; + myStats.ByGear = resetStats.ByGear; + myStats.ByJumpType = resetStats.ByJumpType; + myStats.ByYear = resetStats.ByYear; + myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; + myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; + myStats.ForLastYearByDz = resetStats.ForLastYearByDz; + myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; + myStats.ByYearByJumpType = resetStats.ByYearByJumpType; + + _userStatsRepository.Update(myStats); + } + + #endregion Public Methods + + #region Private Methods + + private UserStats GetAllStats() + { + var allStats = _userStatsRepository.GetAll(_identityService.ConnectedUser); + if (allStats == null) + { + allStats = new UserStats + { + User = _identityService.ConnectedUser + }; + _userStatsRepository.Add(allStats); + } + + return allStats; + } + + #endregion Private Methods + + #region Private Fields + + private readonly IIdentityService _identityService; + private readonly IJumpService _jumpService; + private readonly IStatsByDzRepository _statsByDzRepository; + private readonly IStatsByGearRepository _statsByGearRepository; + private readonly IStatsByJumpTypeRepository _statsByJumpTypeRepository; + private readonly IStatsByYearByJumpTypeRepository _statsByYearByJumpTypeRepository; + private readonly IStatsByYearRepository _statsByYearRepository; + private readonly IStatsForLastMonthByDzRepository _statsForLastMonthByDzRepository; + private readonly IStatsForLastMonthByJumpTypeRepository _statsForLastMonthByJumpTypeRepository; + private readonly IStatsForLastYearByDzRepository _statsForLastYearByDzRepository; + private readonly IStatsForLastYearByJumpTypeRepository _statsForLastYearByJumpTypeRepository; + + #endregion Private Fields + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsByYearService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsByYearService.cs new file mode 100644 index 0000000..c6891bd --- /dev/null +++ b/Back/skydiveLogs-api.DomainBusiness/StatsByYearService.cs @@ -0,0 +1,396 @@ +using skydiveLogs_api.Domain; +using skydiveLogs_api.DomainBusiness.Interfaces; +using skydiveLogs_api.DomainService.Repositories; +using System.Collections.Generic; +using System.Linq; + +namespace skydiveLogs_api.DomainBusiness +{ + public class StatsByYearService : IStatsByYearService + { + #region Public Constructors + + public StatsByYearService(IJumpService jumpService, + IIdentityService identityService, + IStatsByDzRepository statsByDzRepository, + IStatsByGearRepository statsByGearRepository, + IStatsByJumpTypeRepository statsByJumpTypeRepository, + IStatsByYearByJumpTypeRepository statsByYearByJumpTypeRepository, + IStatsByYearRepository statsByYearRepository, + IStatsForLastMonthByDzRepository statsForLastMonthByDzRepository, + IStatsForLastMonthByJumpTypeRepository statsForLastMonthByJumpTypeRepository, + IStatsForLastYearByDzRepository statsForLastYearByDzRepository, + IStatsForLastYearByJumpTypeRepository statsForLastYearByJumpTypeRepository) + { + _jumpService = jumpService; + _identityService = identityService; + _statsByDzRepository = statsByDzRepository; + _statsByGearRepository = statsByGearRepository; + _statsByJumpTypeRepository = statsByJumpTypeRepository; + _statsByYearByJumpTypeRepository = statsByYearByJumpTypeRepository; + _statsByYearRepository = statsByYearRepository; + _statsForLastMonthByDzRepository = statsForLastMonthByDzRepository; + _statsForLastMonthByJumpTypeRepository = statsForLastMonthByJumpTypeRepository; + _statsForLastYearByDzRepository = statsForLastYearByDzRepository; + _statsForLastYearByJumpTypeRepository = statsForLastYearByJumpTypeRepository; + } + + #endregion Public Constructors + + #region Public Methods + + public SimpleSummary GetSimpleSummary() + { + var allJumps = _jumpService.GetAllJumps(); + var results = new SimpleSummary(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + + results = new SimpleSummary + { + LastJump = lastJump, + TotalJumps = allJumps.Count(), + TotalCutaways = allJumps.Where(j => j.WithCutaway).Count() + }; + } + + return results; + } + + public IEnumerable GetStatsByAircraft() + { + var allStats = GetAllStats(); + if (!allStats.ByAircraft.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.Aircraft.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByAircraft = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByAircraft; + } + + public IEnumerable GetStatsByDz() + { + var allStats = GetAllStats(); + if (!allStats.ByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByDz; + } + + public IEnumerable GetStatsByGear() + { + var allStats = GetAllStats(); + if (!allStats.ByGear.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => $"{j.Gear.Name} / {j.Gear.MainCanopy}", + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByGear = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByGear; + } + + public IEnumerable GetStatsByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByJumpType; + } + + public IEnumerable GetStatsByYear() + { + var allStats = GetAllStats(); + if (!allStats.ByYear.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.JumpDate.Year, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByYear = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByYear; + } + + public IEnumerable GetStatsForLastMonthByDz() + { + var allStats = GetAllStats(); + if (!allStats.ForLastMonthByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + var monthOfLastJump = lastJump.JumpDate.Month; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) + .GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastMonthByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastMonthByDz; + } + + public IEnumerable GetStatsForLastMonthByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ForLastMonthByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + var monthOfLastJump = lastJump.JumpDate.Month; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) + .GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastMonthByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastMonthByJumpType; + } + + public IEnumerable GetStatsForLastYearByDz() + { + var allStats = GetAllStats(); + if (!allStats.ForLastYearByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) + .GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastYearByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastYearByDz; + } + + public IEnumerable GetStatsForLastYearByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ForLastYearByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) + .GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastYearByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastYearByJumpType; + } + + public IEnumerable GetStatsByYearByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ByYearByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => new { j.JumpType.Name, j.JumpDate.Year }, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.Year.ToString(), + Label2 = groupby.Name.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByYearByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByYearByJumpType; + } + + public void Reset() + { + var resetStats = new UserStats(); + var myStats = GetAllStats(); + myStats.ByAircraft = resetStats.ByAircraft; + myStats.ByDz = resetStats.ByDz; + myStats.ByGear = resetStats.ByGear; + myStats.ByJumpType = resetStats.ByJumpType; + myStats.ByYear = resetStats.ByYear; + myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; + myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; + myStats.ForLastYearByDz = resetStats.ForLastYearByDz; + myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; + myStats.ByYearByJumpType = resetStats.ByYearByJumpType; + + _userStatsRepository.Update(myStats); + } + + #endregion Public Methods + + #region Private Methods + + private UserStats GetAllStats() + { + var allStats = _userStatsRepository.GetAll(_identityService.ConnectedUser); + if (allStats == null) + { + allStats = new UserStats + { + User = _identityService.ConnectedUser + }; + _userStatsRepository.Add(allStats); + } + + return allStats; + } + + #endregion Private Methods + + #region Private Fields + + private readonly IIdentityService _identityService; + private readonly IJumpService _jumpService; + private readonly IStatsByDzRepository _statsByDzRepository; + private readonly IStatsByGearRepository _statsByGearRepository; + private readonly IStatsByJumpTypeRepository _statsByJumpTypeRepository; + private readonly IStatsByYearByJumpTypeRepository _statsByYearByJumpTypeRepository; + private readonly IStatsByYearRepository _statsByYearRepository; + private readonly IStatsForLastMonthByDzRepository _statsForLastMonthByDzRepository; + private readonly IStatsForLastMonthByJumpTypeRepository _statsForLastMonthByJumpTypeRepository; + private readonly IStatsForLastYearByDzRepository _statsForLastYearByDzRepository; + private readonly IStatsForLastYearByJumpTypeRepository _statsForLastYearByJumpTypeRepository; + + #endregion Private Fields + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsForLastMonthByDzService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsForLastMonthByDzService.cs new file mode 100644 index 0000000..ad16b2f --- /dev/null +++ b/Back/skydiveLogs-api.DomainBusiness/StatsForLastMonthByDzService.cs @@ -0,0 +1,396 @@ +using skydiveLogs_api.Domain; +using skydiveLogs_api.DomainBusiness.Interfaces; +using skydiveLogs_api.DomainService.Repositories; +using System.Collections.Generic; +using System.Linq; + +namespace skydiveLogs_api.DomainBusiness +{ + public class StatsForLastMonthByDzService : IStatsForLastMonthByDzService + { + #region Public Constructors + + public StatsForLastMonthByDzService(IJumpService jumpService, + IIdentityService identityService, + IStatsByDzRepository statsByDzRepository, + IStatsByGearRepository statsByGearRepository, + IStatsByJumpTypeRepository statsByJumpTypeRepository, + IStatsByYearByJumpTypeRepository statsByYearByJumpTypeRepository, + IStatsByYearRepository statsByYearRepository, + IStatsForLastMonthByDzRepository statsForLastMonthByDzRepository, + IStatsForLastMonthByJumpTypeRepository statsForLastMonthByJumpTypeRepository, + IStatsForLastYearByDzRepository statsForLastYearByDzRepository, + IStatsForLastYearByJumpTypeRepository statsForLastYearByJumpTypeRepository) + { + _jumpService = jumpService; + _identityService = identityService; + _statsByDzRepository = statsByDzRepository; + _statsByGearRepository = statsByGearRepository; + _statsByJumpTypeRepository = statsByJumpTypeRepository; + _statsByYearByJumpTypeRepository = statsByYearByJumpTypeRepository; + _statsByYearRepository = statsByYearRepository; + _statsForLastMonthByDzRepository = statsForLastMonthByDzRepository; + _statsForLastMonthByJumpTypeRepository = statsForLastMonthByJumpTypeRepository; + _statsForLastYearByDzRepository = statsForLastYearByDzRepository; + _statsForLastYearByJumpTypeRepository = statsForLastYearByJumpTypeRepository; + } + + #endregion Public Constructors + + #region Public Methods + + public SimpleSummary GetSimpleSummary() + { + var allJumps = _jumpService.GetAllJumps(); + var results = new SimpleSummary(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + + results = new SimpleSummary + { + LastJump = lastJump, + TotalJumps = allJumps.Count(), + TotalCutaways = allJumps.Where(j => j.WithCutaway).Count() + }; + } + + return results; + } + + public IEnumerable GetStatsByAircraft() + { + var allStats = GetAllStats(); + if (!allStats.ByAircraft.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.Aircraft.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByAircraft = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByAircraft; + } + + public IEnumerable GetStatsByDz() + { + var allStats = GetAllStats(); + if (!allStats.ByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByDz; + } + + public IEnumerable GetStatsByGear() + { + var allStats = GetAllStats(); + if (!allStats.ByGear.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => $"{j.Gear.Name} / {j.Gear.MainCanopy}", + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByGear = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByGear; + } + + public IEnumerable GetStatsByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByJumpType; + } + + public IEnumerable GetStatsByYear() + { + var allStats = GetAllStats(); + if (!allStats.ByYear.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.JumpDate.Year, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByYear = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByYear; + } + + public IEnumerable GetStatsForLastMonthByDz() + { + var allStats = GetAllStats(); + if (!allStats.ForLastMonthByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + var monthOfLastJump = lastJump.JumpDate.Month; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) + .GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastMonthByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastMonthByDz; + } + + public IEnumerable GetStatsForLastMonthByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ForLastMonthByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + var monthOfLastJump = lastJump.JumpDate.Month; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) + .GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastMonthByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastMonthByJumpType; + } + + public IEnumerable GetStatsForLastYearByDz() + { + var allStats = GetAllStats(); + if (!allStats.ForLastYearByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) + .GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastYearByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastYearByDz; + } + + public IEnumerable GetStatsForLastYearByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ForLastYearByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) + .GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastYearByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastYearByJumpType; + } + + public IEnumerable GetStatsByYearByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ByYearByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => new { j.JumpType.Name, j.JumpDate.Year }, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.Year.ToString(), + Label2 = groupby.Name.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByYearByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByYearByJumpType; + } + + public void Reset() + { + var resetStats = new UserStats(); + var myStats = GetAllStats(); + myStats.ByAircraft = resetStats.ByAircraft; + myStats.ByDz = resetStats.ByDz; + myStats.ByGear = resetStats.ByGear; + myStats.ByJumpType = resetStats.ByJumpType; + myStats.ByYear = resetStats.ByYear; + myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; + myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; + myStats.ForLastYearByDz = resetStats.ForLastYearByDz; + myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; + myStats.ByYearByJumpType = resetStats.ByYearByJumpType; + + _userStatsRepository.Update(myStats); + } + + #endregion Public Methods + + #region Private Methods + + private UserStats GetAllStats() + { + var allStats = _userStatsRepository.GetAll(_identityService.ConnectedUser); + if (allStats == null) + { + allStats = new UserStats + { + User = _identityService.ConnectedUser + }; + _userStatsRepository.Add(allStats); + } + + return allStats; + } + + #endregion Private Methods + + #region Private Fields + + private readonly IIdentityService _identityService; + private readonly IJumpService _jumpService; + private readonly IStatsByDzRepository _statsByDzRepository; + private readonly IStatsByGearRepository _statsByGearRepository; + private readonly IStatsByJumpTypeRepository _statsByJumpTypeRepository; + private readonly IStatsByYearByJumpTypeRepository _statsByYearByJumpTypeRepository; + private readonly IStatsByYearRepository _statsByYearRepository; + private readonly IStatsForLastMonthByDzRepository _statsForLastMonthByDzRepository; + private readonly IStatsForLastMonthByJumpTypeRepository _statsForLastMonthByJumpTypeRepository; + private readonly IStatsForLastYearByDzRepository _statsForLastYearByDzRepository; + private readonly IStatsForLastYearByJumpTypeRepository _statsForLastYearByJumpTypeRepository; + + #endregion Private Fields + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsForLastMonthByJumpTypeService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsForLastMonthByJumpTypeService.cs new file mode 100644 index 0000000..7fd779e --- /dev/null +++ b/Back/skydiveLogs-api.DomainBusiness/StatsForLastMonthByJumpTypeService.cs @@ -0,0 +1,396 @@ +using skydiveLogs_api.Domain; +using skydiveLogs_api.DomainBusiness.Interfaces; +using skydiveLogs_api.DomainService.Repositories; +using System.Collections.Generic; +using System.Linq; + +namespace skydiveLogs_api.DomainBusiness +{ + public class StatsForLastMonthByJumpTypeService : IStatsForLastMonthByJumpTypeService + { + #region Public Constructors + + public StatsForLastMonthByJumpTypeService(IJumpService jumpService, + IIdentityService identityService, + IStatsByDzRepository statsByDzRepository, + IStatsByGearRepository statsByGearRepository, + IStatsByJumpTypeRepository statsByJumpTypeRepository, + IStatsByYearByJumpTypeRepository statsByYearByJumpTypeRepository, + IStatsByYearRepository statsByYearRepository, + IStatsForLastMonthByDzRepository statsForLastMonthByDzRepository, + IStatsForLastMonthByJumpTypeRepository statsForLastMonthByJumpTypeRepository, + IStatsForLastYearByDzRepository statsForLastYearByDzRepository, + IStatsForLastYearByJumpTypeRepository statsForLastYearByJumpTypeRepository) + { + _jumpService = jumpService; + _identityService = identityService; + _statsByDzRepository = statsByDzRepository; + _statsByGearRepository = statsByGearRepository; + _statsByJumpTypeRepository = statsByJumpTypeRepository; + _statsByYearByJumpTypeRepository = statsByYearByJumpTypeRepository; + _statsByYearRepository = statsByYearRepository; + _statsForLastMonthByDzRepository = statsForLastMonthByDzRepository; + _statsForLastMonthByJumpTypeRepository = statsForLastMonthByJumpTypeRepository; + _statsForLastYearByDzRepository = statsForLastYearByDzRepository; + _statsForLastYearByJumpTypeRepository = statsForLastYearByJumpTypeRepository; + } + + #endregion Public Constructors + + #region Public Methods + + public SimpleSummary GetSimpleSummary() + { + var allJumps = _jumpService.GetAllJumps(); + var results = new SimpleSummary(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + + results = new SimpleSummary + { + LastJump = lastJump, + TotalJumps = allJumps.Count(), + TotalCutaways = allJumps.Where(j => j.WithCutaway).Count() + }; + } + + return results; + } + + public IEnumerable GetStatsByAircraft() + { + var allStats = GetAllStats(); + if (!allStats.ByAircraft.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.Aircraft.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByAircraft = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByAircraft; + } + + public IEnumerable GetStatsByDz() + { + var allStats = GetAllStats(); + if (!allStats.ByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByDz; + } + + public IEnumerable GetStatsByGear() + { + var allStats = GetAllStats(); + if (!allStats.ByGear.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => $"{j.Gear.Name} / {j.Gear.MainCanopy}", + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByGear = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByGear; + } + + public IEnumerable GetStatsByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByJumpType; + } + + public IEnumerable GetStatsByYear() + { + var allStats = GetAllStats(); + if (!allStats.ByYear.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.JumpDate.Year, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByYear = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByYear; + } + + public IEnumerable GetStatsForLastMonthByDz() + { + var allStats = GetAllStats(); + if (!allStats.ForLastMonthByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + var monthOfLastJump = lastJump.JumpDate.Month; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) + .GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastMonthByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastMonthByDz; + } + + public IEnumerable GetStatsForLastMonthByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ForLastMonthByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + var monthOfLastJump = lastJump.JumpDate.Month; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) + .GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastMonthByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastMonthByJumpType; + } + + public IEnumerable GetStatsForLastYearByDz() + { + var allStats = GetAllStats(); + if (!allStats.ForLastYearByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) + .GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastYearByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastYearByDz; + } + + public IEnumerable GetStatsForLastYearByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ForLastYearByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) + .GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastYearByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastYearByJumpType; + } + + public IEnumerable GetStatsByYearByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ByYearByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => new { j.JumpType.Name, j.JumpDate.Year }, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.Year.ToString(), + Label2 = groupby.Name.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByYearByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByYearByJumpType; + } + + public void Reset() + { + var resetStats = new UserStats(); + var myStats = GetAllStats(); + myStats.ByAircraft = resetStats.ByAircraft; + myStats.ByDz = resetStats.ByDz; + myStats.ByGear = resetStats.ByGear; + myStats.ByJumpType = resetStats.ByJumpType; + myStats.ByYear = resetStats.ByYear; + myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; + myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; + myStats.ForLastYearByDz = resetStats.ForLastYearByDz; + myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; + myStats.ByYearByJumpType = resetStats.ByYearByJumpType; + + _userStatsRepository.Update(myStats); + } + + #endregion Public Methods + + #region Private Methods + + private UserStats GetAllStats() + { + var allStats = _userStatsRepository.GetAll(_identityService.ConnectedUser); + if (allStats == null) + { + allStats = new UserStats + { + User = _identityService.ConnectedUser + }; + _userStatsRepository.Add(allStats); + } + + return allStats; + } + + #endregion Private Methods + + #region Private Fields + + private readonly IIdentityService _identityService; + private readonly IJumpService _jumpService; + private readonly IStatsByDzRepository _statsByDzRepository; + private readonly IStatsByGearRepository _statsByGearRepository; + private readonly IStatsByJumpTypeRepository _statsByJumpTypeRepository; + private readonly IStatsByYearByJumpTypeRepository _statsByYearByJumpTypeRepository; + private readonly IStatsByYearRepository _statsByYearRepository; + private readonly IStatsForLastMonthByDzRepository _statsForLastMonthByDzRepository; + private readonly IStatsForLastMonthByJumpTypeRepository _statsForLastMonthByJumpTypeRepository; + private readonly IStatsForLastYearByDzRepository _statsForLastYearByDzRepository; + private readonly IStatsForLastYearByJumpTypeRepository _statsForLastYearByJumpTypeRepository; + + #endregion Private Fields + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsForLastYearByDzService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsForLastYearByDzService.cs new file mode 100644 index 0000000..4ed6259 --- /dev/null +++ b/Back/skydiveLogs-api.DomainBusiness/StatsForLastYearByDzService.cs @@ -0,0 +1,396 @@ +using skydiveLogs_api.Domain; +using skydiveLogs_api.DomainBusiness.Interfaces; +using skydiveLogs_api.DomainService.Repositories; +using System.Collections.Generic; +using System.Linq; + +namespace skydiveLogs_api.DomainBusiness +{ + public class StatsForLastYearByDzService : IStatsForLastYearByDzService + { + #region Public Constructors + + public StatsForLastYearByDzService(IJumpService jumpService, + IIdentityService identityService, + IStatsByDzRepository statsByDzRepository, + IStatsByGearRepository statsByGearRepository, + IStatsByJumpTypeRepository statsByJumpTypeRepository, + IStatsByYearByJumpTypeRepository statsByYearByJumpTypeRepository, + IStatsByYearRepository statsByYearRepository, + IStatsForLastMonthByDzRepository statsForLastMonthByDzRepository, + IStatsForLastMonthByJumpTypeRepository statsForLastMonthByJumpTypeRepository, + IStatsForLastYearByDzRepository statsForLastYearByDzRepository, + IStatsForLastYearByJumpTypeRepository statsForLastYearByJumpTypeRepository) + { + _jumpService = jumpService; + _identityService = identityService; + _statsByDzRepository = statsByDzRepository; + _statsByGearRepository = statsByGearRepository; + _statsByJumpTypeRepository = statsByJumpTypeRepository; + _statsByYearByJumpTypeRepository = statsByYearByJumpTypeRepository; + _statsByYearRepository = statsByYearRepository; + _statsForLastMonthByDzRepository = statsForLastMonthByDzRepository; + _statsForLastMonthByJumpTypeRepository = statsForLastMonthByJumpTypeRepository; + _statsForLastYearByDzRepository = statsForLastYearByDzRepository; + _statsForLastYearByJumpTypeRepository = statsForLastYearByJumpTypeRepository; + } + + #endregion Public Constructors + + #region Public Methods + + public SimpleSummary GetSimpleSummary() + { + var allJumps = _jumpService.GetAllJumps(); + var results = new SimpleSummary(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + + results = new SimpleSummary + { + LastJump = lastJump, + TotalJumps = allJumps.Count(), + TotalCutaways = allJumps.Where(j => j.WithCutaway).Count() + }; + } + + return results; + } + + public IEnumerable GetStatsByAircraft() + { + var allStats = GetAllStats(); + if (!allStats.ByAircraft.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.Aircraft.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByAircraft = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByAircraft; + } + + public IEnumerable GetStatsByDz() + { + var allStats = GetAllStats(); + if (!allStats.ByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByDz; + } + + public IEnumerable GetStatsByGear() + { + var allStats = GetAllStats(); + if (!allStats.ByGear.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => $"{j.Gear.Name} / {j.Gear.MainCanopy}", + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByGear = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByGear; + } + + public IEnumerable GetStatsByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByJumpType; + } + + public IEnumerable GetStatsByYear() + { + var allStats = GetAllStats(); + if (!allStats.ByYear.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.JumpDate.Year, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByYear = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByYear; + } + + public IEnumerable GetStatsForLastMonthByDz() + { + var allStats = GetAllStats(); + if (!allStats.ForLastMonthByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + var monthOfLastJump = lastJump.JumpDate.Month; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) + .GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastMonthByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastMonthByDz; + } + + public IEnumerable GetStatsForLastMonthByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ForLastMonthByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + var monthOfLastJump = lastJump.JumpDate.Month; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) + .GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastMonthByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastMonthByJumpType; + } + + public IEnumerable GetStatsForLastYearByDz() + { + var allStats = GetAllStats(); + if (!allStats.ForLastYearByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) + .GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastYearByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastYearByDz; + } + + public IEnumerable GetStatsForLastYearByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ForLastYearByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) + .GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastYearByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastYearByJumpType; + } + + public IEnumerable GetStatsByYearByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ByYearByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => new { j.JumpType.Name, j.JumpDate.Year }, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.Year.ToString(), + Label2 = groupby.Name.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByYearByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByYearByJumpType; + } + + public void Reset() + { + var resetStats = new UserStats(); + var myStats = GetAllStats(); + myStats.ByAircraft = resetStats.ByAircraft; + myStats.ByDz = resetStats.ByDz; + myStats.ByGear = resetStats.ByGear; + myStats.ByJumpType = resetStats.ByJumpType; + myStats.ByYear = resetStats.ByYear; + myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; + myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; + myStats.ForLastYearByDz = resetStats.ForLastYearByDz; + myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; + myStats.ByYearByJumpType = resetStats.ByYearByJumpType; + + _userStatsRepository.Update(myStats); + } + + #endregion Public Methods + + #region Private Methods + + private UserStats GetAllStats() + { + var allStats = _userStatsRepository.GetAll(_identityService.ConnectedUser); + if (allStats == null) + { + allStats = new UserStats + { + User = _identityService.ConnectedUser + }; + _userStatsRepository.Add(allStats); + } + + return allStats; + } + + #endregion Private Methods + + #region Private Fields + + private readonly IIdentityService _identityService; + private readonly IJumpService _jumpService; + private readonly IStatsByDzRepository _statsByDzRepository; + private readonly IStatsByGearRepository _statsByGearRepository; + private readonly IStatsByJumpTypeRepository _statsByJumpTypeRepository; + private readonly IStatsByYearByJumpTypeRepository _statsByYearByJumpTypeRepository; + private readonly IStatsByYearRepository _statsByYearRepository; + private readonly IStatsForLastMonthByDzRepository _statsForLastMonthByDzRepository; + private readonly IStatsForLastMonthByJumpTypeRepository _statsForLastMonthByJumpTypeRepository; + private readonly IStatsForLastYearByDzRepository _statsForLastYearByDzRepository; + private readonly IStatsForLastYearByJumpTypeRepository _statsForLastYearByJumpTypeRepository; + + #endregion Private Fields + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsForLastYearByJumpTypeService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsForLastYearByJumpTypeService.cs new file mode 100644 index 0000000..30143d5 --- /dev/null +++ b/Back/skydiveLogs-api.DomainBusiness/StatsForLastYearByJumpTypeService.cs @@ -0,0 +1,396 @@ +using skydiveLogs_api.Domain; +using skydiveLogs_api.DomainBusiness.Interfaces; +using skydiveLogs_api.DomainService.Repositories; +using System.Collections.Generic; +using System.Linq; + +namespace skydiveLogs_api.DomainBusiness +{ + public class StatsForLastYearByJumpTypeService : IStatsForLastYearByJumpTypeService + { + #region Public Constructors + + public StatsForLastYearByJumpTypeService(IJumpService jumpService, + IIdentityService identityService, + IStatsByDzRepository statsByDzRepository, + IStatsByGearRepository statsByGearRepository, + IStatsByJumpTypeRepository statsByJumpTypeRepository, + IStatsByYearByJumpTypeRepository statsByYearByJumpTypeRepository, + IStatsByYearRepository statsByYearRepository, + IStatsForLastMonthByDzRepository statsForLastMonthByDzRepository, + IStatsForLastMonthByJumpTypeRepository statsForLastMonthByJumpTypeRepository, + IStatsForLastYearByDzRepository statsForLastYearByDzRepository, + IStatsForLastYearByJumpTypeRepository statsForLastYearByJumpTypeRepository) + { + _jumpService = jumpService; + _identityService = identityService; + _statsByDzRepository = statsByDzRepository; + _statsByGearRepository = statsByGearRepository; + _statsByJumpTypeRepository = statsByJumpTypeRepository; + _statsByYearByJumpTypeRepository = statsByYearByJumpTypeRepository; + _statsByYearRepository = statsByYearRepository; + _statsForLastMonthByDzRepository = statsForLastMonthByDzRepository; + _statsForLastMonthByJumpTypeRepository = statsForLastMonthByJumpTypeRepository; + _statsForLastYearByDzRepository = statsForLastYearByDzRepository; + _statsForLastYearByJumpTypeRepository = statsForLastYearByJumpTypeRepository; + } + + #endregion Public Constructors + + #region Public Methods + + public SimpleSummary GetSimpleSummary() + { + var allJumps = _jumpService.GetAllJumps(); + var results = new SimpleSummary(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + + results = new SimpleSummary + { + LastJump = lastJump, + TotalJumps = allJumps.Count(), + TotalCutaways = allJumps.Where(j => j.WithCutaway).Count() + }; + } + + return results; + } + + public IEnumerable GetStatsByAircraft() + { + var allStats = GetAllStats(); + if (!allStats.ByAircraft.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.Aircraft.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByAircraft = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByAircraft; + } + + public IEnumerable GetStatsByDz() + { + var allStats = GetAllStats(); + if (!allStats.ByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByDz; + } + + public IEnumerable GetStatsByGear() + { + var allStats = GetAllStats(); + if (!allStats.ByGear.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => $"{j.Gear.Name} / {j.Gear.MainCanopy}", + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByGear = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByGear; + } + + public IEnumerable GetStatsByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByJumpType; + } + + public IEnumerable GetStatsByYear() + { + var allStats = GetAllStats(); + if (!allStats.ByYear.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => j.JumpDate.Year, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByYear = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByYear; + } + + public IEnumerable GetStatsForLastMonthByDz() + { + var allStats = GetAllStats(); + if (!allStats.ForLastMonthByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + var monthOfLastJump = lastJump.JumpDate.Month; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) + .GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastMonthByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastMonthByDz; + } + + public IEnumerable GetStatsForLastMonthByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ForLastMonthByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + var monthOfLastJump = lastJump.JumpDate.Month; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) + .GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastMonthByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastMonthByJumpType; + } + + public IEnumerable GetStatsForLastYearByDz() + { + var allStats = GetAllStats(); + if (!allStats.ForLastYearByDz.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) + .GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastYearByDz = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastYearByDz; + } + + public IEnumerable GetStatsForLastYearByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ForLastYearByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); + var yearOfLastJump = lastJump.JumpDate.Year; + + results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) + .GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ForLastYearByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ForLastYearByJumpType; + } + + public IEnumerable GetStatsByYearByJumpType() + { + var allStats = GetAllStats(); + if (!allStats.ByYearByJumpType.Any()) + { + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) + { + results = [.. allJumps.GroupBy(j => new { j.JumpType.Name, j.JumpDate.Year }, + j => j, + (groupby, jumps) => new Statistic + { + Label = groupby.Year.ToString(), + Label2 = groupby.Name.ToString(), + Nb = jumps.Count() + })]; + } + + allStats.ByYearByJumpType = results; + _userStatsRepository.Update(allStats); + } + + return allStats.ByYearByJumpType; + } + + public void Reset() + { + var resetStats = new UserStats(); + var myStats = GetAllStats(); + myStats.ByAircraft = resetStats.ByAircraft; + myStats.ByDz = resetStats.ByDz; + myStats.ByGear = resetStats.ByGear; + myStats.ByJumpType = resetStats.ByJumpType; + myStats.ByYear = resetStats.ByYear; + myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; + myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; + myStats.ForLastYearByDz = resetStats.ForLastYearByDz; + myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; + myStats.ByYearByJumpType = resetStats.ByYearByJumpType; + + _userStatsRepository.Update(myStats); + } + + #endregion Public Methods + + #region Private Methods + + private UserStats GetAllStats() + { + var allStats = _userStatsRepository.GetAll(_identityService.ConnectedUser); + if (allStats == null) + { + allStats = new UserStats + { + User = _identityService.ConnectedUser + }; + _userStatsRepository.Add(allStats); + } + + return allStats; + } + + #endregion Private Methods + + #region Private Fields + + private readonly IIdentityService _identityService; + private readonly IJumpService _jumpService; + private readonly IStatsByDzRepository _statsByDzRepository; + private readonly IStatsByGearRepository _statsByGearRepository; + private readonly IStatsByJumpTypeRepository _statsByJumpTypeRepository; + private readonly IStatsByYearByJumpTypeRepository _statsByYearByJumpTypeRepository; + private readonly IStatsByYearRepository _statsByYearRepository; + private readonly IStatsForLastMonthByDzRepository _statsForLastMonthByDzRepository; + private readonly IStatsForLastMonthByJumpTypeRepository _statsForLastMonthByJumpTypeRepository; + private readonly IStatsForLastYearByDzRepository _statsForLastYearByDzRepository; + private readonly IStatsForLastYearByJumpTypeRepository _statsForLastYearByJumpTypeRepository; + + #endregion Private Fields + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsService.cs index 6f0982b..d32e7c9 100644 --- a/Back/skydiveLogs-api.DomainBusiness/StatsService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/StatsService.cs @@ -1,7 +1,5 @@ using skydiveLogs_api.Domain; using skydiveLogs_api.DomainBusiness.Interfaces; -using skydiveLogs_api.DomainService.Repositories; -using System.Collections.Generic; using System.Linq; namespace skydiveLogs_api.DomainBusiness @@ -10,13 +8,9 @@ namespace skydiveLogs_api.DomainBusiness { #region Public Constructors - public StatsService(IJumpService jumpService, - IUserStatsRepository userStatsRepository, - IIdentityService identityService) + public StatsService(IJumpService jumpService) { _jumpService = jumpService; - _identityService = identityService; - _userStatsRepository = userStatsRepository; } #endregion Public Constructors @@ -43,339 +37,29 @@ namespace skydiveLogs_api.DomainBusiness return results; } - public IEnumerable GetStatsByAircraft() - { - var allStats = GetAllStats(); - if (!allStats.ByAircraft.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = allJumps.GroupBy(j => j.Aircraft.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - }) - .ToList(); - } - - allStats.ByAircraft = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByAircraft; - } - - public IEnumerable GetStatsByDz() - { - var allStats = GetAllStats(); - if (!allStats.ByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = allJumps.GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - }) - .ToList(); - } - - allStats.ByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByDz; - } - - public IEnumerable GetStatsByGear() - { - var allStats = GetAllStats(); - if (!allStats.ByGear.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = allJumps.GroupBy(j => $"{j.Gear.Name} / {j.Gear.MainCanopy}", - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - }) - .ToList(); - } - - allStats.ByGear = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByGear; - } - - public IEnumerable GetStatsByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = allJumps.GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - }) - .ToList(); - } - - allStats.ByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByJumpType; - } - - public IEnumerable GetStatsByYear() - { - var allStats = GetAllStats(); - if (!allStats.ByYear.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = allJumps.GroupBy(j => j.JumpDate.Year, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - }) - .ToList(); - } - - allStats.ByYear = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByYear; - } - - public IEnumerable GetStatsForLastMonthByDz() - { - var allStats = GetAllStats(); - if (!allStats.ForLastMonthByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - var monthOfLastJump = lastJump.JumpDate.Month; - - results = allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) - .GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - }) - .ToList(); - } - - allStats.ForLastMonthByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastMonthByDz; - } - - public IEnumerable GetStatsForLastMonthByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ForLastMonthByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - var monthOfLastJump = lastJump.JumpDate.Month; - - results = allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) - .GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - }) - .ToList(); - } - - allStats.ForLastMonthByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastMonthByJumpType; - } - - public IEnumerable GetStatsForLastYearByDz() - { - var allStats = GetAllStats(); - if (!allStats.ForLastYearByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - - results = allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) - .GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - }) - .ToList(); - } - - allStats.ForLastYearByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastYearByDz; - } - - public IEnumerable GetStatsForLastYearByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ForLastYearByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - - results = allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) - .GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - }) - .ToList(); - } - - allStats.ForLastYearByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastYearByJumpType; - } - - public IEnumerable GetStatsByYearByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ByYearByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = allJumps.GroupBy(j => new { j.JumpType.Name, j.JumpDate.Year }, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.Year.ToString(), - Label2 = groupby.Name.ToString(), - Nb = jumps.Count() - }) - .ToList(); - } - - allStats.ByYearByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByYearByJumpType; - } - public void Reset() { - var resetStats = new UserStats(); - var myStats = GetAllStats(); - myStats.ByAircraft = resetStats.ByAircraft; - myStats.ByDz = resetStats.ByDz; - myStats.ByGear = resetStats.ByGear; - myStats.ByJumpType = resetStats.ByJumpType; - myStats.ByYear = resetStats.ByYear; - myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; - myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; - myStats.ForLastYearByDz = resetStats.ForLastYearByDz; - myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; - myStats.ByYearByJumpType = resetStats.ByYearByJumpType; + // var resetStats = new UserStats(); + // var myStats = GetAllStats(); + // myStats.ByAircraft = resetStats.ByAircraft; + // myStats.ByDz = resetStats.ByDz; + // myStats.ByGear = resetStats.ByGear; + // myStats.ByJumpType = resetStats.ByJumpType; + // myStats.ByYear = resetStats.ByYear; + // myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; + // myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; + // myStats.ForLastYearByDz = resetStats.ForLastYearByDz; + // myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; + // myStats.ByYearByJumpType = resetStats.ByYearByJumpType; - _userStatsRepository.Update(myStats); + // _userStatsRepository.Update(myStats); } #endregion Public Methods - #region Private Methods - - private UserStats GetAllStats() - { - var allStats = _userStatsRepository.GetAll(_identityService.ConnectedUser); - if (allStats == null) - { - allStats = new UserStats - { - User = _identityService.ConnectedUser - }; - _userStatsRepository.Add(allStats); - } - - return allStats; - } - - #endregion Private Methods - #region Private Fields - private readonly IIdentityService _identityService; private readonly IJumpService _jumpService; - private readonly IUserStatsRepository _userStatsRepository; #endregion Private Fields } diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IUserStatsRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IUserStatsRepository.cs deleted file mode 100644 index ef462a7..0000000 --- a/Back/skydiveLogs-api.DomainService/Repositories/IUserStatsRepository.cs +++ /dev/null @@ -1,13 +0,0 @@ -using skydiveLogs_api.Domain; - -namespace skydiveLogs_api.DomainService.Repositories -{ - public interface IUserStatsRepository : IRepository - { - #region Public Methods - - UserStats GetAll(User user); - - #endregion Public Methods - } -} \ No newline at end of file diff --git a/Back/skydiveLogs-api.Ioc/IocService.cs b/Back/skydiveLogs-api.Ioc/IocService.cs index 82c4435..e6d83a6 100644 --- a/Back/skydiveLogs-api.Ioc/IocService.cs +++ b/Back/skydiveLogs-api.Ioc/IocService.cs @@ -32,13 +32,23 @@ namespace skydiveLogs_api.Ioc _services.AddScoped(); _services.AddScoped(); _services.AddScoped(); - _services.AddScoped(); _services.AddScoped(); _services.AddScoped(); _services.AddScoped(); _services.AddScoped(); _services.AddScoped(); + _services.AddScoped(); + _services.AddScoped(); + _services.AddScoped(); + _services.AddScoped(); + _services.AddScoped(); + _services.AddScoped(); + _services.AddScoped(); + _services.AddScoped(); + _services.AddScoped(); + _services.AddScoped(); + _services.AddSingleton(); _services.AddScoped(); -- 2.49.1 From 111e3f2ef7319b569124ff5e46b4bf11746040cc Mon Sep 17 00:00:00 2001 From: sandre Date: Fri, 23 Jan 2026 14:53:58 +0100 Subject: [PATCH 03/11] Un oubli --- .../Interfaces/IStatsByAircraftService.cs | 14 +++ .../StatsByAircraftService.cs | 100 ++++++++++++++++++ .../IStatsByAircraftRepository.cs | 13 +++ .../StatsByAircraftRepository.cs | 77 ++++++++++++++ 4 files changed, 204 insertions(+) create mode 100644 Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByAircraftService.cs create mode 100644 Back/skydiveLogs-api.DomainBusiness/StatsByAircraftService.cs create mode 100644 Back/skydiveLogs-api.DomainService/Repositories/IStatsByAircraftRepository.cs create mode 100644 Back/skydiveLogs-api.Infrastructure/StatsByAircraftRepository.cs diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByAircraftService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByAircraftService.cs new file mode 100644 index 0000000..84ad3af --- /dev/null +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByAircraftService.cs @@ -0,0 +1,14 @@ +using skydiveLogs_api.Domain; +using System.Collections.Generic; + +namespace skydiveLogs_api.DomainBusiness.Interfaces +{ + public interface IStatsByAircraftService + { + #region Public Methods + + IEnumerable GetStats(); + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsByAircraftService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsByAircraftService.cs new file mode 100644 index 0000000..bb74b3d --- /dev/null +++ b/Back/skydiveLogs-api.DomainBusiness/StatsByAircraftService.cs @@ -0,0 +1,100 @@ +using skydiveLogs_api.Domain; +using skydiveLogs_api.DomainBusiness.Interfaces; +using skydiveLogs_api.DomainService.Repositories; +using System.Collections.Generic; +using System.Linq; + +namespace skydiveLogs_api.DomainBusiness +{ + public class StatsByByAircraftService : IStatsByAircraftService + { + #region Public Constructors + + public StatsByByAircraftService(IJumpService jumpService, + IIdentityService identityService, + IStatsByAircraftRepository statsByAircraftRepository) + { + _jumpService = jumpService; + _identityService = identityService; + _statsByAircraftRepository = statsByAircraftRepository; + } + + #endregion Public Constructors + + #region Public Methods + + public IEnumerable GetStats() + { + // var allStats = GetAllStats(); + // if (!allStats.ByDz.Any()) + // { + // var allJumps = _jumpService.GetAllJumps(); + // var results = new List(); + + // if (allJumps.Any()) + // { + // results = [.. allJumps.GroupBy(j => j.DropZone.Name, + // j => j, + // (groupby, jumps) => new Statistic + // { + // Label = groupby.ToString(), + // Nb = jumps.Count() + // })]; + // } + + // allStats.ByDz = results; + // _userStatsRepository.Update(allStats); + // } + + // return allStats.ByDz; + return null; + } + + // public void Reset() + // { + // var resetStats = new UserStats(); + // var myStats = GetAllStats(); + // myStats.ByAircraft = resetStats.ByAircraft; + // myStats.ByDz = resetStats.ByDz; + // myStats.ByGear = resetStats.ByGear; + // myStats.ByJumpType = resetStats.ByJumpType; + // myStats.ByYear = resetStats.ByYear; + // myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; + // myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; + // myStats.ForLastYearByDz = resetStats.ForLastYearByDz; + // myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; + // myStats.ByYearByJumpType = resetStats.ByYearByJumpType; + + // _userStatsRepository.Update(myStats); + // } + + #endregion Public Methods + + #region Private Methods + + private UserStats GetAllStats() + { + var allStats = _statsByAircraftRepository.GetAll(_identityService.ConnectedUser); + if (allStats == null) + { + allStats = new UserStats + { + User = _identityService.ConnectedUser + }; + _statsByAircraftRepository.Add(allStats); + } + + return allStats; + } + + #endregion Private Methods + + #region Private Fields + + private readonly IIdentityService _identityService; + private readonly IJumpService _jumpService; + private readonly IStatsByAircraftRepository _statsByAircraftRepository; + + #endregion Private Fields + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsByAircraftRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByAircraftRepository.cs new file mode 100644 index 0000000..f1e038f --- /dev/null +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByAircraftRepository.cs @@ -0,0 +1,13 @@ +using skydiveLogs_api.Domain; + +namespace skydiveLogs_api.DomainService.Repositories +{ + public interface IStatsByAircraftRepository : IRepository + { + #region Public Methods + + StatsByAircraft GetAll(User user); + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByAircraftRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByAircraftRepository.cs new file mode 100644 index 0000000..8cb46b4 --- /dev/null +++ b/Back/skydiveLogs-api.Infrastructure/StatsByAircraftRepository.cs @@ -0,0 +1,77 @@ +using LiteDB; +using skydiveLogs_api.Domain; +using skydiveLogs_api.DomainService.Repositories; +using skydiveLogs_api.Infrastructure.Interfaces; +using System.Collections.Generic; + +namespace skydiveLogs_api.Infrastructure +{ + public class StatsByAircraftRepository : IStatsByAircraftRepository + { + #region Public Constructors + + public StatsByAircraftRepository(IDataProvider dataProvider) + { + _dataProvider = dataProvider; + _col = _dataProvider.CollOfStatsByAircraft; + } + + #endregion Public Constructors + + #region Public Methods + + public int Add(StatsByAircraft newStats) + { + int result; + + try + { + var tmp = _col.Insert(newStats); + result = tmp.AsInt32; + } + catch + { + result = 0; + } + + return result; + } + + public IEnumerable GetAll() + { + throw new System.NotImplementedException(); + } + + public StatsByAircraft GetAll(User user) + { + return _col.Include(x => x.User) + .Query() + .Where(j => j.User.Id == user.Id) + .SingleOrDefault(); + } + + public StatsByAircraft GetById(int id) + { + throw new System.NotImplementedException(); + } + + public int GetCount() + { + throw new System.NotImplementedException(); + } + + public bool Update(StatsByAircraft stats) + { + return _col.Update(stats); + } + + #endregion Public Methods + + #region Private Fields + + private readonly ILiteCollection _col; + private readonly IDataProvider _dataProvider; + + #endregion Private Fields + } +} \ No newline at end of file -- 2.49.1 From 387228a3cfd54b9c320b4687ae6d79f04974a87c Mon Sep 17 00:00:00 2001 From: sandre Date: Fri, 23 Jan 2026 15:03:38 +0100 Subject: [PATCH 04/11] Add an interface for the stats repo --- .../Repositories/IStatsRepository.cs | 13 +++++++++++++ .../StatsByAircraftRepository.cs | 2 +- .../StatsByDzRepository.cs | 2 +- .../StatsByGearRepository.cs | 2 +- .../StatsByJumpTypeRepository.cs | 2 +- .../StatsByYearByJumpTypeRepository.cs | 2 +- .../StatsByYearRepository.cs | 2 +- .../StatsForLastMonthByDzRepository.cs | 2 +- .../StatsForLastMonthByJumpTypeRepository.cs | 2 +- .../StatsForLastYearByDzRepository.cs | 2 +- .../StatsForLastYearByJumpTypeRepository.cs | 2 +- 11 files changed, 23 insertions(+), 10 deletions(-) create mode 100644 Back/skydiveLogs-api.DomainService/Repositories/IStatsRepository.cs diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsRepository.cs new file mode 100644 index 0000000..0430fc7 --- /dev/null +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsRepository.cs @@ -0,0 +1,13 @@ +using skydiveLogs_api.Domain; + +namespace skydiveLogs_api.DomainService.Repositories +{ + public interface IStatsRepository : IRepository + { + #region Public Methods + + T GetAll(User user); + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByAircraftRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByAircraftRepository.cs index 8cb46b4..4ef0320 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsByAircraftRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsByAircraftRepository.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; namespace skydiveLogs_api.Infrastructure { - public class StatsByAircraftRepository : IStatsByAircraftRepository + public class StatsByAircraftRepository : IStatsRepository { #region Public Constructors diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByDzRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByDzRepository.cs index 0771146..afa293f 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsByDzRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsByDzRepository.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; namespace skydiveLogs_api.Infrastructure { - public class StatsByDzRepository : IStatsByDzRepository + public class StatsByDzRepository : IStatsRepository { #region Public Constructors diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByGearRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByGearRepository.cs index 6f65985..6829e2f 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsByGearRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsByGearRepository.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; namespace skydiveLogs_api.Infrastructure { - public class StatsByGearRepository : IStatsByGearRepository + public class StatsByGearRepository : IStatsRepository { #region Public Constructors diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByJumpTypeRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByJumpTypeRepository.cs index 0ee2f21..e584793 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsByJumpTypeRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsByJumpTypeRepository.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; namespace skydiveLogs_api.Infrastructure { - public class StatsByJumpTypeRepository : IStatsByJumpTypeRepository + public class StatsByJumpTypeRepository : IStatsRepository { #region Public Constructors diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByYearByJumpTypeRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByYearByJumpTypeRepository.cs index c35e296..1e1e634 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsByYearByJumpTypeRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsByYearByJumpTypeRepository.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; namespace skydiveLogs_api.Infrastructure { - public class StatsByYearByJumpTypeRepository : IStatsByYearByJumpTypeRepository + public class StatsByYearByJumpTypeRepository : IStatsRepository { #region Public Constructors diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByYearRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByYearRepository.cs index 085b96a..4021fc8 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsByYearRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsByYearRepository.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; namespace skydiveLogs_api.Infrastructure { - public class StatsByYearRepository : IStatsByYearRepository + public class StatsByYearRepository : IStatsRepository { #region Public Constructors diff --git a/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByDzRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByDzRepository.cs index b68cdd6..1968380 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByDzRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByDzRepository.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; namespace skydiveLogs_api.Infrastructure { - public class StatsForLastMonthByDzRepository : IStatsForLastMonthByDzRepository + public class StatsForLastMonthByDzRepository : IStatsRepository { #region Public Constructors diff --git a/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByJumpTypeRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByJumpTypeRepository.cs index 4416306..fa7e46f 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByJumpTypeRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByJumpTypeRepository.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; namespace skydiveLogs_api.Infrastructure { - public class StatsForLastMonthByJumpTypeRepository : IStatsForLastMonthByJumpTypeRepository + public class StatsForLastMonthByJumpTypeRepository : IStatsRepository { #region Public Constructors diff --git a/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByDzRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByDzRepository.cs index 38dd2c3..7aa8f7c 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByDzRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByDzRepository.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; namespace skydiveLogs_api.Infrastructure { - public class StatsForLastYearByDzRepository : IStatsForLastYearByDzRepository + public class StatsForLastYearByDzRepository : IStatsRepository { #region Public Constructors diff --git a/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByJumpTypeRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByJumpTypeRepository.cs index fd7ae3f..512eb8e 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByJumpTypeRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByJumpTypeRepository.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; namespace skydiveLogs_api.Infrastructure { - public class StatsForLastYearByJumpTypeRepository : IStatsForLastYearByJumpTypeRepository + public class StatsForLastYearByJumpTypeRepository : IStatsRepository { #region Public Constructors -- 2.49.1 From 656b578f9be7c887bdafcc5b84f90a86510ccc04 Mon Sep 17 00:00:00 2001 From: sandre Date: Fri, 23 Jan 2026 16:54:05 +0100 Subject: [PATCH 05/11] Update interface of StatsRepo --- .../Repositories/IStatsRepository.cs | 7 ++++++- .../StatsByAircraftRepository.cs | 15 --------------- .../StatsByDzRepository.cs | 15 --------------- .../StatsByGearRepository.cs | 15 --------------- .../StatsByJumpTypeRepository.cs | 15 --------------- .../StatsByYearByJumpTypeRepository.cs | 15 --------------- .../StatsByYearRepository.cs | 16 ---------------- .../StatsForLastMonthByDzRepository.cs | 15 --------------- .../StatsForLastMonthByJumpTypeRepository.cs | 15 --------------- .../StatsForLastYearByDzRepository.cs | 15 --------------- .../StatsForLastYearByJumpTypeRepository.cs | 15 --------------- 11 files changed, 6 insertions(+), 152 deletions(-) diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsRepository.cs index 0430fc7..b9c205e 100644 --- a/Back/skydiveLogs-api.DomainService/Repositories/IStatsRepository.cs +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsRepository.cs @@ -1,13 +1,18 @@ using skydiveLogs_api.Domain; +using System.Collections.Generic; namespace skydiveLogs_api.DomainService.Repositories { - public interface IStatsRepository : IRepository + public interface IStatsRepository { #region Public Methods T GetAll(User user); + int Add(T newEntity); + + bool Update(T updated); + #endregion Public Methods } } \ No newline at end of file diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByAircraftRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByAircraftRepository.cs index 4ef0320..63eb76c 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsByAircraftRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsByAircraftRepository.cs @@ -37,11 +37,6 @@ namespace skydiveLogs_api.Infrastructure return result; } - public IEnumerable GetAll() - { - throw new System.NotImplementedException(); - } - public StatsByAircraft GetAll(User user) { return _col.Include(x => x.User) @@ -50,16 +45,6 @@ namespace skydiveLogs_api.Infrastructure .SingleOrDefault(); } - public StatsByAircraft GetById(int id) - { - throw new System.NotImplementedException(); - } - - public int GetCount() - { - throw new System.NotImplementedException(); - } - public bool Update(StatsByAircraft stats) { return _col.Update(stats); diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByDzRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByDzRepository.cs index afa293f..784bc6d 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsByDzRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsByDzRepository.cs @@ -37,11 +37,6 @@ namespace skydiveLogs_api.Infrastructure return result; } - public IEnumerable GetAll() - { - throw new System.NotImplementedException(); - } - public StatsByDz GetAll(User user) { return _col.Include(x => x.User) @@ -50,16 +45,6 @@ namespace skydiveLogs_api.Infrastructure .SingleOrDefault(); } - public StatsByDz GetById(int id) - { - throw new System.NotImplementedException(); - } - - public int GetCount() - { - throw new System.NotImplementedException(); - } - public bool Update(StatsByDz stats) { return _col.Update(stats); diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByGearRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByGearRepository.cs index 6829e2f..b7a2476 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsByGearRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsByGearRepository.cs @@ -37,11 +37,6 @@ namespace skydiveLogs_api.Infrastructure return result; } - public IEnumerable GetAll() - { - throw new System.NotImplementedException(); - } - public StatsByGear GetAll(User user) { return _col.Include(x => x.User) @@ -50,16 +45,6 @@ namespace skydiveLogs_api.Infrastructure .SingleOrDefault(); } - public StatsByGear GetById(int id) - { - throw new System.NotImplementedException(); - } - - public int GetCount() - { - throw new System.NotImplementedException(); - } - public bool Update(StatsByGear stats) { return _col.Update(stats); diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByJumpTypeRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByJumpTypeRepository.cs index e584793..1cfa71c 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsByJumpTypeRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsByJumpTypeRepository.cs @@ -37,11 +37,6 @@ namespace skydiveLogs_api.Infrastructure return result; } - public IEnumerable GetAll() - { - throw new System.NotImplementedException(); - } - public StatsByJumpType GetAll(User user) { return _col.Include(x => x.User) @@ -50,16 +45,6 @@ namespace skydiveLogs_api.Infrastructure .SingleOrDefault(); } - public StatsByJumpType GetById(int id) - { - throw new System.NotImplementedException(); - } - - public int GetCount() - { - throw new System.NotImplementedException(); - } - public bool Update(StatsByJumpType stats) { return _col.Update(stats); diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByYearByJumpTypeRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByYearByJumpTypeRepository.cs index 1e1e634..b76daa9 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsByYearByJumpTypeRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsByYearByJumpTypeRepository.cs @@ -37,11 +37,6 @@ namespace skydiveLogs_api.Infrastructure return result; } - public IEnumerable GetAll() - { - throw new System.NotImplementedException(); - } - public StatsByYearByJumpType GetAll(User user) { return _col.Include(x => x.User) @@ -50,16 +45,6 @@ namespace skydiveLogs_api.Infrastructure .SingleOrDefault(); } - public StatsByYearByJumpType GetById(int id) - { - throw new System.NotImplementedException(); - } - - public int GetCount() - { - throw new System.NotImplementedException(); - } - public bool Update(StatsByYearByJumpType stats) { return _col.Update(stats); diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByYearRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByYearRepository.cs index 4021fc8..b743c77 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsByYearRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsByYearRepository.cs @@ -2,7 +2,6 @@ using LiteDB; using skydiveLogs_api.Domain; using skydiveLogs_api.DomainService.Repositories; using skydiveLogs_api.Infrastructure.Interfaces; -using System.Collections.Generic; namespace skydiveLogs_api.Infrastructure { @@ -37,11 +36,6 @@ namespace skydiveLogs_api.Infrastructure return result; } - public IEnumerable GetAll() - { - throw new System.NotImplementedException(); - } - public StatsByYear GetAll(User user) { return _col.Include(x => x.User) @@ -50,16 +44,6 @@ namespace skydiveLogs_api.Infrastructure .SingleOrDefault(); } - public StatsByYear GetById(int id) - { - throw new System.NotImplementedException(); - } - - public int GetCount() - { - throw new System.NotImplementedException(); - } - public bool Update(StatsByYear stats) { return _col.Update(stats); diff --git a/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByDzRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByDzRepository.cs index 1968380..ae6ad9b 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByDzRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByDzRepository.cs @@ -37,11 +37,6 @@ namespace skydiveLogs_api.Infrastructure return result; } - public IEnumerable GetAll() - { - throw new System.NotImplementedException(); - } - public StatsForLastMonthByDz GetAll(User user) { return _col.Include(x => x.User) @@ -50,16 +45,6 @@ namespace skydiveLogs_api.Infrastructure .SingleOrDefault(); } - public StatsForLastMonthByDz GetById(int id) - { - throw new System.NotImplementedException(); - } - - public int GetCount() - { - throw new System.NotImplementedException(); - } - public bool Update(StatsForLastMonthByDz stats) { return _col.Update(stats); diff --git a/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByJumpTypeRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByJumpTypeRepository.cs index fa7e46f..90d6dd4 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByJumpTypeRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByJumpTypeRepository.cs @@ -37,11 +37,6 @@ namespace skydiveLogs_api.Infrastructure return result; } - public IEnumerable GetAll() - { - throw new System.NotImplementedException(); - } - public StatsForLastMonthByJumpType GetAll(User user) { return _col.Include(x => x.User) @@ -50,16 +45,6 @@ namespace skydiveLogs_api.Infrastructure .SingleOrDefault(); } - public StatsForLastMonthByJumpType GetById(int id) - { - throw new System.NotImplementedException(); - } - - public int GetCount() - { - throw new System.NotImplementedException(); - } - public bool Update(StatsForLastMonthByJumpType stats) { return _col.Update(stats); diff --git a/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByDzRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByDzRepository.cs index 7aa8f7c..14e8814 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByDzRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByDzRepository.cs @@ -37,11 +37,6 @@ namespace skydiveLogs_api.Infrastructure return result; } - public IEnumerable GetAll() - { - throw new System.NotImplementedException(); - } - public StatsForLastYearByDz GetAll(User user) { return _col.Include(x => x.User) @@ -50,16 +45,6 @@ namespace skydiveLogs_api.Infrastructure .SingleOrDefault(); } - public StatsForLastYearByDz GetById(int id) - { - throw new System.NotImplementedException(); - } - - public int GetCount() - { - throw new System.NotImplementedException(); - } - public bool Update(StatsForLastYearByDz stats) { return _col.Update(stats); diff --git a/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByJumpTypeRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByJumpTypeRepository.cs index 512eb8e..c532267 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByJumpTypeRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByJumpTypeRepository.cs @@ -37,11 +37,6 @@ namespace skydiveLogs_api.Infrastructure return result; } - public IEnumerable GetAll() - { - throw new System.NotImplementedException(); - } - public StatsForLastYearByJumpType GetAll(User user) { return _col.Include(x => x.User) @@ -50,16 +45,6 @@ namespace skydiveLogs_api.Infrastructure .SingleOrDefault(); } - public StatsForLastYearByJumpType GetById(int id) - { - throw new System.NotImplementedException(); - } - - public int GetCount() - { - throw new System.NotImplementedException(); - } - public bool Update(StatsForLastYearByJumpType stats) { return _col.Update(stats); -- 2.49.1 From 8afddab7b8419b392d2e859b5a821d1c6d0a0eeb Mon Sep 17 00:00:00 2001 From: sandre Date: Fri, 23 Jan 2026 18:18:29 +0100 Subject: [PATCH 06/11] Update StatsByByAircraft --- .../skydiveLogs-api.Domain/StatsByAircraft.cs | 2 - .../Interfaces/IStatsByAircraftService.cs | 2 +- .../StatsByAircraftService.cs | 80 ++++++------------- .../IStatsByAircraftRepository.cs | 7 +- .../StatsByAircraftRepository.cs | 28 +++++-- 5 files changed, 46 insertions(+), 73 deletions(-) diff --git a/Back/skydiveLogs-api.Domain/StatsByAircraft.cs b/Back/skydiveLogs-api.Domain/StatsByAircraft.cs index c957e48..ca46087 100644 --- a/Back/skydiveLogs-api.Domain/StatsByAircraft.cs +++ b/Back/skydiveLogs-api.Domain/StatsByAircraft.cs @@ -6,8 +6,6 @@ namespace skydiveLogs_api.Domain { public string Label { get; set; } - public string Label2 { get; set; } - public int Nb { get; set; } public int Id { get; set; } diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByAircraftService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByAircraftService.cs index 84ad3af..7d9136f 100644 --- a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByAircraftService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByAircraftService.cs @@ -7,7 +7,7 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces { #region Public Methods - IEnumerable GetStats(); + IEnumerable GetStats(); #endregion Public Methods } diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsByAircraftService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsByAircraftService.cs index bb74b3d..e95f0cc 100644 --- a/Back/skydiveLogs-api.DomainBusiness/StatsByAircraftService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/StatsByAircraftService.cs @@ -23,71 +23,39 @@ namespace skydiveLogs_api.DomainBusiness #region Public Methods - public IEnumerable GetStats() - { - // var allStats = GetAllStats(); - // if (!allStats.ByDz.Any()) - // { - // var allJumps = _jumpService.GetAllJumps(); - // var results = new List(); - - // if (allJumps.Any()) - // { - // results = [.. allJumps.GroupBy(j => j.DropZone.Name, - // j => j, - // (groupby, jumps) => new Statistic - // { - // Label = groupby.ToString(), - // Nb = jumps.Count() - // })]; - // } - - // allStats.ByDz = results; - // _userStatsRepository.Update(allStats); - // } - - // return allStats.ByDz; - return null; - } - - // public void Reset() - // { - // var resetStats = new UserStats(); - // var myStats = GetAllStats(); - // myStats.ByAircraft = resetStats.ByAircraft; - // myStats.ByDz = resetStats.ByDz; - // myStats.ByGear = resetStats.ByGear; - // myStats.ByJumpType = resetStats.ByJumpType; - // myStats.ByYear = resetStats.ByYear; - // myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; - // myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; - // myStats.ForLastYearByDz = resetStats.ForLastYearByDz; - // myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; - // myStats.ByYearByJumpType = resetStats.ByYearByJumpType; - - // _userStatsRepository.Update(myStats); - // } - - #endregion Public Methods - - #region Private Methods - - private UserStats GetAllStats() + public IEnumerable GetStats() { var allStats = _statsByAircraftRepository.GetAll(_identityService.ConnectedUser); - if (allStats == null) + if (!allStats.Any()) { - allStats = new UserStats + var allJumps = _jumpService.GetAllJumps(); + var results = new List(); + + if (allJumps.Any()) { - User = _identityService.ConnectedUser - }; - _statsByAircraftRepository.Add(allStats); + results = [.. allJumps.GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new StatsByAircraft + { + Label = groupby.ToString(), + Nb = jumps.Count(), + User = _identityService.ConnectedUser + })]; + } + + _statsByAircraftRepository.Add(results); + return results; } return allStats; } - #endregion Private Methods + public void Reset() + { + _statsByAircraftRepository.Delete(_identityService.ConnectedUser); + } + + #endregion Public Methods #region Private Fields diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsByAircraftRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByAircraftRepository.cs index f1e038f..34f29b9 100644 --- a/Back/skydiveLogs-api.DomainService/Repositories/IStatsByAircraftRepository.cs +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByAircraftRepository.cs @@ -2,12 +2,7 @@ using skydiveLogs_api.Domain; namespace skydiveLogs_api.DomainService.Repositories { - public interface IStatsByAircraftRepository : IRepository + public interface IStatsByAircraftRepository : IStatsRepository { - #region Public Methods - - StatsByAircraft GetAll(User user); - - #endregion Public Methods } } \ No newline at end of file diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByAircraftRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByAircraftRepository.cs index 63eb76c..e91a992 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsByAircraftRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsByAircraftRepository.cs @@ -20,14 +20,17 @@ namespace skydiveLogs_api.Infrastructure #region Public Methods - public int Add(StatsByAircraft newStats) + public int Add(IEnumerable newStats) { - int result; + int result = 0; try { - var tmp = _col.Insert(newStats); - result = tmp.AsInt32; + foreach (var newStat in newStats) + { + var tmp = _col.Insert(newStats); + result = tmp; + } } catch { @@ -37,17 +40,26 @@ namespace skydiveLogs_api.Infrastructure return result; } - public StatsByAircraft GetAll(User user) + public IEnumerable GetAll(User user) { return _col.Include(x => x.User) .Query() .Where(j => j.User.Id == user.Id) - .SingleOrDefault(); + .ToList(); } - public bool Update(StatsByAircraft stats) + public bool Update(IEnumerable updatedStats, User user) { - return _col.Update(stats); + Delete(user); + var tmp = Add(updatedStats); + + return tmp != 0; + } + + public bool Delete(User user) + { + var tmp = _col.DeleteMany(s => s.User.Id == user.Id); + return tmp != 0; } #endregion Public Methods -- 2.49.1 From e84d6e98c9ee921f0faeca74684cb82daf471fbd Mon Sep 17 00:00:00 2001 From: sandre Date: Fri, 23 Jan 2026 22:21:52 +0100 Subject: [PATCH 07/11] Fix --- Back/skydiveLogs-api.Ioc/IocService.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Back/skydiveLogs-api.Ioc/IocService.cs b/Back/skydiveLogs-api.Ioc/IocService.cs index e6d83a6..7b30664 100644 --- a/Back/skydiveLogs-api.Ioc/IocService.cs +++ b/Back/skydiveLogs-api.Ioc/IocService.cs @@ -39,6 +39,7 @@ namespace skydiveLogs_api.Ioc _services.AddScoped(); _services.AddScoped(); + _services.AddScoped(); _services.AddScoped(); _services.AddScoped(); _services.AddScoped(); @@ -64,6 +65,7 @@ namespace skydiveLogs_api.Ioc _services.AddScoped(); _services.AddScoped(); + _services.AddScoped(); _services.AddScoped(); _services.AddScoped(); _services.AddScoped(); -- 2.49.1 From 668f321c54b8d36976c9b1148a99c834fd1b7eb0 Mon Sep 17 00:00:00 2001 From: sandre Date: Fri, 23 Jan 2026 22:52:51 +0100 Subject: [PATCH 08/11] Refacto --- .../skydiveLogs-api.Domain/StatsByAircraft.cs | 6 +- Back/skydiveLogs-api.Domain/StatsByDz.cs | 6 +- Back/skydiveLogs-api.Domain/StatsByGear.cs | 6 +- .../skydiveLogs-api.Domain/StatsByJumpType.cs | 6 +- Back/skydiveLogs-api.Domain/StatsByYear.cs | 6 +- .../StatsByYearByJumpType.cs | 4 +- .../StatsForLastMonthByDz.cs | 6 +- .../StatsForLastMonthByJumpType.cs | 6 +- .../StatsForLastYearByDz.cs | 6 +- .../StatsForLastYearByJumpType.cs | 6 +- .../Interfaces/IStatsByDzService.cs | 2 +- .../Interfaces/IStatsByGearService.cs | 2 +- .../Interfaces/IStatsByJumpTypeService.cs | 2 +- .../IStatsByYearByJumpTypeService.cs | 2 +- .../Interfaces/IStatsByYearService.cs | 2 +- .../IStatsForLastMonthByDzService.cs | 2 +- .../IStatsForLastMonthByJumpTypeService.cs | 2 +- .../IStatsForLastYearByDzService.cs | 2 +- .../IStatsForLastYearByJumpTypeService.cs | 2 +- .../Interfaces/IStatsService.cs | 21 + .../StatsByAircraftService.cs | 12 +- .../StatsByDzService.cs | 369 +---------------- .../StatsByGearService.cs | 370 +---------------- .../StatsByJumpTypeService.cs | 370 +---------------- .../StatsByYearByJumpTypeService.cs | 371 ++---------------- .../StatsByYearService.cs | 370 +---------------- .../StatsForLastMonthByDzService.cs | 367 ++--------------- .../StatsForLastMonthByJumpTypeService.cs | 367 ++--------------- .../StatsForLastYearByDzService.cs | 368 ++--------------- .../StatsForLastYearByJumpTypeService.cs | 370 ++--------------- .../StatsService.cs | 134 ++++++- .../Repositories/IStatsByDzRepository.cs | 7 +- .../Repositories/IStatsByGearRepository.cs | 7 +- .../IStatsByJumpTypeRepository.cs | 7 +- .../IStatsByYearByJumpTypeRepository.cs | 7 +- .../Repositories/IStatsByYearRepository.cs | 7 +- .../IStatsForLastMonthByDzRepository.cs | 7 +- .../IStatsForLastMonthByJumpTypeRepository.cs | 7 +- .../IStatsForLastYearByDzRepository.cs | 7 +- .../IStatsForLastYearByJumpTypeRepository.cs | 7 +- .../Repositories/IStatsRepository.cs | 8 +- .../StatsByAircraftRepository.cs | 2 +- .../StatsByDzRepository.cs | 30 +- .../StatsByGearRepository.cs | 30 +- .../StatsByJumpTypeRepository.cs | 30 +- .../StatsByYearByJumpTypeRepository.cs | 30 +- .../StatsByYearRepository.cs | 31 +- .../StatsForLastMonthByDzRepository.cs | 30 +- .../StatsForLastMonthByJumpTypeRepository.cs | 30 +- .../StatsForLastYearByDzRepository.cs | 30 +- .../StatsForLastYearByJumpTypeRepository.cs | 30 +- 51 files changed, 580 insertions(+), 3329 deletions(-) diff --git a/Back/skydiveLogs-api.Domain/StatsByAircraft.cs b/Back/skydiveLogs-api.Domain/StatsByAircraft.cs index ca46087..6bf377b 100644 --- a/Back/skydiveLogs-api.Domain/StatsByAircraft.cs +++ b/Back/skydiveLogs-api.Domain/StatsByAircraft.cs @@ -1,10 +1,8 @@ -using System.Collections.Generic; - -namespace skydiveLogs_api.Domain +namespace skydiveLogs_api.Domain { public class StatsByAircraft { - public string Label { get; set; } + public string Aircraft { get; set; } public int Nb { get; set; } diff --git a/Back/skydiveLogs-api.Domain/StatsByDz.cs b/Back/skydiveLogs-api.Domain/StatsByDz.cs index ec22e6f..92c7b5f 100644 --- a/Back/skydiveLogs-api.Domain/StatsByDz.cs +++ b/Back/skydiveLogs-api.Domain/StatsByDz.cs @@ -1,12 +1,8 @@ -using System.Collections.Generic; - namespace skydiveLogs_api.Domain { public class StatsByDz { - public string Label { get; set; } - - public string Label2 { get; set; } + public string DropZone { get; set; } public int Nb { get; set; } diff --git a/Back/skydiveLogs-api.Domain/StatsByGear.cs b/Back/skydiveLogs-api.Domain/StatsByGear.cs index 5219ab1..0bf97ff 100644 --- a/Back/skydiveLogs-api.Domain/StatsByGear.cs +++ b/Back/skydiveLogs-api.Domain/StatsByGear.cs @@ -1,12 +1,8 @@ -using System.Collections.Generic; - namespace skydiveLogs_api.Domain { public class StatsByGear { - public string Label { get; set; } - - public string Label2 { get; set; } + public string Gear { get; set; } public int Nb { get; set; } diff --git a/Back/skydiveLogs-api.Domain/StatsByJumpType.cs b/Back/skydiveLogs-api.Domain/StatsByJumpType.cs index a1ffc5f..cf1bc6c 100644 --- a/Back/skydiveLogs-api.Domain/StatsByJumpType.cs +++ b/Back/skydiveLogs-api.Domain/StatsByJumpType.cs @@ -1,12 +1,8 @@ -using System.Collections.Generic; - namespace skydiveLogs_api.Domain { public class StatsByJumpType { - public string Label { get; set; } - - public string Label2 { get; set; } + public string JumpType { get; set; } public int Nb { get; set; } diff --git a/Back/skydiveLogs-api.Domain/StatsByYear.cs b/Back/skydiveLogs-api.Domain/StatsByYear.cs index 3fe078e..e05cd32 100644 --- a/Back/skydiveLogs-api.Domain/StatsByYear.cs +++ b/Back/skydiveLogs-api.Domain/StatsByYear.cs @@ -1,12 +1,8 @@ -using System.Collections.Generic; - namespace skydiveLogs_api.Domain { public class StatsByYear { - public string Label { get; set; } - - public string Label2 { get; set; } + public string Year { get; set; } public int Nb { get; set; } diff --git a/Back/skydiveLogs-api.Domain/StatsByYearByJumpType.cs b/Back/skydiveLogs-api.Domain/StatsByYearByJumpType.cs index 0fc8461..c930e53 100644 --- a/Back/skydiveLogs-api.Domain/StatsByYearByJumpType.cs +++ b/Back/skydiveLogs-api.Domain/StatsByYearByJumpType.cs @@ -4,9 +4,9 @@ namespace skydiveLogs_api.Domain { public class StatsByYearByJumpType { - public string Label { get; set; } + public string Year { get; set; } - public string Label2 { get; set; } + public string JumpType { get; set; } public int Nb { get; set; } diff --git a/Back/skydiveLogs-api.Domain/StatsForLastMonthByDz.cs b/Back/skydiveLogs-api.Domain/StatsForLastMonthByDz.cs index 77e21a2..bde99f8 100644 --- a/Back/skydiveLogs-api.Domain/StatsForLastMonthByDz.cs +++ b/Back/skydiveLogs-api.Domain/StatsForLastMonthByDz.cs @@ -1,12 +1,8 @@ -using System.Collections.Generic; - namespace skydiveLogs_api.Domain { public class StatsForLastMonthByDz { - public string Label { get; set; } - - public string Label2 { get; set; } + public string DropZone { get; set; } public int Nb { get; set; } diff --git a/Back/skydiveLogs-api.Domain/StatsForLastMonthByJumpType.cs b/Back/skydiveLogs-api.Domain/StatsForLastMonthByJumpType.cs index c6feffb..cc4dd6b 100644 --- a/Back/skydiveLogs-api.Domain/StatsForLastMonthByJumpType.cs +++ b/Back/skydiveLogs-api.Domain/StatsForLastMonthByJumpType.cs @@ -1,12 +1,8 @@ -using System.Collections.Generic; - namespace skydiveLogs_api.Domain { public class StatsForLastMonthByJumpType { - public string Label { get; set; } - - public string Label2 { get; set; } + public string JumpType { get; set; } public int Nb { get; set; } diff --git a/Back/skydiveLogs-api.Domain/StatsForLastYearByDz.cs b/Back/skydiveLogs-api.Domain/StatsForLastYearByDz.cs index 546792d..2730b00 100644 --- a/Back/skydiveLogs-api.Domain/StatsForLastYearByDz.cs +++ b/Back/skydiveLogs-api.Domain/StatsForLastYearByDz.cs @@ -1,12 +1,8 @@ -using System.Collections.Generic; - namespace skydiveLogs_api.Domain { public class StatsForLastYearByDz { - public string Label { get; set; } - - public string Label2 { get; set; } + public string DropZone { get; set; } public int Nb { get; set; } diff --git a/Back/skydiveLogs-api.Domain/StatsForLastYearByJumpType.cs b/Back/skydiveLogs-api.Domain/StatsForLastYearByJumpType.cs index 1f41ee1..2a5556f 100644 --- a/Back/skydiveLogs-api.Domain/StatsForLastYearByJumpType.cs +++ b/Back/skydiveLogs-api.Domain/StatsForLastYearByJumpType.cs @@ -1,12 +1,8 @@ -using System.Collections.Generic; - namespace skydiveLogs_api.Domain { public class StatsForLastYearByJumpType { - public string Label { get; set; } - - public string Label2 { get; set; } + public string JumpType { get; set; } public int Nb { get; set; } diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByDzService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByDzService.cs index 20e2b9a..d7d81bf 100644 --- a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByDzService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByDzService.cs @@ -7,7 +7,7 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces { #region Public Methods - IEnumerable GetStats(); + IEnumerable GetStats(); #endregion Public Methods } diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByGearService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByGearService.cs index 69077d5..c471fa2 100644 --- a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByGearService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByGearService.cs @@ -7,7 +7,7 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces { #region Public Methods - IEnumerable GetStats(); + IEnumerable GetStats(); #endregion Public Methods } diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByJumpTypeService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByJumpTypeService.cs index ec89782..b58ae65 100644 --- a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByJumpTypeService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByJumpTypeService.cs @@ -7,7 +7,7 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces { #region Public Methods - IEnumerable GetStats(); + IEnumerable GetStats(); #endregion Public Methods } diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearByJumpTypeService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearByJumpTypeService.cs index d14db86..f900ac0 100644 --- a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearByJumpTypeService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearByJumpTypeService.cs @@ -7,7 +7,7 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces { #region Public Methods - IEnumerable GetStats(); + IEnumerable GetStats(); #endregion Public Methods } diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearService.cs index 780ff1c..83b6ab7 100644 --- a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearService.cs @@ -6,7 +6,7 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces public interface IStatsByYearService { #region Public Methods - IEnumerable GetStats(); + IEnumerable GetStats(); #endregion Public Methods } diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByDzService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByDzService.cs index 57d0a33..432ce09 100644 --- a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByDzService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByDzService.cs @@ -7,7 +7,7 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces { #region Public Methods - IEnumerable GetStats(); + IEnumerable GetStats(); #endregion Public Methods } diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByJumpTypeService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByJumpTypeService.cs index 7dc7565..5a7a88e 100644 --- a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByJumpTypeService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByJumpTypeService.cs @@ -7,7 +7,7 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces { #region Public Methods - IEnumerable GetStats(); + IEnumerable GetStats(); #endregion Public Methods } diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByDzService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByDzService.cs index ad0f651..954b86f 100644 --- a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByDzService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByDzService.cs @@ -7,7 +7,7 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces { #region Public Methods - IEnumerable GetStats(); + IEnumerable GetStats(); #endregion Public Methods } diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByJumpTypeService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByJumpTypeService.cs index 7ee94da..c60ee9a 100644 --- a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByJumpTypeService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByJumpTypeService.cs @@ -7,7 +7,7 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces { #region Public Methods - IEnumerable GetStats(); + IEnumerable GetStats(); #endregion Public Methods } diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsService.cs index f01349e..a04913b 100644 --- a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsService.cs @@ -1,4 +1,5 @@ using skydiveLogs_api.Domain; +using System.Collections.Generic; namespace skydiveLogs_api.DomainBusiness.Interfaces { @@ -8,6 +9,26 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces SimpleSummary GetSimpleSummary(); + IEnumerable GetStatsByAircraft(); + + IEnumerable GetStatsByDz(); + + IEnumerable GetStatsByGear(); + + IEnumerable GetStatsByJumpType(); + + IEnumerable GetStatsByYear(); + + IEnumerable GetStatsForLastMonthByDz(); + + IEnumerable GetStatsForLastMonthByJumpType(); + + IEnumerable GetStatsForLastYearByDz(); + + IEnumerable GetStatsForLastYearByJumpType(); + + IEnumerable GetStatsByYearByJumpType(); + void Reset(); #endregion Public Methods diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsByAircraftService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsByAircraftService.cs index e95f0cc..2815abd 100644 --- a/Back/skydiveLogs-api.DomainBusiness/StatsByAircraftService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/StatsByAircraftService.cs @@ -6,13 +6,13 @@ using System.Linq; namespace skydiveLogs_api.DomainBusiness { - public class StatsByByAircraftService : IStatsByAircraftService + public class StatsByAircraftService : IStatsByAircraftService { #region Public Constructors - public StatsByByAircraftService(IJumpService jumpService, - IIdentityService identityService, - IStatsByAircraftRepository statsByAircraftRepository) + public StatsByAircraftService(IJumpService jumpService, + IIdentityService identityService, + IStatsByAircraftRepository statsByAircraftRepository) { _jumpService = jumpService; _identityService = identityService; @@ -33,11 +33,11 @@ namespace skydiveLogs_api.DomainBusiness if (allJumps.Any()) { - results = [.. allJumps.GroupBy(j => j.DropZone.Name, + results = [.. allJumps.GroupBy(j => j.Aircraft.Name, j => j, (groupby, jumps) => new StatsByAircraft { - Label = groupby.ToString(), + Aircraft = groupby.ToString(), Nb = jumps.Count(), User = _identityService.ConnectedUser })]; diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsByDzService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsByDzService.cs index 0664085..c8046b4 100644 --- a/Back/skydiveLogs-api.DomainBusiness/StatsByDzService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/StatsByDzService.cs @@ -23,370 +23,39 @@ namespace skydiveLogs_api.DomainBusiness #region Public Methods - public IEnumerable GetStats() + public IEnumerable GetStats() { - // var allStats = GetAllStats(); - // if (!allStats.ByAircraft.Any()) - // { - // var allJumps = _jumpService.GetAllJumps(); - // var results = new List(); - - // if (allJumps.Any()) - // { - // results = [.. allJumps.GroupBy(j => j.Aircraft.Name, - // j => j, - // (groupby, jumps) => new Statistic - // { - // Label = groupby.ToString(), - // Nb = jumps.Count() - // })]; - // } - - // allStats.ByAircraft = results; - // _userStatsRepository.Update(allStats); - // } - - // return allStats.ByAircraft; - return null; - } - - public SimpleSummary GetSimpleSummary() - { - var allJumps = _jumpService.GetAllJumps(); - var results = new SimpleSummary(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - - results = new SimpleSummary - { - LastJump = lastJump, - TotalJumps = allJumps.Count(), - TotalCutaways = allJumps.Where(j => j.WithCutaway).Count() - }; - } - - return results; - } - - public IEnumerable GetStatsByAircraft() - { - var allStats = GetAllStats(); - if (!allStats.ByAircraft.Any()) + var allStats = _statsByDzRepository.GetAll(_identityService.ConnectedUser); + if (!allStats.Any()) { var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.Aircraft.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByAircraft = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByAircraft; - } - - public IEnumerable GetStatsByDz() - { - var allStats = GetAllStats(); - if (!allStats.ByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); + var results = new List(); if (allJumps.Any()) { results = [.. allJumps.GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; + j => j, + (groupby, jumps) => new StatsByDz + { + DropZone = groupby.ToString(), + Nb = jumps.Count(), + User = _identityService.ConnectedUser + })]; } - allStats.ByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByDz; - } - - public IEnumerable GetStatsByGear() - { - var allStats = GetAllStats(); - if (!allStats.ByGear.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => $"{j.Gear.Name} / {j.Gear.MainCanopy}", - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByGear = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByGear; - } - - public IEnumerable GetStatsByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByJumpType; - } - - public IEnumerable GetStatsByYear() - { - var allStats = GetAllStats(); - if (!allStats.ByYear.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.JumpDate.Year, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByYear = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByYear; - } - - public IEnumerable GetStatsForLastMonthByDz() - { - var allStats = GetAllStats(); - if (!allStats.ForLastMonthByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - var monthOfLastJump = lastJump.JumpDate.Month; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) - .GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastMonthByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastMonthByDz; - } - - public IEnumerable GetStatsForLastMonthByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ForLastMonthByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - var monthOfLastJump = lastJump.JumpDate.Month; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) - .GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastMonthByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastMonthByJumpType; - } - - public IEnumerable GetStatsForLastYearByDz() - { - var allStats = GetAllStats(); - if (!allStats.ForLastYearByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) - .GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastYearByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastYearByDz; - } - - public IEnumerable GetStatsForLastYearByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ForLastYearByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) - .GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastYearByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastYearByJumpType; - } - - public IEnumerable GetStatsByYearByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ByYearByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => new { j.JumpType.Name, j.JumpDate.Year }, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.Year.ToString(), - Label2 = groupby.Name.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByYearByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByYearByJumpType; - } - - public void Reset() - { - var resetStats = new UserStats(); - var myStats = GetAllStats(); - myStats.ByAircraft = resetStats.ByAircraft; - myStats.ByDz = resetStats.ByDz; - myStats.ByGear = resetStats.ByGear; - myStats.ByJumpType = resetStats.ByJumpType; - myStats.ByYear = resetStats.ByYear; - myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; - myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; - myStats.ForLastYearByDz = resetStats.ForLastYearByDz; - myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; - myStats.ByYearByJumpType = resetStats.ByYearByJumpType; - - _userStatsRepository.Update(myStats); - } - - #endregion Public Methods - - #region Private Methods - - private UserStats GetAllStats() - { - var allStats = _userStatsRepository.GetAll(_identityService.ConnectedUser); - if (allStats == null) - { - allStats = new UserStats - { - User = _identityService.ConnectedUser - }; - _userStatsRepository.Add(allStats); + _statsByDzRepository.Add(results); + return results; } return allStats; } - #endregion Private Methods + public void Reset() + { + _statsByDzRepository.Delete(_identityService.ConnectedUser); + } + + #endregion Public Methods #region Private Fields diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsByGearService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsByGearService.cs index 177fbad..90d045c 100644 --- a/Back/skydiveLogs-api.DomainBusiness/StatsByGearService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/StatsByGearService.cs @@ -11,385 +11,57 @@ namespace skydiveLogs_api.DomainBusiness #region Public Constructors public StatsByGearService(IJumpService jumpService, - IIdentityService identityService, - IStatsByDzRepository statsByDzRepository, - IStatsByGearRepository statsByGearRepository, - IStatsByJumpTypeRepository statsByJumpTypeRepository, - IStatsByYearByJumpTypeRepository statsByYearByJumpTypeRepository, - IStatsByYearRepository statsByYearRepository, - IStatsForLastMonthByDzRepository statsForLastMonthByDzRepository, - IStatsForLastMonthByJumpTypeRepository statsForLastMonthByJumpTypeRepository, - IStatsForLastYearByDzRepository statsForLastYearByDzRepository, - IStatsForLastYearByJumpTypeRepository statsForLastYearByJumpTypeRepository) + IIdentityService identityService, + IStatsByGearRepository statsByGearRepository) { _jumpService = jumpService; _identityService = identityService; - _statsByDzRepository = statsByDzRepository; _statsByGearRepository = statsByGearRepository; - _statsByJumpTypeRepository = statsByJumpTypeRepository; - _statsByYearByJumpTypeRepository = statsByYearByJumpTypeRepository; - _statsByYearRepository = statsByYearRepository; - _statsForLastMonthByDzRepository = statsForLastMonthByDzRepository; - _statsForLastMonthByJumpTypeRepository = statsForLastMonthByJumpTypeRepository; - _statsForLastYearByDzRepository = statsForLastYearByDzRepository; - _statsForLastYearByJumpTypeRepository = statsForLastYearByJumpTypeRepository; } #endregion Public Constructors #region Public Methods - public SimpleSummary GetSimpleSummary() + public IEnumerable GetStats() { - var allJumps = _jumpService.GetAllJumps(); - var results = new SimpleSummary(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - - results = new SimpleSummary - { - LastJump = lastJump, - TotalJumps = allJumps.Count(), - TotalCutaways = allJumps.Where(j => j.WithCutaway).Count() - }; - } - - return results; - } - - public IEnumerable GetStatsByAircraft() - { - var allStats = GetAllStats(); - if (!allStats.ByAircraft.Any()) + var allStats = _statsByGearRepository.GetAll(_identityService.ConnectedUser); + if (!allStats.Any()) { var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.Aircraft.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByAircraft = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByAircraft; - } - - public IEnumerable GetStatsByDz() - { - var allStats = GetAllStats(); - if (!allStats.ByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByDz; - } - - public IEnumerable GetStatsByGear() - { - var allStats = GetAllStats(); - if (!allStats.ByGear.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); + var results = new List(); if (allJumps.Any()) { results = [.. allJumps.GroupBy(j => $"{j.Gear.Name} / {j.Gear.MainCanopy}", - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; + j => j, + (groupby, jumps) => new StatsByGear + { + Gear = groupby.ToString(), + Nb = jumps.Count(), + User = _identityService.ConnectedUser + })]; } - allStats.ByGear = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByGear; - } - - public IEnumerable GetStatsByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByJumpType; - } - - public IEnumerable GetStatsByYear() - { - var allStats = GetAllStats(); - if (!allStats.ByYear.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.JumpDate.Year, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByYear = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByYear; - } - - public IEnumerable GetStatsForLastMonthByDz() - { - var allStats = GetAllStats(); - if (!allStats.ForLastMonthByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - var monthOfLastJump = lastJump.JumpDate.Month; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) - .GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastMonthByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastMonthByDz; - } - - public IEnumerable GetStatsForLastMonthByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ForLastMonthByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - var monthOfLastJump = lastJump.JumpDate.Month; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) - .GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastMonthByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastMonthByJumpType; - } - - public IEnumerable GetStatsForLastYearByDz() - { - var allStats = GetAllStats(); - if (!allStats.ForLastYearByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) - .GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastYearByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastYearByDz; - } - - public IEnumerable GetStatsForLastYearByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ForLastYearByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) - .GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastYearByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastYearByJumpType; - } - - public IEnumerable GetStatsByYearByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ByYearByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => new { j.JumpType.Name, j.JumpDate.Year }, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.Year.ToString(), - Label2 = groupby.Name.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByYearByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByYearByJumpType; - } - - public void Reset() - { - var resetStats = new UserStats(); - var myStats = GetAllStats(); - myStats.ByAircraft = resetStats.ByAircraft; - myStats.ByDz = resetStats.ByDz; - myStats.ByGear = resetStats.ByGear; - myStats.ByJumpType = resetStats.ByJumpType; - myStats.ByYear = resetStats.ByYear; - myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; - myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; - myStats.ForLastYearByDz = resetStats.ForLastYearByDz; - myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; - myStats.ByYearByJumpType = resetStats.ByYearByJumpType; - - _userStatsRepository.Update(myStats); - } - - #endregion Public Methods - - #region Private Methods - - private UserStats GetAllStats() - { - var allStats = _userStatsRepository.GetAll(_identityService.ConnectedUser); - if (allStats == null) - { - allStats = new UserStats - { - User = _identityService.ConnectedUser - }; - _userStatsRepository.Add(allStats); + _statsByGearRepository.Add(results); + return results; } return allStats; } - #endregion Private Methods + public void Reset() + { + _statsByGearRepository.Delete(_identityService.ConnectedUser); + } + + #endregion Public Methods #region Private Fields private readonly IIdentityService _identityService; private readonly IJumpService _jumpService; - private readonly IStatsByDzRepository _statsByDzRepository; private readonly IStatsByGearRepository _statsByGearRepository; - private readonly IStatsByJumpTypeRepository _statsByJumpTypeRepository; - private readonly IStatsByYearByJumpTypeRepository _statsByYearByJumpTypeRepository; - private readonly IStatsByYearRepository _statsByYearRepository; - private readonly IStatsForLastMonthByDzRepository _statsForLastMonthByDzRepository; - private readonly IStatsForLastMonthByJumpTypeRepository _statsForLastMonthByJumpTypeRepository; - private readonly IStatsForLastYearByDzRepository _statsForLastYearByDzRepository; - private readonly IStatsForLastYearByJumpTypeRepository _statsForLastYearByJumpTypeRepository; #endregion Private Fields } diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsByJumpTypeService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsByJumpTypeService.cs index 9a46f75..831016e 100644 --- a/Back/skydiveLogs-api.DomainBusiness/StatsByJumpTypeService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/StatsByJumpTypeService.cs @@ -11,385 +11,57 @@ namespace skydiveLogs_api.DomainBusiness #region Public Constructors public StatsByJumpTypeService(IJumpService jumpService, - IIdentityService identityService, - IStatsByDzRepository statsByDzRepository, - IStatsByGearRepository statsByGearRepository, - IStatsByJumpTypeRepository statsByJumpTypeRepository, - IStatsByYearByJumpTypeRepository statsByYearByJumpTypeRepository, - IStatsByYearRepository statsByYearRepository, - IStatsForLastMonthByDzRepository statsForLastMonthByDzRepository, - IStatsForLastMonthByJumpTypeRepository statsForLastMonthByJumpTypeRepository, - IStatsForLastYearByDzRepository statsForLastYearByDzRepository, - IStatsForLastYearByJumpTypeRepository statsForLastYearByJumpTypeRepository) + IIdentityService identityService, + IStatsByJumpTypeRepository statsByJumpTypeRepository) { _jumpService = jumpService; _identityService = identityService; - _statsByDzRepository = statsByDzRepository; - _statsByGearRepository = statsByGearRepository; _statsByJumpTypeRepository = statsByJumpTypeRepository; - _statsByYearByJumpTypeRepository = statsByYearByJumpTypeRepository; - _statsByYearRepository = statsByYearRepository; - _statsForLastMonthByDzRepository = statsForLastMonthByDzRepository; - _statsForLastMonthByJumpTypeRepository = statsForLastMonthByJumpTypeRepository; - _statsForLastYearByDzRepository = statsForLastYearByDzRepository; - _statsForLastYearByJumpTypeRepository = statsForLastYearByJumpTypeRepository; } #endregion Public Constructors #region Public Methods - public SimpleSummary GetSimpleSummary() + public IEnumerable GetStats() { - var allJumps = _jumpService.GetAllJumps(); - var results = new SimpleSummary(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - - results = new SimpleSummary - { - LastJump = lastJump, - TotalJumps = allJumps.Count(), - TotalCutaways = allJumps.Where(j => j.WithCutaway).Count() - }; - } - - return results; - } - - public IEnumerable GetStatsByAircraft() - { - var allStats = GetAllStats(); - if (!allStats.ByAircraft.Any()) + var allStats = _statsByJumpTypeRepository.GetAll(_identityService.ConnectedUser); + if (!allStats.Any()) { var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.Aircraft.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByAircraft = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByAircraft; - } - - public IEnumerable GetStatsByDz() - { - var allStats = GetAllStats(); - if (!allStats.ByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByDz; - } - - public IEnumerable GetStatsByGear() - { - var allStats = GetAllStats(); - if (!allStats.ByGear.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => $"{j.Gear.Name} / {j.Gear.MainCanopy}", - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByGear = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByGear; - } - - public IEnumerable GetStatsByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); + var results = new List(); if (allJumps.Any()) { results = [.. allJumps.GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; + j => j, + (groupby, jumps) => new StatsByJumpType + { + JumpType = groupby.ToString(), + Nb = jumps.Count(), + User = _identityService.ConnectedUser + })]; } - allStats.ByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByJumpType; - } - - public IEnumerable GetStatsByYear() - { - var allStats = GetAllStats(); - if (!allStats.ByYear.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.JumpDate.Year, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByYear = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByYear; - } - - public IEnumerable GetStatsForLastMonthByDz() - { - var allStats = GetAllStats(); - if (!allStats.ForLastMonthByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - var monthOfLastJump = lastJump.JumpDate.Month; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) - .GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastMonthByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastMonthByDz; - } - - public IEnumerable GetStatsForLastMonthByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ForLastMonthByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - var monthOfLastJump = lastJump.JumpDate.Month; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) - .GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastMonthByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastMonthByJumpType; - } - - public IEnumerable GetStatsForLastYearByDz() - { - var allStats = GetAllStats(); - if (!allStats.ForLastYearByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) - .GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastYearByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastYearByDz; - } - - public IEnumerable GetStatsForLastYearByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ForLastYearByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) - .GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastYearByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastYearByJumpType; - } - - public IEnumerable GetStatsByYearByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ByYearByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => new { j.JumpType.Name, j.JumpDate.Year }, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.Year.ToString(), - Label2 = groupby.Name.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByYearByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByYearByJumpType; - } - - public void Reset() - { - var resetStats = new UserStats(); - var myStats = GetAllStats(); - myStats.ByAircraft = resetStats.ByAircraft; - myStats.ByDz = resetStats.ByDz; - myStats.ByGear = resetStats.ByGear; - myStats.ByJumpType = resetStats.ByJumpType; - myStats.ByYear = resetStats.ByYear; - myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; - myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; - myStats.ForLastYearByDz = resetStats.ForLastYearByDz; - myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; - myStats.ByYearByJumpType = resetStats.ByYearByJumpType; - - _userStatsRepository.Update(myStats); - } - - #endregion Public Methods - - #region Private Methods - - private UserStats GetAllStats() - { - var allStats = _userStatsRepository.GetAll(_identityService.ConnectedUser); - if (allStats == null) - { - allStats = new UserStats - { - User = _identityService.ConnectedUser - }; - _userStatsRepository.Add(allStats); + _statsByJumpTypeRepository.Add(results); + return results; } return allStats; } - #endregion Private Methods + public void Reset() + { + _statsByJumpTypeRepository.Delete(_identityService.ConnectedUser); + } + + #endregion Public Methods #region Private Fields private readonly IIdentityService _identityService; private readonly IJumpService _jumpService; - private readonly IStatsByDzRepository _statsByDzRepository; - private readonly IStatsByGearRepository _statsByGearRepository; private readonly IStatsByJumpTypeRepository _statsByJumpTypeRepository; - private readonly IStatsByYearByJumpTypeRepository _statsByYearByJumpTypeRepository; - private readonly IStatsByYearRepository _statsByYearRepository; - private readonly IStatsForLastMonthByDzRepository _statsForLastMonthByDzRepository; - private readonly IStatsForLastMonthByJumpTypeRepository _statsForLastMonthByJumpTypeRepository; - private readonly IStatsForLastYearByDzRepository _statsForLastYearByDzRepository; - private readonly IStatsForLastYearByJumpTypeRepository _statsForLastYearByJumpTypeRepository; #endregion Private Fields } diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsByYearByJumpTypeService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsByYearByJumpTypeService.cs index ac10b65..1920469 100644 --- a/Back/skydiveLogs-api.DomainBusiness/StatsByYearByJumpTypeService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/StatsByYearByJumpTypeService.cs @@ -11,385 +11,58 @@ namespace skydiveLogs_api.DomainBusiness #region Public Constructors public StatsByYearByJumpTypeService(IJumpService jumpService, - IIdentityService identityService, - IStatsByDzRepository statsByDzRepository, - IStatsByGearRepository statsByGearRepository, - IStatsByJumpTypeRepository statsByJumpTypeRepository, - IStatsByYearByJumpTypeRepository statsByYearByJumpTypeRepository, - IStatsByYearRepository statsByYearRepository, - IStatsForLastMonthByDzRepository statsForLastMonthByDzRepository, - IStatsForLastMonthByJumpTypeRepository statsForLastMonthByJumpTypeRepository, - IStatsForLastYearByDzRepository statsForLastYearByDzRepository, - IStatsForLastYearByJumpTypeRepository statsForLastYearByJumpTypeRepository) + IIdentityService identityService, + IStatsByYearByJumpTypeRepository statsByYearByJumpTypeRepository) { _jumpService = jumpService; _identityService = identityService; - _statsByDzRepository = statsByDzRepository; - _statsByGearRepository = statsByGearRepository; - _statsByJumpTypeRepository = statsByJumpTypeRepository; _statsByYearByJumpTypeRepository = statsByYearByJumpTypeRepository; - _statsByYearRepository = statsByYearRepository; - _statsForLastMonthByDzRepository = statsForLastMonthByDzRepository; - _statsForLastMonthByJumpTypeRepository = statsForLastMonthByJumpTypeRepository; - _statsForLastYearByDzRepository = statsForLastYearByDzRepository; - _statsForLastYearByJumpTypeRepository = statsForLastYearByJumpTypeRepository; } #endregion Public Constructors #region Public Methods - public SimpleSummary GetSimpleSummary() + public IEnumerable GetStats() { - var allJumps = _jumpService.GetAllJumps(); - var results = new SimpleSummary(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - - results = new SimpleSummary - { - LastJump = lastJump, - TotalJumps = allJumps.Count(), - TotalCutaways = allJumps.Where(j => j.WithCutaway).Count() - }; - } - - return results; - } - - public IEnumerable GetStatsByAircraft() - { - var allStats = GetAllStats(); - if (!allStats.ByAircraft.Any()) + var allStats = _statsByYearByJumpTypeRepository.GetAll(_identityService.ConnectedUser); + if (!allStats.Any()) { var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.Aircraft.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByAircraft = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByAircraft; - } - - public IEnumerable GetStatsByDz() - { - var allStats = GetAllStats(); - if (!allStats.ByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByDz; - } - - public IEnumerable GetStatsByGear() - { - var allStats = GetAllStats(); - if (!allStats.ByGear.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => $"{j.Gear.Name} / {j.Gear.MainCanopy}", - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByGear = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByGear; - } - - public IEnumerable GetStatsByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByJumpType; - } - - public IEnumerable GetStatsByYear() - { - var allStats = GetAllStats(); - if (!allStats.ByYear.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.JumpDate.Year, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByYear = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByYear; - } - - public IEnumerable GetStatsForLastMonthByDz() - { - var allStats = GetAllStats(); - if (!allStats.ForLastMonthByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - var monthOfLastJump = lastJump.JumpDate.Month; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) - .GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastMonthByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastMonthByDz; - } - - public IEnumerable GetStatsForLastMonthByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ForLastMonthByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - var monthOfLastJump = lastJump.JumpDate.Month; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) - .GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastMonthByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastMonthByJumpType; - } - - public IEnumerable GetStatsForLastYearByDz() - { - var allStats = GetAllStats(); - if (!allStats.ForLastYearByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) - .GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastYearByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastYearByDz; - } - - public IEnumerable GetStatsForLastYearByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ForLastYearByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) - .GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastYearByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastYearByJumpType; - } - - public IEnumerable GetStatsByYearByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ByYearByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); + var results = new List(); if (allJumps.Any()) { results = [.. allJumps.GroupBy(j => new { j.JumpType.Name, j.JumpDate.Year }, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.Year.ToString(), - Label2 = groupby.Name.ToString(), - Nb = jumps.Count() - })]; + j => j, + (groupby, jumps) => new StatsByYearByJumpType + { + Year = groupby.Year.ToString(), + JumpType = groupby.Name.ToString(), + Nb = jumps.Count(), + User = _identityService.ConnectedUser + })]; } - allStats.ByYearByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByYearByJumpType; - } - - public void Reset() - { - var resetStats = new UserStats(); - var myStats = GetAllStats(); - myStats.ByAircraft = resetStats.ByAircraft; - myStats.ByDz = resetStats.ByDz; - myStats.ByGear = resetStats.ByGear; - myStats.ByJumpType = resetStats.ByJumpType; - myStats.ByYear = resetStats.ByYear; - myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; - myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; - myStats.ForLastYearByDz = resetStats.ForLastYearByDz; - myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; - myStats.ByYearByJumpType = resetStats.ByYearByJumpType; - - _userStatsRepository.Update(myStats); - } - - #endregion Public Methods - - #region Private Methods - - private UserStats GetAllStats() - { - var allStats = _userStatsRepository.GetAll(_identityService.ConnectedUser); - if (allStats == null) - { - allStats = new UserStats - { - User = _identityService.ConnectedUser - }; - _userStatsRepository.Add(allStats); + _statsByYearByJumpTypeRepository.Add(results); + return results; } return allStats; } - #endregion Private Methods + public void Reset() + { + _statsByYearByJumpTypeRepository.Delete(_identityService.ConnectedUser); + } + + #endregion Public Methods #region Private Fields private readonly IIdentityService _identityService; private readonly IJumpService _jumpService; - private readonly IStatsByDzRepository _statsByDzRepository; - private readonly IStatsByGearRepository _statsByGearRepository; - private readonly IStatsByJumpTypeRepository _statsByJumpTypeRepository; private readonly IStatsByYearByJumpTypeRepository _statsByYearByJumpTypeRepository; - private readonly IStatsByYearRepository _statsByYearRepository; - private readonly IStatsForLastMonthByDzRepository _statsForLastMonthByDzRepository; - private readonly IStatsForLastMonthByJumpTypeRepository _statsForLastMonthByJumpTypeRepository; - private readonly IStatsForLastYearByDzRepository _statsForLastYearByDzRepository; - private readonly IStatsForLastYearByJumpTypeRepository _statsForLastYearByJumpTypeRepository; #endregion Private Fields } diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsByYearService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsByYearService.cs index c6891bd..81bb2a0 100644 --- a/Back/skydiveLogs-api.DomainBusiness/StatsByYearService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/StatsByYearService.cs @@ -11,385 +11,57 @@ namespace skydiveLogs_api.DomainBusiness #region Public Constructors public StatsByYearService(IJumpService jumpService, - IIdentityService identityService, - IStatsByDzRepository statsByDzRepository, - IStatsByGearRepository statsByGearRepository, - IStatsByJumpTypeRepository statsByJumpTypeRepository, - IStatsByYearByJumpTypeRepository statsByYearByJumpTypeRepository, - IStatsByYearRepository statsByYearRepository, - IStatsForLastMonthByDzRepository statsForLastMonthByDzRepository, - IStatsForLastMonthByJumpTypeRepository statsForLastMonthByJumpTypeRepository, - IStatsForLastYearByDzRepository statsForLastYearByDzRepository, - IStatsForLastYearByJumpTypeRepository statsForLastYearByJumpTypeRepository) + IIdentityService identityService, + IStatsByYearRepository statsByYearRepository) { _jumpService = jumpService; _identityService = identityService; - _statsByDzRepository = statsByDzRepository; - _statsByGearRepository = statsByGearRepository; - _statsByJumpTypeRepository = statsByJumpTypeRepository; - _statsByYearByJumpTypeRepository = statsByYearByJumpTypeRepository; _statsByYearRepository = statsByYearRepository; - _statsForLastMonthByDzRepository = statsForLastMonthByDzRepository; - _statsForLastMonthByJumpTypeRepository = statsForLastMonthByJumpTypeRepository; - _statsForLastYearByDzRepository = statsForLastYearByDzRepository; - _statsForLastYearByJumpTypeRepository = statsForLastYearByJumpTypeRepository; } #endregion Public Constructors #region Public Methods - public SimpleSummary GetSimpleSummary() + public IEnumerable GetStats() { - var allJumps = _jumpService.GetAllJumps(); - var results = new SimpleSummary(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - - results = new SimpleSummary - { - LastJump = lastJump, - TotalJumps = allJumps.Count(), - TotalCutaways = allJumps.Where(j => j.WithCutaway).Count() - }; - } - - return results; - } - - public IEnumerable GetStatsByAircraft() - { - var allStats = GetAllStats(); - if (!allStats.ByAircraft.Any()) + var allStats = _statsByYearRepository.GetAll(_identityService.ConnectedUser); + if (!allStats.Any()) { var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.Aircraft.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByAircraft = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByAircraft; - } - - public IEnumerable GetStatsByDz() - { - var allStats = GetAllStats(); - if (!allStats.ByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByDz; - } - - public IEnumerable GetStatsByGear() - { - var allStats = GetAllStats(); - if (!allStats.ByGear.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => $"{j.Gear.Name} / {j.Gear.MainCanopy}", - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByGear = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByGear; - } - - public IEnumerable GetStatsByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByJumpType; - } - - public IEnumerable GetStatsByYear() - { - var allStats = GetAllStats(); - if (!allStats.ByYear.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); + var results = new List(); if (allJumps.Any()) { results = [.. allJumps.GroupBy(j => j.JumpDate.Year, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; + j => j, + (groupby, jumps) => new StatsByYear + { + Year = groupby.ToString(), + Nb = jumps.Count(), + User = _identityService.ConnectedUser + })]; } - allStats.ByYear = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByYear; - } - - public IEnumerable GetStatsForLastMonthByDz() - { - var allStats = GetAllStats(); - if (!allStats.ForLastMonthByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - var monthOfLastJump = lastJump.JumpDate.Month; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) - .GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastMonthByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastMonthByDz; - } - - public IEnumerable GetStatsForLastMonthByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ForLastMonthByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - var monthOfLastJump = lastJump.JumpDate.Month; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) - .GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastMonthByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastMonthByJumpType; - } - - public IEnumerable GetStatsForLastYearByDz() - { - var allStats = GetAllStats(); - if (!allStats.ForLastYearByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) - .GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastYearByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastYearByDz; - } - - public IEnumerable GetStatsForLastYearByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ForLastYearByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) - .GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastYearByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastYearByJumpType; - } - - public IEnumerable GetStatsByYearByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ByYearByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => new { j.JumpType.Name, j.JumpDate.Year }, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.Year.ToString(), - Label2 = groupby.Name.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByYearByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByYearByJumpType; - } - - public void Reset() - { - var resetStats = new UserStats(); - var myStats = GetAllStats(); - myStats.ByAircraft = resetStats.ByAircraft; - myStats.ByDz = resetStats.ByDz; - myStats.ByGear = resetStats.ByGear; - myStats.ByJumpType = resetStats.ByJumpType; - myStats.ByYear = resetStats.ByYear; - myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; - myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; - myStats.ForLastYearByDz = resetStats.ForLastYearByDz; - myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; - myStats.ByYearByJumpType = resetStats.ByYearByJumpType; - - _userStatsRepository.Update(myStats); - } - - #endregion Public Methods - - #region Private Methods - - private UserStats GetAllStats() - { - var allStats = _userStatsRepository.GetAll(_identityService.ConnectedUser); - if (allStats == null) - { - allStats = new UserStats - { - User = _identityService.ConnectedUser - }; - _userStatsRepository.Add(allStats); + _statsByYearRepository.Add(results); + return results; } return allStats; } - #endregion Private Methods + public void Reset() + { + _statsByYearRepository.Delete(_identityService.ConnectedUser); + } + + #endregion Public Methods #region Private Fields private readonly IIdentityService _identityService; private readonly IJumpService _jumpService; - private readonly IStatsByDzRepository _statsByDzRepository; - private readonly IStatsByGearRepository _statsByGearRepository; - private readonly IStatsByJumpTypeRepository _statsByJumpTypeRepository; - private readonly IStatsByYearByJumpTypeRepository _statsByYearByJumpTypeRepository; private readonly IStatsByYearRepository _statsByYearRepository; - private readonly IStatsForLastMonthByDzRepository _statsForLastMonthByDzRepository; - private readonly IStatsForLastMonthByJumpTypeRepository _statsForLastMonthByJumpTypeRepository; - private readonly IStatsForLastYearByDzRepository _statsForLastYearByDzRepository; - private readonly IStatsForLastYearByJumpTypeRepository _statsForLastYearByJumpTypeRepository; #endregion Private Fields } diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsForLastMonthByDzService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsForLastMonthByDzService.cs index ad16b2f..5cbfdca 100644 --- a/Back/skydiveLogs-api.DomainBusiness/StatsForLastMonthByDzService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/StatsForLastMonthByDzService.cs @@ -11,191 +11,25 @@ namespace skydiveLogs_api.DomainBusiness #region Public Constructors public StatsForLastMonthByDzService(IJumpService jumpService, - IIdentityService identityService, - IStatsByDzRepository statsByDzRepository, - IStatsByGearRepository statsByGearRepository, - IStatsByJumpTypeRepository statsByJumpTypeRepository, - IStatsByYearByJumpTypeRepository statsByYearByJumpTypeRepository, - IStatsByYearRepository statsByYearRepository, - IStatsForLastMonthByDzRepository statsForLastMonthByDzRepository, - IStatsForLastMonthByJumpTypeRepository statsForLastMonthByJumpTypeRepository, - IStatsForLastYearByDzRepository statsForLastYearByDzRepository, - IStatsForLastYearByJumpTypeRepository statsForLastYearByJumpTypeRepository) + IIdentityService identityService, + IStatsForLastMonthByDzRepository statsForLastMonthByDzRepository) { _jumpService = jumpService; _identityService = identityService; - _statsByDzRepository = statsByDzRepository; - _statsByGearRepository = statsByGearRepository; - _statsByJumpTypeRepository = statsByJumpTypeRepository; - _statsByYearByJumpTypeRepository = statsByYearByJumpTypeRepository; - _statsByYearRepository = statsByYearRepository; _statsForLastMonthByDzRepository = statsForLastMonthByDzRepository; - _statsForLastMonthByJumpTypeRepository = statsForLastMonthByJumpTypeRepository; - _statsForLastYearByDzRepository = statsForLastYearByDzRepository; - _statsForLastYearByJumpTypeRepository = statsForLastYearByJumpTypeRepository; } #endregion Public Constructors #region Public Methods - public SimpleSummary GetSimpleSummary() + public IEnumerable GetStats() { - var allJumps = _jumpService.GetAllJumps(); - var results = new SimpleSummary(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - - results = new SimpleSummary - { - LastJump = lastJump, - TotalJumps = allJumps.Count(), - TotalCutaways = allJumps.Where(j => j.WithCutaway).Count() - }; - } - - return results; - } - - public IEnumerable GetStatsByAircraft() - { - var allStats = GetAllStats(); - if (!allStats.ByAircraft.Any()) + var allStats = _statsForLastMonthByDzRepository.GetAll(_identityService.ConnectedUser); + if (!allStats.Any()) { var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.Aircraft.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByAircraft = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByAircraft; - } - - public IEnumerable GetStatsByDz() - { - var allStats = GetAllStats(); - if (!allStats.ByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByDz; - } - - public IEnumerable GetStatsByGear() - { - var allStats = GetAllStats(); - if (!allStats.ByGear.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => $"{j.Gear.Name} / {j.Gear.MainCanopy}", - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByGear = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByGear; - } - - public IEnumerable GetStatsByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByJumpType; - } - - public IEnumerable GetStatsByYear() - { - var allStats = GetAllStats(); - if (!allStats.ByYear.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.JumpDate.Year, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByYear = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByYear; - } - - public IEnumerable GetStatsForLastMonthByDz() - { - var allStats = GetAllStats(); - if (!allStats.ForLastMonthByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); + var results = new List(); if (allJumps.Any()) { @@ -204,192 +38,35 @@ namespace skydiveLogs_api.DomainBusiness var monthOfLastJump = lastJump.JumpDate.Month; results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) - .GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; + .GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new StatsForLastMonthByDz + { + DropZone = groupby.ToString(), + Nb = jumps.Count(), + User = _identityService.ConnectedUser + })]; } - allStats.ForLastMonthByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastMonthByDz; - } - - public IEnumerable GetStatsForLastMonthByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ForLastMonthByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - var monthOfLastJump = lastJump.JumpDate.Month; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) - .GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastMonthByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastMonthByJumpType; - } - - public IEnumerable GetStatsForLastYearByDz() - { - var allStats = GetAllStats(); - if (!allStats.ForLastYearByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) - .GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastYearByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastYearByDz; - } - - public IEnumerable GetStatsForLastYearByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ForLastYearByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) - .GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastYearByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastYearByJumpType; - } - - public IEnumerable GetStatsByYearByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ByYearByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => new { j.JumpType.Name, j.JumpDate.Year }, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.Year.ToString(), - Label2 = groupby.Name.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByYearByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByYearByJumpType; - } - - public void Reset() - { - var resetStats = new UserStats(); - var myStats = GetAllStats(); - myStats.ByAircraft = resetStats.ByAircraft; - myStats.ByDz = resetStats.ByDz; - myStats.ByGear = resetStats.ByGear; - myStats.ByJumpType = resetStats.ByJumpType; - myStats.ByYear = resetStats.ByYear; - myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; - myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; - myStats.ForLastYearByDz = resetStats.ForLastYearByDz; - myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; - myStats.ByYearByJumpType = resetStats.ByYearByJumpType; - - _userStatsRepository.Update(myStats); - } - - #endregion Public Methods - - #region Private Methods - - private UserStats GetAllStats() - { - var allStats = _userStatsRepository.GetAll(_identityService.ConnectedUser); - if (allStats == null) - { - allStats = new UserStats - { - User = _identityService.ConnectedUser - }; - _userStatsRepository.Add(allStats); + _statsForLastMonthByDzRepository.Add(results); + return results; } return allStats; } - #endregion Private Methods + public void Reset() + { + _statsForLastMonthByDzRepository.Delete(_identityService.ConnectedUser); + } + + #endregion Public Methods #region Private Fields private readonly IIdentityService _identityService; private readonly IJumpService _jumpService; - private readonly IStatsByDzRepository _statsByDzRepository; - private readonly IStatsByGearRepository _statsByGearRepository; - private readonly IStatsByJumpTypeRepository _statsByJumpTypeRepository; - private readonly IStatsByYearByJumpTypeRepository _statsByYearByJumpTypeRepository; - private readonly IStatsByYearRepository _statsByYearRepository; private readonly IStatsForLastMonthByDzRepository _statsForLastMonthByDzRepository; - private readonly IStatsForLastMonthByJumpTypeRepository _statsForLastMonthByJumpTypeRepository; - private readonly IStatsForLastYearByDzRepository _statsForLastYearByDzRepository; - private readonly IStatsForLastYearByJumpTypeRepository _statsForLastYearByJumpTypeRepository; #endregion Private Fields } diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsForLastMonthByJumpTypeService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsForLastMonthByJumpTypeService.cs index 7fd779e..9f89577 100644 --- a/Back/skydiveLogs-api.DomainBusiness/StatsForLastMonthByJumpTypeService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/StatsForLastMonthByJumpTypeService.cs @@ -11,191 +11,25 @@ namespace skydiveLogs_api.DomainBusiness #region Public Constructors public StatsForLastMonthByJumpTypeService(IJumpService jumpService, - IIdentityService identityService, - IStatsByDzRepository statsByDzRepository, - IStatsByGearRepository statsByGearRepository, - IStatsByJumpTypeRepository statsByJumpTypeRepository, - IStatsByYearByJumpTypeRepository statsByYearByJumpTypeRepository, - IStatsByYearRepository statsByYearRepository, - IStatsForLastMonthByDzRepository statsForLastMonthByDzRepository, - IStatsForLastMonthByJumpTypeRepository statsForLastMonthByJumpTypeRepository, - IStatsForLastYearByDzRepository statsForLastYearByDzRepository, - IStatsForLastYearByJumpTypeRepository statsForLastYearByJumpTypeRepository) + IIdentityService identityService, + IStatsForLastMonthByJumpTypeRepository statsForLastMonthByJumpTypeRepository) { _jumpService = jumpService; _identityService = identityService; - _statsByDzRepository = statsByDzRepository; - _statsByGearRepository = statsByGearRepository; - _statsByJumpTypeRepository = statsByJumpTypeRepository; - _statsByYearByJumpTypeRepository = statsByYearByJumpTypeRepository; - _statsByYearRepository = statsByYearRepository; - _statsForLastMonthByDzRepository = statsForLastMonthByDzRepository; _statsForLastMonthByJumpTypeRepository = statsForLastMonthByJumpTypeRepository; - _statsForLastYearByDzRepository = statsForLastYearByDzRepository; - _statsForLastYearByJumpTypeRepository = statsForLastYearByJumpTypeRepository; } #endregion Public Constructors #region Public Methods - public SimpleSummary GetSimpleSummary() + public IEnumerable GetStats() { - var allJumps = _jumpService.GetAllJumps(); - var results = new SimpleSummary(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - - results = new SimpleSummary - { - LastJump = lastJump, - TotalJumps = allJumps.Count(), - TotalCutaways = allJumps.Where(j => j.WithCutaway).Count() - }; - } - - return results; - } - - public IEnumerable GetStatsByAircraft() - { - var allStats = GetAllStats(); - if (!allStats.ByAircraft.Any()) + var allStats = _statsForLastMonthByJumpTypeRepository.GetAll(_identityService.ConnectedUser); + if (!allStats.Any()) { var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.Aircraft.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByAircraft = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByAircraft; - } - - public IEnumerable GetStatsByDz() - { - var allStats = GetAllStats(); - if (!allStats.ByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByDz; - } - - public IEnumerable GetStatsByGear() - { - var allStats = GetAllStats(); - if (!allStats.ByGear.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => $"{j.Gear.Name} / {j.Gear.MainCanopy}", - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByGear = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByGear; - } - - public IEnumerable GetStatsByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByJumpType; - } - - public IEnumerable GetStatsByYear() - { - var allStats = GetAllStats(); - if (!allStats.ByYear.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.JumpDate.Year, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByYear = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByYear; - } - - public IEnumerable GetStatsForLastMonthByDz() - { - var allStats = GetAllStats(); - if (!allStats.ForLastMonthByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); + var results = new List(); if (allJumps.Any()) { @@ -204,192 +38,35 @@ namespace skydiveLogs_api.DomainBusiness var monthOfLastJump = lastJump.JumpDate.Month; results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) - .GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; + .GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new StatsForLastMonthByJumpType + { + JumpType = groupby.ToString(), + Nb = jumps.Count(), + User = _identityService.ConnectedUser + })]; } - allStats.ForLastMonthByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastMonthByDz; - } - - public IEnumerable GetStatsForLastMonthByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ForLastMonthByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - var monthOfLastJump = lastJump.JumpDate.Month; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) - .GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastMonthByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastMonthByJumpType; - } - - public IEnumerable GetStatsForLastYearByDz() - { - var allStats = GetAllStats(); - if (!allStats.ForLastYearByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) - .GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastYearByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastYearByDz; - } - - public IEnumerable GetStatsForLastYearByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ForLastYearByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) - .GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastYearByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastYearByJumpType; - } - - public IEnumerable GetStatsByYearByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ByYearByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => new { j.JumpType.Name, j.JumpDate.Year }, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.Year.ToString(), - Label2 = groupby.Name.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByYearByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByYearByJumpType; - } - - public void Reset() - { - var resetStats = new UserStats(); - var myStats = GetAllStats(); - myStats.ByAircraft = resetStats.ByAircraft; - myStats.ByDz = resetStats.ByDz; - myStats.ByGear = resetStats.ByGear; - myStats.ByJumpType = resetStats.ByJumpType; - myStats.ByYear = resetStats.ByYear; - myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; - myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; - myStats.ForLastYearByDz = resetStats.ForLastYearByDz; - myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; - myStats.ByYearByJumpType = resetStats.ByYearByJumpType; - - _userStatsRepository.Update(myStats); - } - - #endregion Public Methods - - #region Private Methods - - private UserStats GetAllStats() - { - var allStats = _userStatsRepository.GetAll(_identityService.ConnectedUser); - if (allStats == null) - { - allStats = new UserStats - { - User = _identityService.ConnectedUser - }; - _userStatsRepository.Add(allStats); + _statsForLastMonthByJumpTypeRepository.Add(results); + return results; } return allStats; } - #endregion Private Methods + public void Reset() + { + _statsForLastMonthByJumpTypeRepository.Delete(_identityService.ConnectedUser); + } + + #endregion Public Methods #region Private Fields private readonly IIdentityService _identityService; private readonly IJumpService _jumpService; - private readonly IStatsByDzRepository _statsByDzRepository; - private readonly IStatsByGearRepository _statsByGearRepository; - private readonly IStatsByJumpTypeRepository _statsByJumpTypeRepository; - private readonly IStatsByYearByJumpTypeRepository _statsByYearByJumpTypeRepository; - private readonly IStatsByYearRepository _statsByYearRepository; - private readonly IStatsForLastMonthByDzRepository _statsForLastMonthByDzRepository; private readonly IStatsForLastMonthByJumpTypeRepository _statsForLastMonthByJumpTypeRepository; - private readonly IStatsForLastYearByDzRepository _statsForLastYearByDzRepository; - private readonly IStatsForLastYearByJumpTypeRepository _statsForLastYearByJumpTypeRepository; #endregion Private Fields } diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsForLastYearByDzService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsForLastYearByDzService.cs index 4ed6259..6b44295 100644 --- a/Back/skydiveLogs-api.DomainBusiness/StatsForLastYearByDzService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/StatsForLastYearByDzService.cs @@ -11,253 +11,25 @@ namespace skydiveLogs_api.DomainBusiness #region Public Constructors public StatsForLastYearByDzService(IJumpService jumpService, - IIdentityService identityService, - IStatsByDzRepository statsByDzRepository, - IStatsByGearRepository statsByGearRepository, - IStatsByJumpTypeRepository statsByJumpTypeRepository, - IStatsByYearByJumpTypeRepository statsByYearByJumpTypeRepository, - IStatsByYearRepository statsByYearRepository, - IStatsForLastMonthByDzRepository statsForLastMonthByDzRepository, - IStatsForLastMonthByJumpTypeRepository statsForLastMonthByJumpTypeRepository, - IStatsForLastYearByDzRepository statsForLastYearByDzRepository, - IStatsForLastYearByJumpTypeRepository statsForLastYearByJumpTypeRepository) + IIdentityService identityService, + IStatsForLastYearByDzRepository statsForLastYearByDzRepository) { _jumpService = jumpService; _identityService = identityService; - _statsByDzRepository = statsByDzRepository; - _statsByGearRepository = statsByGearRepository; - _statsByJumpTypeRepository = statsByJumpTypeRepository; - _statsByYearByJumpTypeRepository = statsByYearByJumpTypeRepository; - _statsByYearRepository = statsByYearRepository; - _statsForLastMonthByDzRepository = statsForLastMonthByDzRepository; - _statsForLastMonthByJumpTypeRepository = statsForLastMonthByJumpTypeRepository; _statsForLastYearByDzRepository = statsForLastYearByDzRepository; - _statsForLastYearByJumpTypeRepository = statsForLastYearByJumpTypeRepository; } #endregion Public Constructors #region Public Methods - public SimpleSummary GetSimpleSummary() + public IEnumerable GetStats() { - var allJumps = _jumpService.GetAllJumps(); - var results = new SimpleSummary(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - - results = new SimpleSummary - { - LastJump = lastJump, - TotalJumps = allJumps.Count(), - TotalCutaways = allJumps.Where(j => j.WithCutaway).Count() - }; - } - - return results; - } - - public IEnumerable GetStatsByAircraft() - { - var allStats = GetAllStats(); - if (!allStats.ByAircraft.Any()) + var allStats = _statsForLastYearByDzRepository.GetAll(_identityService.ConnectedUser); + if (!allStats.Any()) { var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.Aircraft.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByAircraft = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByAircraft; - } - - public IEnumerable GetStatsByDz() - { - var allStats = GetAllStats(); - if (!allStats.ByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByDz; - } - - public IEnumerable GetStatsByGear() - { - var allStats = GetAllStats(); - if (!allStats.ByGear.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => $"{j.Gear.Name} / {j.Gear.MainCanopy}", - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByGear = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByGear; - } - - public IEnumerable GetStatsByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByJumpType; - } - - public IEnumerable GetStatsByYear() - { - var allStats = GetAllStats(); - if (!allStats.ByYear.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.JumpDate.Year, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByYear = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByYear; - } - - public IEnumerable GetStatsForLastMonthByDz() - { - var allStats = GetAllStats(); - if (!allStats.ForLastMonthByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - var monthOfLastJump = lastJump.JumpDate.Month; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) - .GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastMonthByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastMonthByDz; - } - - public IEnumerable GetStatsForLastMonthByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ForLastMonthByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - var monthOfLastJump = lastJump.JumpDate.Month; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) - .GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastMonthByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastMonthByJumpType; - } - - public IEnumerable GetStatsForLastYearByDz() - { - var allStats = GetAllStats(); - if (!allStats.ForLastYearByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); + var results = new List(); if (allJumps.Any()) { @@ -265,131 +37,35 @@ namespace skydiveLogs_api.DomainBusiness var yearOfLastJump = lastJump.JumpDate.Year; results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) - .GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; + .GroupBy(j => j.DropZone.Name, + j => j, + (groupby, jumps) => new StatsForLastYearByDz + { + DropZone = groupby.ToString(), + Nb = jumps.Count(), + User = _identityService.ConnectedUser + })]; } - allStats.ForLastYearByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastYearByDz; - } - - public IEnumerable GetStatsForLastYearByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ForLastYearByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) - .GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastYearByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastYearByJumpType; - } - - public IEnumerable GetStatsByYearByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ByYearByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => new { j.JumpType.Name, j.JumpDate.Year }, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.Year.ToString(), - Label2 = groupby.Name.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByYearByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByYearByJumpType; - } - - public void Reset() - { - var resetStats = new UserStats(); - var myStats = GetAllStats(); - myStats.ByAircraft = resetStats.ByAircraft; - myStats.ByDz = resetStats.ByDz; - myStats.ByGear = resetStats.ByGear; - myStats.ByJumpType = resetStats.ByJumpType; - myStats.ByYear = resetStats.ByYear; - myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; - myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; - myStats.ForLastYearByDz = resetStats.ForLastYearByDz; - myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; - myStats.ByYearByJumpType = resetStats.ByYearByJumpType; - - _userStatsRepository.Update(myStats); - } - - #endregion Public Methods - - #region Private Methods - - private UserStats GetAllStats() - { - var allStats = _userStatsRepository.GetAll(_identityService.ConnectedUser); - if (allStats == null) - { - allStats = new UserStats - { - User = _identityService.ConnectedUser - }; - _userStatsRepository.Add(allStats); + _statsForLastYearByDzRepository.Add(results); + return results; } return allStats; } - #endregion Private Methods + public void Reset() + { + _statsForLastYearByDzRepository.Delete(_identityService.ConnectedUser); + } + + #endregion Public Methods #region Private Fields private readonly IIdentityService _identityService; private readonly IJumpService _jumpService; - private readonly IStatsByDzRepository _statsByDzRepository; - private readonly IStatsByGearRepository _statsByGearRepository; - private readonly IStatsByJumpTypeRepository _statsByJumpTypeRepository; - private readonly IStatsByYearByJumpTypeRepository _statsByYearByJumpTypeRepository; - private readonly IStatsByYearRepository _statsByYearRepository; - private readonly IStatsForLastMonthByDzRepository _statsForLastMonthByDzRepository; - private readonly IStatsForLastMonthByJumpTypeRepository _statsForLastMonthByJumpTypeRepository; private readonly IStatsForLastYearByDzRepository _statsForLastYearByDzRepository; - private readonly IStatsForLastYearByJumpTypeRepository _statsForLastYearByJumpTypeRepository; #endregion Private Fields } diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsForLastYearByJumpTypeService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsForLastYearByJumpTypeService.cs index 30143d5..7f0569c 100644 --- a/Back/skydiveLogs-api.DomainBusiness/StatsForLastYearByJumpTypeService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/StatsForLastYearByJumpTypeService.cs @@ -11,27 +11,11 @@ namespace skydiveLogs_api.DomainBusiness #region Public Constructors public StatsForLastYearByJumpTypeService(IJumpService jumpService, - IIdentityService identityService, - IStatsByDzRepository statsByDzRepository, - IStatsByGearRepository statsByGearRepository, - IStatsByJumpTypeRepository statsByJumpTypeRepository, - IStatsByYearByJumpTypeRepository statsByYearByJumpTypeRepository, - IStatsByYearRepository statsByYearRepository, - IStatsForLastMonthByDzRepository statsForLastMonthByDzRepository, - IStatsForLastMonthByJumpTypeRepository statsForLastMonthByJumpTypeRepository, - IStatsForLastYearByDzRepository statsForLastYearByDzRepository, - IStatsForLastYearByJumpTypeRepository statsForLastYearByJumpTypeRepository) + IIdentityService identityService, + IStatsForLastYearByJumpTypeRepository statsForLastYearByJumpTypeRepository) { _jumpService = jumpService; _identityService = identityService; - _statsByDzRepository = statsByDzRepository; - _statsByGearRepository = statsByGearRepository; - _statsByJumpTypeRepository = statsByJumpTypeRepository; - _statsByYearByJumpTypeRepository = statsByYearByJumpTypeRepository; - _statsByYearRepository = statsByYearRepository; - _statsForLastMonthByDzRepository = statsForLastMonthByDzRepository; - _statsForLastMonthByJumpTypeRepository = statsForLastMonthByJumpTypeRepository; - _statsForLastYearByDzRepository = statsForLastYearByDzRepository; _statsForLastYearByJumpTypeRepository = statsForLastYearByJumpTypeRepository; } @@ -39,225 +23,13 @@ namespace skydiveLogs_api.DomainBusiness #region Public Methods - public SimpleSummary GetSimpleSummary() + public IEnumerable GetStats() { - var allJumps = _jumpService.GetAllJumps(); - var results = new SimpleSummary(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - - results = new SimpleSummary - { - LastJump = lastJump, - TotalJumps = allJumps.Count(), - TotalCutaways = allJumps.Where(j => j.WithCutaway).Count() - }; - } - - return results; - } - - public IEnumerable GetStatsByAircraft() - { - var allStats = GetAllStats(); - if (!allStats.ByAircraft.Any()) + var allStats = _statsForLastYearByJumpTypeRepository.GetAll(_identityService.ConnectedUser); + if (!allStats.Any()) { var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.Aircraft.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByAircraft = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByAircraft; - } - - public IEnumerable GetStatsByDz() - { - var allStats = GetAllStats(); - if (!allStats.ByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByDz; - } - - public IEnumerable GetStatsByGear() - { - var allStats = GetAllStats(); - if (!allStats.ByGear.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => $"{j.Gear.Name} / {j.Gear.MainCanopy}", - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByGear = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByGear; - } - - public IEnumerable GetStatsByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByJumpType; - } - - public IEnumerable GetStatsByYear() - { - var allStats = GetAllStats(); - if (!allStats.ByYear.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => j.JumpDate.Year, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByYear = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByYear; - } - - public IEnumerable GetStatsForLastMonthByDz() - { - var allStats = GetAllStats(); - if (!allStats.ForLastMonthByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - var monthOfLastJump = lastJump.JumpDate.Month; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) - .GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastMonthByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastMonthByDz; - } - - public IEnumerable GetStatsForLastMonthByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ForLastMonthByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - var monthOfLastJump = lastJump.JumpDate.Month; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump && j.JumpDate.Month == monthOfLastJump) - .GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastMonthByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastMonthByJumpType; - } - - public IEnumerable GetStatsForLastYearByDz() - { - var allStats = GetAllStats(); - if (!allStats.ForLastYearByDz.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); + var results = new List(); if (allJumps.Any()) { @@ -265,130 +37,36 @@ namespace skydiveLogs_api.DomainBusiness var yearOfLastJump = lastJump.JumpDate.Year; results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) - .GroupBy(j => j.DropZone.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; + .GroupBy(j => j.JumpType.Name, + j => j, + (groupby, jumps) => new StatsForLastYearByJumpType + { + JumpType = groupby.ToString(), + Nb = jumps.Count(), + User = _identityService.ConnectedUser + })]; } - allStats.ForLastYearByDz = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastYearByDz; - } - - public IEnumerable GetStatsForLastYearByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ForLastYearByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - var lastJump = allJumps.OrderByDescending(j => j.JumpDate).First(); - var yearOfLastJump = lastJump.JumpDate.Year; - - results = [.. allJumps.Where(j => j.JumpDate.Year == yearOfLastJump) - .GroupBy(j => j.JumpType.Name, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ForLastYearByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ForLastYearByJumpType; - } - - public IEnumerable GetStatsByYearByJumpType() - { - var allStats = GetAllStats(); - if (!allStats.ByYearByJumpType.Any()) - { - var allJumps = _jumpService.GetAllJumps(); - var results = new List(); - - if (allJumps.Any()) - { - results = [.. allJumps.GroupBy(j => new { j.JumpType.Name, j.JumpDate.Year }, - j => j, - (groupby, jumps) => new Statistic - { - Label = groupby.Year.ToString(), - Label2 = groupby.Name.ToString(), - Nb = jumps.Count() - })]; - } - - allStats.ByYearByJumpType = results; - _userStatsRepository.Update(allStats); - } - - return allStats.ByYearByJumpType; - } - - public void Reset() - { - var resetStats = new UserStats(); - var myStats = GetAllStats(); - myStats.ByAircraft = resetStats.ByAircraft; - myStats.ByDz = resetStats.ByDz; - myStats.ByGear = resetStats.ByGear; - myStats.ByJumpType = resetStats.ByJumpType; - myStats.ByYear = resetStats.ByYear; - myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; - myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; - myStats.ForLastYearByDz = resetStats.ForLastYearByDz; - myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; - myStats.ByYearByJumpType = resetStats.ByYearByJumpType; - - _userStatsRepository.Update(myStats); - } - - #endregion Public Methods - - #region Private Methods - - private UserStats GetAllStats() - { - var allStats = _userStatsRepository.GetAll(_identityService.ConnectedUser); - if (allStats == null) - { - allStats = new UserStats - { - User = _identityService.ConnectedUser - }; - _userStatsRepository.Add(allStats); + _statsForLastYearByJumpTypeRepository.Add(results); + return results; } return allStats; } - #endregion Private Methods + + public void Reset() + { + _statsForLastYearByJumpTypeRepository.Delete(_identityService.ConnectedUser); + } + + #endregion Public Methods + #region Private Fields private readonly IIdentityService _identityService; private readonly IJumpService _jumpService; - private readonly IStatsByDzRepository _statsByDzRepository; - private readonly IStatsByGearRepository _statsByGearRepository; - private readonly IStatsByJumpTypeRepository _statsByJumpTypeRepository; - private readonly IStatsByYearByJumpTypeRepository _statsByYearByJumpTypeRepository; - private readonly IStatsByYearRepository _statsByYearRepository; - private readonly IStatsForLastMonthByDzRepository _statsForLastMonthByDzRepository; - private readonly IStatsForLastMonthByJumpTypeRepository _statsForLastMonthByJumpTypeRepository; - private readonly IStatsForLastYearByDzRepository _statsForLastYearByDzRepository; private readonly IStatsForLastYearByJumpTypeRepository _statsForLastYearByJumpTypeRepository; #endregion Private Fields diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsService.cs index d32e7c9..74cf267 100644 --- a/Back/skydiveLogs-api.DomainBusiness/StatsService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/StatsService.cs @@ -1,5 +1,6 @@ using skydiveLogs_api.Domain; using skydiveLogs_api.DomainBusiness.Interfaces; +using System.Collections.Generic; using System.Linq; namespace skydiveLogs_api.DomainBusiness @@ -8,9 +9,29 @@ namespace skydiveLogs_api.DomainBusiness { #region Public Constructors - public StatsService(IJumpService jumpService) + public StatsService(IJumpService jumpService, + IStatsByAircraftService statsByAircraftService, + IStatsByDzService statsByDzService, + IStatsByGearService statsByGearService, + IStatsByJumpTypeService statsByJumpTypeService, + IStatsByYearByJumpTypeService statsByYearByJumpTypeService, + IStatsByYearService statsByYearService, + IStatsForLastMonthByDzService statsForLastMonthByDzService, + IStatsForLastMonthByJumpTypeService statsForLastMonthByJumpTypeService, + IStatsForLastYearByDzService statsForLastYearByDzService, + IStatsForLastYearByJumpTypeService statsForLastYearByJumpTypeService) { _jumpService = jumpService; + _statsByAircraftService = statsByAircraftService; + _statsByDzService = statsByDzService; + _statsByGearService = statsByGearService; + _statsByJumpTypeService = statsByJumpTypeService; + _statsByYearByJumpTypeService = statsByYearByJumpTypeService; + _statsByYearService = statsByYearService; + _statsForLastMonthByDzService = statsForLastMonthByDzService; + _statsForLastMonthByJumpTypeService = statsForLastMonthByJumpTypeService; + _statsForLastYearByDzService = statsForLastYearByDzService; + _statsForLastYearByJumpTypeService = statsForLastYearByJumpTypeService; } #endregion Public Constructors @@ -55,11 +76,122 @@ namespace skydiveLogs_api.DomainBusiness // _userStatsRepository.Update(myStats); } + public IEnumerable GetStatsByAircraft() + { + var tmp = _statsByAircraftService.GetStats(); + return [.. tmp.Select(a => new Statistic + { + Label = a.Aircraft, + Nb = a.Nb + })]; + } + + public IEnumerable GetStatsByDz() + { + var tmp = _statsByDzService.GetStats(); + return [.. tmp.Select(a => new Statistic + { + Label = a.DropZone, + Nb = a.Nb + })]; + } + + public IEnumerable GetStatsByGear() + { + var tmp = _statsByGearService.GetStats(); + return [.. tmp.Select(a => new Statistic + { + Label = a.Gear, + Nb = a.Nb + })]; + } + + public IEnumerable GetStatsByJumpType() + { + var tmp = _statsByJumpTypeService.GetStats(); + return [.. tmp.Select(a => new Statistic + { + Label = a.JumpType, + Nb = a.Nb + })]; + } + + public IEnumerable GetStatsByYear() + { + var tmp = _statsByYearService.GetStats(); + return [.. tmp.Select(a => new Statistic + { + Label = a.Year, + Nb = a.Nb + })]; + } + + public IEnumerable GetStatsForLastMonthByDz() + { + var tmp = _statsForLastMonthByDzService.GetStats(); + return [.. tmp.Select(a => new Statistic + { + Label = a.DropZone, + Nb = a.Nb + })]; + } + + public IEnumerable GetStatsForLastMonthByJumpType() + { + var tmp = _statsForLastMonthByJumpTypeService.GetStats(); + return [.. tmp.Select(a => new Statistic + { + Label = a.JumpType, + Nb = a.Nb + })]; + } + + public IEnumerable GetStatsForLastYearByDz() + { + var tmp = _statsForLastYearByDzService.GetStats(); + return [.. tmp.Select(a => new Statistic + { + Label = a.DropZone, + Nb = a.Nb + })]; + } + + public IEnumerable GetStatsForLastYearByJumpType() + { + var tmp = _statsForLastYearByJumpTypeService.GetStats(); + return [.. tmp.Select(a => new Statistic + { + Label = a.JumpType, + Nb = a.Nb + })]; + } + + public IEnumerable GetStatsByYearByJumpType() + { + var tmp = _statsByYearByJumpTypeService.GetStats(); + return [.. tmp.Select(a => new Statistic + { + Label = a.Year, + Label2 = a.JumpType, + Nb = a.Nb + })]; + } + #endregion Public Methods #region Private Fields private readonly IJumpService _jumpService; + private readonly IStatsByAircraftService _statsByAircraftService; + private readonly IStatsByDzService _statsByDzService; + private readonly IStatsByGearService _statsByGearService; + private readonly IStatsByJumpTypeService _statsByJumpTypeService; + private readonly IStatsByYearByJumpTypeService _statsByYearByJumpTypeService; + private readonly IStatsByYearService _statsByYearService; + private readonly IStatsForLastMonthByDzService _statsForLastMonthByDzService; + private readonly IStatsForLastMonthByJumpTypeService _statsForLastMonthByJumpTypeService; + private readonly IStatsForLastYearByDzService _statsForLastYearByDzService; + private readonly IStatsForLastYearByJumpTypeService _statsForLastYearByJumpTypeService; #endregion Private Fields } diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsByDzRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByDzRepository.cs index b5af2c3..500f2a6 100644 --- a/Back/skydiveLogs-api.DomainService/Repositories/IStatsByDzRepository.cs +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByDzRepository.cs @@ -2,12 +2,7 @@ using skydiveLogs_api.Domain; namespace skydiveLogs_api.DomainService.Repositories { - public interface IStatsByDzRepository : IRepository + public interface IStatsByDzRepository : IStatsRepository { - #region Public Methods - - StatsByDz GetAll(User user); - - #endregion Public Methods } } \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsByGearRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByGearRepository.cs index 02ac751..0c3e2b9 100644 --- a/Back/skydiveLogs-api.DomainService/Repositories/IStatsByGearRepository.cs +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByGearRepository.cs @@ -2,12 +2,7 @@ using skydiveLogs_api.Domain; namespace skydiveLogs_api.DomainService.Repositories { - public interface IStatsByGearRepository : IRepository + public interface IStatsByGearRepository : IStatsRepository { - #region Public Methods - - StatsByGear GetAll(User user); - - #endregion Public Methods } } \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsByJumpTypeRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByJumpTypeRepository.cs index 555a76e..4c19444 100644 --- a/Back/skydiveLogs-api.DomainService/Repositories/IStatsByJumpTypeRepository.cs +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByJumpTypeRepository.cs @@ -2,12 +2,7 @@ using skydiveLogs_api.Domain; namespace skydiveLogs_api.DomainService.Repositories { - public interface IStatsByJumpTypeRepository : IRepository + public interface IStatsByJumpTypeRepository : IStatsRepository { - #region Public Methods - - StatsByJumpType GetAll(User user); - - #endregion Public Methods } } \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsByYearByJumpTypeRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByYearByJumpTypeRepository.cs index 0da9de6..d6d134e 100644 --- a/Back/skydiveLogs-api.DomainService/Repositories/IStatsByYearByJumpTypeRepository.cs +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByYearByJumpTypeRepository.cs @@ -2,12 +2,7 @@ using skydiveLogs_api.Domain; namespace skydiveLogs_api.DomainService.Repositories { - public interface IStatsByYearByJumpTypeRepository : IRepository + public interface IStatsByYearByJumpTypeRepository : IStatsRepository { - #region Public Methods - - StatsByYearByJumpType GetAll(User user); - - #endregion Public Methods } } \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsByYearRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByYearRepository.cs index 0f12ea3..00ecb5c 100644 --- a/Back/skydiveLogs-api.DomainService/Repositories/IStatsByYearRepository.cs +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsByYearRepository.cs @@ -2,12 +2,7 @@ using skydiveLogs_api.Domain; namespace skydiveLogs_api.DomainService.Repositories { - public interface IStatsByYearRepository : IRepository + public interface IStatsByYearRepository : IStatsRepository { - #region Public Methods - - StatsByYear GetAll(User user); - - #endregion Public Methods } } \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastMonthByDzRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastMonthByDzRepository.cs index 9efdf24..6e91941 100644 --- a/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastMonthByDzRepository.cs +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastMonthByDzRepository.cs @@ -2,12 +2,7 @@ using skydiveLogs_api.Domain; namespace skydiveLogs_api.DomainService.Repositories { - public interface IStatsForLastMonthByDzRepository : IRepository + public interface IStatsForLastMonthByDzRepository : IStatsRepository { - #region Public Methods - - StatsForLastMonthByDz GetAll(User user); - - #endregion Public Methods } } \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastMonthByJumpTypeRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastMonthByJumpTypeRepository.cs index c548b41..eee6dce 100644 --- a/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastMonthByJumpTypeRepository.cs +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastMonthByJumpTypeRepository.cs @@ -2,12 +2,7 @@ using skydiveLogs_api.Domain; namespace skydiveLogs_api.DomainService.Repositories { - public interface IStatsForLastMonthByJumpTypeRepository : IRepository + public interface IStatsForLastMonthByJumpTypeRepository : IStatsRepository { - #region Public Methods - - StatsForLastMonthByJumpType GetAll(User user); - - #endregion Public Methods } } \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastYearByDzRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastYearByDzRepository.cs index 84712e8..adc164d 100644 --- a/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastYearByDzRepository.cs +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastYearByDzRepository.cs @@ -2,12 +2,7 @@ using skydiveLogs_api.Domain; namespace skydiveLogs_api.DomainService.Repositories { - public interface IStatsForLastYearByDzRepository : IRepository + public interface IStatsForLastYearByDzRepository : IStatsRepository { - #region Public Methods - - StatsForLastYearByDz GetAll(User user); - - #endregion Public Methods } } \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastYearByJumpTypeRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastYearByJumpTypeRepository.cs index 25b176e..15cfd11 100644 --- a/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastYearByJumpTypeRepository.cs +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsForLastYearByJumpTypeRepository.cs @@ -2,12 +2,7 @@ using skydiveLogs_api.Domain; namespace skydiveLogs_api.DomainService.Repositories { - public interface IStatsForLastYearByJumpTypeRepository : IRepository + public interface IStatsForLastYearByJumpTypeRepository : IStatsRepository { - #region Public Methods - - StatsForLastYearByJumpType GetAll(User user); - - #endregion Public Methods } } \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainService/Repositories/IStatsRepository.cs b/Back/skydiveLogs-api.DomainService/Repositories/IStatsRepository.cs index b9c205e..267ac38 100644 --- a/Back/skydiveLogs-api.DomainService/Repositories/IStatsRepository.cs +++ b/Back/skydiveLogs-api.DomainService/Repositories/IStatsRepository.cs @@ -7,11 +7,13 @@ namespace skydiveLogs_api.DomainService.Repositories { #region Public Methods - T GetAll(User user); + IEnumerable GetAll(User user); - int Add(T newEntity); + int Add(IEnumerable newEntity); - bool Update(T updated); + bool Update(IEnumerable updatedEntity, User user); + + bool Delete(User user); #endregion Public Methods } diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByAircraftRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByAircraftRepository.cs index e91a992..500979e 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsByAircraftRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsByAircraftRepository.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; namespace skydiveLogs_api.Infrastructure { - public class StatsByAircraftRepository : IStatsRepository + public class StatsByAircraftRepository : IStatsByAircraftRepository { #region Public Constructors diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByDzRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByDzRepository.cs index 784bc6d..c64b5af 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsByDzRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsByDzRepository.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; namespace skydiveLogs_api.Infrastructure { - public class StatsByDzRepository : IStatsRepository + public class StatsByDzRepository : IStatsByDzRepository { #region Public Constructors @@ -20,14 +20,17 @@ namespace skydiveLogs_api.Infrastructure #region Public Methods - public int Add(StatsByDz newStats) + public int Add(IEnumerable newStats) { - int result; + int result = 0; try { - var tmp = _col.Insert(newStats); - result = tmp.AsInt32; + foreach (var newStat in newStats) + { + var tmp = _col.Insert(newStats); + result = tmp; + } } catch { @@ -37,17 +40,26 @@ namespace skydiveLogs_api.Infrastructure return result; } - public StatsByDz GetAll(User user) + public IEnumerable GetAll(User user) { return _col.Include(x => x.User) .Query() .Where(j => j.User.Id == user.Id) - .SingleOrDefault(); + .ToList(); } - public bool Update(StatsByDz stats) + public bool Update(IEnumerable updatedStats, User user) { - return _col.Update(stats); + Delete(user); + var tmp = Add(updatedStats); + + return tmp != 0; + } + + public bool Delete(User user) + { + var tmp = _col.DeleteMany(s => s.User.Id == user.Id); + return tmp != 0; } #endregion Public Methods diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByGearRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByGearRepository.cs index b7a2476..ba2fd95 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsByGearRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsByGearRepository.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; namespace skydiveLogs_api.Infrastructure { - public class StatsByGearRepository : IStatsRepository + public class StatsByGearRepository : IStatsByGearRepository { #region Public Constructors @@ -20,14 +20,17 @@ namespace skydiveLogs_api.Infrastructure #region Public Methods - public int Add(StatsByGear newStats) + public int Add(IEnumerable newStats) { - int result; + int result = 0; try { - var tmp = _col.Insert(newStats); - result = tmp.AsInt32; + foreach (var newStat in newStats) + { + var tmp = _col.Insert(newStats); + result = tmp; + } } catch { @@ -37,17 +40,26 @@ namespace skydiveLogs_api.Infrastructure return result; } - public StatsByGear GetAll(User user) + public IEnumerable GetAll(User user) { return _col.Include(x => x.User) .Query() .Where(j => j.User.Id == user.Id) - .SingleOrDefault(); + .ToList(); } - public bool Update(StatsByGear stats) + public bool Update(IEnumerable updatedStats, User user) { - return _col.Update(stats); + Delete(user); + var tmp = Add(updatedStats); + + return tmp != 0; + } + + public bool Delete(User user) + { + var tmp = _col.DeleteMany(s => s.User.Id == user.Id); + return tmp != 0; } #endregion Public Methods diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByJumpTypeRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByJumpTypeRepository.cs index 1cfa71c..e938f54 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsByJumpTypeRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsByJumpTypeRepository.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; namespace skydiveLogs_api.Infrastructure { - public class StatsByJumpTypeRepository : IStatsRepository + public class StatsByJumpTypeRepository : IStatsByJumpTypeRepository { #region Public Constructors @@ -20,14 +20,17 @@ namespace skydiveLogs_api.Infrastructure #region Public Methods - public int Add(StatsByJumpType newStats) + public int Add(IEnumerable newStats) { - int result; + int result = 0; try { - var tmp = _col.Insert(newStats); - result = tmp.AsInt32; + foreach (var newStat in newStats) + { + var tmp = _col.Insert(newStats); + result = tmp; + } } catch { @@ -37,17 +40,26 @@ namespace skydiveLogs_api.Infrastructure return result; } - public StatsByJumpType GetAll(User user) + public IEnumerable GetAll(User user) { return _col.Include(x => x.User) .Query() .Where(j => j.User.Id == user.Id) - .SingleOrDefault(); + .ToList(); } - public bool Update(StatsByJumpType stats) + public bool Update(IEnumerable updatedStats, User user) { - return _col.Update(stats); + Delete(user); + var tmp = Add(updatedStats); + + return tmp != 0; + } + + public bool Delete(User user) + { + var tmp = _col.DeleteMany(s => s.User.Id == user.Id); + return tmp != 0; } #endregion Public Methods diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByYearByJumpTypeRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByYearByJumpTypeRepository.cs index b76daa9..51da73d 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsByYearByJumpTypeRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsByYearByJumpTypeRepository.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; namespace skydiveLogs_api.Infrastructure { - public class StatsByYearByJumpTypeRepository : IStatsRepository + public class StatsByYearByJumpTypeRepository : IStatsByYearByJumpTypeRepository { #region Public Constructors @@ -20,14 +20,17 @@ namespace skydiveLogs_api.Infrastructure #region Public Methods - public int Add(StatsByYearByJumpType newStats) + public int Add(IEnumerable newStats) { - int result; + int result = 0; try { - var tmp = _col.Insert(newStats); - result = tmp.AsInt32; + foreach (var newStat in newStats) + { + var tmp = _col.Insert(newStats); + result = tmp; + } } catch { @@ -37,17 +40,26 @@ namespace skydiveLogs_api.Infrastructure return result; } - public StatsByYearByJumpType GetAll(User user) + public IEnumerable GetAll(User user) { return _col.Include(x => x.User) .Query() .Where(j => j.User.Id == user.Id) - .SingleOrDefault(); + .ToList(); } - public bool Update(StatsByYearByJumpType stats) + public bool Update(IEnumerable updatedStats, User user) { - return _col.Update(stats); + Delete(user); + var tmp = Add(updatedStats); + + return tmp != 0; + } + + public bool Delete(User user) + { + var tmp = _col.DeleteMany(s => s.User.Id == user.Id); + return tmp != 0; } #endregion Public Methods diff --git a/Back/skydiveLogs-api.Infrastructure/StatsByYearRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsByYearRepository.cs index b743c77..5a0f716 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsByYearRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsByYearRepository.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using LiteDB; using skydiveLogs_api.Domain; using skydiveLogs_api.DomainService.Repositories; @@ -5,7 +6,7 @@ using skydiveLogs_api.Infrastructure.Interfaces; namespace skydiveLogs_api.Infrastructure { - public class StatsByYearRepository : IStatsRepository + public class StatsByYearRepository : IStatsByYearRepository { #region Public Constructors @@ -19,14 +20,17 @@ namespace skydiveLogs_api.Infrastructure #region Public Methods - public int Add(StatsByYear newStats) + public int Add(IEnumerable newStats) { - int result; + int result = 0; try { - var tmp = _col.Insert(newStats); - result = tmp.AsInt32; + foreach (var newStat in newStats) + { + var tmp = _col.Insert(newStats); + result = tmp; + } } catch { @@ -36,17 +40,26 @@ namespace skydiveLogs_api.Infrastructure return result; } - public StatsByYear GetAll(User user) + public IEnumerable GetAll(User user) { return _col.Include(x => x.User) .Query() .Where(j => j.User.Id == user.Id) - .SingleOrDefault(); + .ToList(); } - public bool Update(StatsByYear stats) + public bool Update(IEnumerable updatedStats, User user) { - return _col.Update(stats); + Delete(user); + var tmp = Add(updatedStats); + + return tmp != 0; + } + + public bool Delete(User user) + { + var tmp = _col.DeleteMany(s => s.User.Id == user.Id); + return tmp != 0; } #endregion Public Methods diff --git a/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByDzRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByDzRepository.cs index ae6ad9b..d970a89 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByDzRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByDzRepository.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; namespace skydiveLogs_api.Infrastructure { - public class StatsForLastMonthByDzRepository : IStatsRepository + public class StatsForLastMonthByDzRepository : IStatsForLastMonthByDzRepository { #region Public Constructors @@ -20,14 +20,17 @@ namespace skydiveLogs_api.Infrastructure #region Public Methods - public int Add(StatsForLastMonthByDz newStats) + public int Add(IEnumerable newStats) { - int result; + int result = 0; try { - var tmp = _col.Insert(newStats); - result = tmp.AsInt32; + foreach (var newStat in newStats) + { + var tmp = _col.Insert(newStats); + result = tmp; + } } catch { @@ -37,17 +40,26 @@ namespace skydiveLogs_api.Infrastructure return result; } - public StatsForLastMonthByDz GetAll(User user) + public IEnumerable GetAll(User user) { return _col.Include(x => x.User) .Query() .Where(j => j.User.Id == user.Id) - .SingleOrDefault(); + .ToList(); } - public bool Update(StatsForLastMonthByDz stats) + public bool Update(IEnumerable updatedStats, User user) { - return _col.Update(stats); + Delete(user); + var tmp = Add(updatedStats); + + return tmp != 0; + } + + public bool Delete(User user) + { + var tmp = _col.DeleteMany(s => s.User.Id == user.Id); + return tmp != 0; } #endregion Public Methods diff --git a/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByJumpTypeRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByJumpTypeRepository.cs index 90d6dd4..cdb0680 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByJumpTypeRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsForLastMonthByJumpTypeRepository.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; namespace skydiveLogs_api.Infrastructure { - public class StatsForLastMonthByJumpTypeRepository : IStatsRepository + public class StatsForLastMonthByJumpTypeRepository : IStatsForLastMonthByJumpTypeRepository { #region Public Constructors @@ -20,14 +20,17 @@ namespace skydiveLogs_api.Infrastructure #region Public Methods - public int Add(StatsForLastMonthByJumpType newStats) + public int Add(IEnumerable newStats) { - int result; + int result = 0; try { - var tmp = _col.Insert(newStats); - result = tmp.AsInt32; + foreach (var newStat in newStats) + { + var tmp = _col.Insert(newStats); + result = tmp; + } } catch { @@ -37,17 +40,26 @@ namespace skydiveLogs_api.Infrastructure return result; } - public StatsForLastMonthByJumpType GetAll(User user) + public IEnumerable GetAll(User user) { return _col.Include(x => x.User) .Query() .Where(j => j.User.Id == user.Id) - .SingleOrDefault(); + .ToList(); } - public bool Update(StatsForLastMonthByJumpType stats) + public bool Update(IEnumerable updatedStats, User user) { - return _col.Update(stats); + Delete(user); + var tmp = Add(updatedStats); + + return tmp != 0; + } + + public bool Delete(User user) + { + var tmp = _col.DeleteMany(s => s.User.Id == user.Id); + return tmp != 0; } #endregion Public Methods diff --git a/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByDzRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByDzRepository.cs index 14e8814..3888be8 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByDzRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByDzRepository.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; namespace skydiveLogs_api.Infrastructure { - public class StatsForLastYearByDzRepository : IStatsRepository + public class StatsForLastYearByDzRepository : IStatsForLastYearByDzRepository { #region Public Constructors @@ -20,14 +20,17 @@ namespace skydiveLogs_api.Infrastructure #region Public Methods - public int Add(StatsForLastYearByDz newStats) + public int Add(IEnumerable newStats) { - int result; + int result = 0; try { - var tmp = _col.Insert(newStats); - result = tmp.AsInt32; + foreach (var newStat in newStats) + { + var tmp = _col.Insert(newStats); + result = tmp; + } } catch { @@ -37,17 +40,26 @@ namespace skydiveLogs_api.Infrastructure return result; } - public StatsForLastYearByDz GetAll(User user) + public IEnumerable GetAll(User user) { return _col.Include(x => x.User) .Query() .Where(j => j.User.Id == user.Id) - .SingleOrDefault(); + .ToList(); } - public bool Update(StatsForLastYearByDz stats) + public bool Update(IEnumerable updatedStats, User user) { - return _col.Update(stats); + Delete(user); + var tmp = Add(updatedStats); + + return tmp != 0; + } + + public bool Delete(User user) + { + var tmp = _col.DeleteMany(s => s.User.Id == user.Id); + return tmp != 0; } #endregion Public Methods diff --git a/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByJumpTypeRepository.cs b/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByJumpTypeRepository.cs index c532267..9921007 100644 --- a/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByJumpTypeRepository.cs +++ b/Back/skydiveLogs-api.Infrastructure/StatsForLastYearByJumpTypeRepository.cs @@ -6,7 +6,7 @@ using System.Collections.Generic; namespace skydiveLogs_api.Infrastructure { - public class StatsForLastYearByJumpTypeRepository : IStatsRepository + public class StatsForLastYearByJumpTypeRepository : IStatsForLastYearByJumpTypeRepository { #region Public Constructors @@ -20,14 +20,17 @@ namespace skydiveLogs_api.Infrastructure #region Public Methods - public int Add(StatsForLastYearByJumpType newStats) + public int Add(IEnumerable newStats) { - int result; + int result = 0; try { - var tmp = _col.Insert(newStats); - result = tmp.AsInt32; + foreach (var newStat in newStats) + { + var tmp = _col.Insert(newStats); + result = tmp; + } } catch { @@ -37,17 +40,26 @@ namespace skydiveLogs_api.Infrastructure return result; } - public StatsForLastYearByJumpType GetAll(User user) + public IEnumerable GetAll(User user) { return _col.Include(x => x.User) .Query() .Where(j => j.User.Id == user.Id) - .SingleOrDefault(); + .ToList(); } - public bool Update(StatsForLastYearByJumpType stats) + public bool Update(IEnumerable updatedStats, User user) { - return _col.Update(stats); + Delete(user); + var tmp = Add(updatedStats); + + return tmp != 0; + } + + public bool Delete(User user) + { + var tmp = _col.DeleteMany(s => s.User.Id == user.Id); + return tmp != 0; } #endregion Public Methods -- 2.49.1 From f6e16b9cd5df62b8ec460c0e481c0d6623b72c05 Mon Sep 17 00:00:00 2001 From: sandre Date: Fri, 23 Jan 2026 22:53:04 +0100 Subject: [PATCH 09/11] Add editorConfig file --- Back/.editorconfig | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 Back/.editorconfig diff --git a/Back/.editorconfig b/Back/.editorconfig new file mode 100644 index 0000000..9b73521 --- /dev/null +++ b/Back/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 4 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false -- 2.49.1 From c3337cf236a85dfc6bdd86f16c27a505291911e3 Mon Sep 17 00:00:00 2001 From: sandre Date: Sat, 24 Jan 2026 14:46:47 +0100 Subject: [PATCH 10/11] Add the reset of Stats --- .../Interfaces/IStatsByAircraftService.cs | 2 ++ .../Interfaces/IStatsByDzService.cs | 2 ++ .../Interfaces/IStatsByGearService.cs | 2 ++ .../Interfaces/IStatsByJumpTypeService.cs | 2 ++ .../IStatsByYearByJumpTypeService.cs | 2 ++ .../Interfaces/IStatsByYearService.cs | 2 ++ .../IStatsForLastMonthByDzService.cs | 2 ++ .../IStatsForLastMonthByJumpTypeService.cs | 2 ++ .../IStatsForLastYearByDzService.cs | 2 ++ .../IStatsForLastYearByJumpTypeService.cs | 2 ++ .../StatsService.cs | 24 ++++++++----------- 11 files changed, 30 insertions(+), 14 deletions(-) diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByAircraftService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByAircraftService.cs index 7d9136f..d998a39 100644 --- a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByAircraftService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByAircraftService.cs @@ -9,6 +9,8 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces IEnumerable GetStats(); + void Reset(); + #endregion Public Methods } } \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByDzService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByDzService.cs index d7d81bf..34c41f8 100644 --- a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByDzService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByDzService.cs @@ -9,6 +9,8 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces IEnumerable GetStats(); + void Reset(); + #endregion Public Methods } } \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByGearService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByGearService.cs index c471fa2..0a83b28 100644 --- a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByGearService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByGearService.cs @@ -9,6 +9,8 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces IEnumerable GetStats(); + void Reset(); + #endregion Public Methods } } \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByJumpTypeService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByJumpTypeService.cs index b58ae65..0857475 100644 --- a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByJumpTypeService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByJumpTypeService.cs @@ -9,6 +9,8 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces IEnumerable GetStats(); + void Reset(); + #endregion Public Methods } } \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearByJumpTypeService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearByJumpTypeService.cs index f900ac0..152be31 100644 --- a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearByJumpTypeService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearByJumpTypeService.cs @@ -9,6 +9,8 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces IEnumerable GetStats(); + void Reset(); + #endregion Public Methods } } \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearService.cs index 83b6ab7..39fc2e4 100644 --- a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsByYearService.cs @@ -8,6 +8,8 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces #region Public Methods IEnumerable GetStats(); + void Reset(); + #endregion Public Methods } } \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByDzService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByDzService.cs index 432ce09..c7c9cbc 100644 --- a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByDzService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByDzService.cs @@ -9,6 +9,8 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces IEnumerable GetStats(); + void Reset(); + #endregion Public Methods } } \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByJumpTypeService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByJumpTypeService.cs index 5a7a88e..581bc78 100644 --- a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByJumpTypeService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastMonthByJumpTypeService.cs @@ -9,6 +9,8 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces IEnumerable GetStats(); + void Reset(); + #endregion Public Methods } } \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByDzService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByDzService.cs index 954b86f..19533a2 100644 --- a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByDzService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByDzService.cs @@ -9,6 +9,8 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces IEnumerable GetStats(); + void Reset(); + #endregion Public Methods } } \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByJumpTypeService.cs b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByJumpTypeService.cs index c60ee9a..a2d20d8 100644 --- a/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByJumpTypeService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/Interfaces/IStatsForLastYearByJumpTypeService.cs @@ -9,6 +9,8 @@ namespace skydiveLogs_api.DomainBusiness.Interfaces IEnumerable GetStats(); + void Reset(); + #endregion Public Methods } } \ No newline at end of file diff --git a/Back/skydiveLogs-api.DomainBusiness/StatsService.cs b/Back/skydiveLogs-api.DomainBusiness/StatsService.cs index 74cf267..e6eb3e2 100644 --- a/Back/skydiveLogs-api.DomainBusiness/StatsService.cs +++ b/Back/skydiveLogs-api.DomainBusiness/StatsService.cs @@ -60,20 +60,16 @@ namespace skydiveLogs_api.DomainBusiness public void Reset() { - // var resetStats = new UserStats(); - // var myStats = GetAllStats(); - // myStats.ByAircraft = resetStats.ByAircraft; - // myStats.ByDz = resetStats.ByDz; - // myStats.ByGear = resetStats.ByGear; - // myStats.ByJumpType = resetStats.ByJumpType; - // myStats.ByYear = resetStats.ByYear; - // myStats.ForLastMonthByDz = resetStats.ForLastMonthByDz; - // myStats.ForLastMonthByJumpType = resetStats.ForLastMonthByJumpType; - // myStats.ForLastYearByDz = resetStats.ForLastYearByDz; - // myStats.ForLastYearByJumpType = resetStats.ForLastYearByJumpType; - // myStats.ByYearByJumpType = resetStats.ByYearByJumpType; - - // _userStatsRepository.Update(myStats); + _statsByAircraftService.Reset(); + _statsByDzService.Reset(); + _statsByGearService.Reset(); + _statsByJumpTypeService.Reset(); + _statsByYearByJumpTypeService.Reset(); + _statsByYearService.Reset(); + _statsForLastMonthByDzService.Reset(); + _statsForLastMonthByJumpTypeService.Reset(); + _statsForLastYearByDzService.Reset(); + _statsForLastYearByJumpTypeService.Reset(); } public IEnumerable GetStatsByAircraft() -- 2.49.1 From d31bd235bfe5f4d813d979c7646dbc0df48cac1d Mon Sep 17 00:00:00 2001 From: sandre Date: Mon, 26 Jan 2026 11:06:51 +0100 Subject: [PATCH 11/11] Fix --- Front/skydivelogs-app/src/app/summary/summary.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Front/skydivelogs-app/src/app/summary/summary.component.ts b/Front/skydivelogs-app/src/app/summary/summary.component.ts index 5e33c4e..8e93329 100644 --- a/Front/skydivelogs-app/src/app/summary/summary.component.ts +++ b/Front/skydivelogs-app/src/app/summary/summary.component.ts @@ -193,7 +193,7 @@ export class SummaryComponent implements OnInit { let firstYear: number = Number(data[0].label); const now = new Date(); const currentYear = now.getFullYear(); - const nbYears = currentYear - firstYear; + const nbYears = currentYear - firstYear + 1; let listOfYears = new Array(nbYears) .fill(null) .map(() => firstYear++); -- 2.49.1