️ Improve Training program

TrainingProgramService
Leo TUAILLON 4 months ago
parent 53d4dadf68
commit 55eb74c93b

@ -15,14 +15,14 @@ public class ExercicesTemplateController : ControllerBase
private readonly ILogger<ExercicesTemplateController> _logger; private readonly ILogger<ExercicesTemplateController> _logger;
private readonly IExerciceService _dataServices; private readonly IExerciceService _dataServices;
public ExercicesTemplateController(ILogger<ExercicesDataController> logger, IExerciceTemplateService dataServices) public ExercicesTemplateController(ILogger<ExercicesTemplateController> logger, IExerciceTemplateSercice dataServices)
{ {
_logger = logger; _logger = logger;
_dataServices = dataServices; _dataServices = dataServices;
} }
[HttpGet] [HttpGet]
[ProducesResponseType(typeof(IEnumerable<ResponseExerciceDto>), StatusCodes.Status200OK)] [ProducesResponseType(typeof(IEnumerable<ResponseTemplateExerciceDto>), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status204NoContent)] [ProducesResponseType(StatusCodes.Status204NoContent)]
[AllowAnonymous] [AllowAnonymous]
public async Task<IActionResult> GetExercices([FromQuery] int pageIndex = 1, [FromQuery] int pageSize = 5, [FromQuery] bool ascending = true) public async Task<IActionResult> GetExercices([FromQuery] int pageIndex = 1, [FromQuery] int pageSize = 5, [FromQuery] bool ascending = true)
@ -32,7 +32,7 @@ public class ExercicesTemplateController : ControllerBase
} }
[HttpGet("{id}")] [HttpGet("{id}")]
[ProducesResponseType(typeof(ResponseExerciceDto), StatusCodes.Status200OK)] [ProducesResponseType(typeof(ResponseTemplateExerciceDto), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)] [ProducesResponseType(StatusCodes.Status404NotFound)]
[AllowAnonymous] [AllowAnonymous]
public async Task<IActionResult> GetExerciceById(string id) public async Task<IActionResult> GetExerciceById(string id)
@ -42,10 +42,10 @@ public class ExercicesTemplateController : ControllerBase
} }
[HttpPost] [HttpPost]
[ProducesResponseType(typeof(ResponseExerciceDto), StatusCodes.Status201Created)] [ProducesResponseType(typeof(ResponseTemplateExerciceDto), StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status400BadRequest)]
[AllowAnonymous] [AllowAnonymous]
public async Task<IActionResult> CreateExercice([FromBody] RequestExerciceDto request) public async Task<IActionResult> CreateExercice([FromBody] RequestTemplateExerciceDto request)
{ {
if (!ModelState.IsValid) return BadRequest(ModelState); if (!ModelState.IsValid) return BadRequest(ModelState);
@ -54,11 +54,11 @@ public class ExercicesTemplateController : ControllerBase
} }
[HttpPut("{id}")] [HttpPut("{id}")]
[ProducesResponseType(typeof(ResponseExerciceDto), StatusCodes.Status200OK)] [ProducesResponseType(typeof(ResponseTemplateExerciceDto), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)] [ProducesResponseType(StatusCodes.Status404NotFound)]
[ProducesResponseType(StatusCodes.Status400BadRequest)] [ProducesResponseType(StatusCodes.Status400BadRequest)]
[AllowAnonymous] [AllowAnonymous]
public async Task<IActionResult> UpdateExercice(string id, [FromBody] RequestExerciceDto request) public async Task<IActionResult> UpdateExercice(string id, [FromBody] RequestTemplateExerciceDto request)
{ {
if (!ModelState.IsValid) return BadRequest(ModelState); if (!ModelState.IsValid) return BadRequest(ModelState);

@ -1,22 +1,16 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Shared;
namespace Server.Dto.Request namespace Server.Dto.Request
{ {
public class RequestExerciceDto public class RequestExerciceDto
{ {
[Required] public ECategory Category { get; set; }
public string Name { get; set; }
public string Description { get; set; } public int NbSets { get; set; }
public float Duration { get; set; } public int NbReps { get; set; }
public string Image { get; set; } public int RestingTime { get; set; }
public string Video { get; set; }
public int NbSeries { get; set; }
public int NbRepetitions { get; set; }
} }
} }

@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Shared;
namespace Server.Dto.Request namespace Server.Dto.Request
{ {
@ -9,8 +10,9 @@ namespace Server.Dto.Request
public string Description { get; set; } public string Description { get; set; }
public float Duration { get; set; } public EDay Day { get; set; }
public ETarget Target { get; set; }
public List<string> ExerciceIds { get; set; } = new List<string>(); public List<string> ExerciceIds { get; set; } = new List<string>();
} }
} }

@ -1,20 +1,21 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations;
using Shared;
namespace Server.Dto.Request namespace Server.Dto.Request
{ {
public class RequestTrainingProgramDto public class RequestTrainingProgramDto
{ {
[Required]
public ELang Lang { get; set; }
public string Name { get; set; } public string Name { get; set; }
[Required] public string? OwnerId { get; set; }
public int WeekDuration { get; set; } public int? WeekDuration { get; set; }
public string Description { get; set; } public EGoal EGoal { get; set; }
public string Difficulty { get; set; } public EDifficulty EDifficulty { get; set; }
public List<RequestSessionDto> Sessions { get; set; } = new List<RequestSessionDto>(); public List<RequestSessionDto> Sessions { get; set; } = new List<RequestSessionDto>();
} }
} }

@ -1,21 +1,27 @@
using Shared;
namespace Server.Dto.Response namespace Server.Dto.Response
{ {
public class ResponseExerciceDto public class ResponseExerciceDto
{ {
public string Id { get; set; } public string Id { get; set; }
public string TemplateId { get; set; }
public string Name { get; set; } public string TemplateName { get; set; }
public string Description { get; set; }
public float Duration { get; set; }
public string Image { get; set; } public string TemplateInstructions { get; set; }
public string? TemplateImageId { get; set; }
public string Video { get; set; } public string? TemplateVideoId { get; set; }
public ECategory Category { get; set; }
public int NbSeries { get; set; } public int NbSets { get; set; }
public int NbRepetitions { get; set; } public int NbReps { get; set; }
public int RestingTime { get; set; }
} }
} }

@ -1,3 +1,5 @@
using Shared;
namespace Server.Dto.Response namespace Server.Dto.Response
{ {
public class ResponseSessionDto public class ResponseSessionDto
@ -7,9 +9,12 @@ namespace Server.Dto.Response
public string Name { get; set; } public string Name { get; set; }
public string Description { get; set; } public string Description { get; set; }
public EDay Day { get; set; }
public ETarget Target { get; set; }
public float Duration { get; set; } public float Duration { get; set; }
public List<ResponseExerciceDto> Exercices { get; set; } = new List<ResponseExerciceDto>(); public List<ResponseExerciceDto> Exercices { get; set; } = new List<ResponseExerciceDto>();
} }
} }

@ -1,19 +1,22 @@
using System.Collections.Generic; using System.Collections.Generic;
using Shared;
namespace Server.Dto.Response namespace Server.Dto.Response
{ {
public class ResponseTrainingProgramDto public class ResponseTrainingProgramDto
{ {
public string Id { get; set; } public string Id { get; set; }
public ELang Lang { get; set; }
public string Name { get; set; } public string Name { get; set; }
public int WeekDuration { get; set; } public string? OwnerId { get; set; }
public int? WeekDuration { get; set; }
public string Description { get; set; }
public EGoal EGoal { get; set; }
public string Difficulty { get; set; }
public EDifficulty EDifficulty { get; set; }
public List<ResponseSessionDto> Sessions { get; set; } = new List<ResponseSessionDto>(); public List<ResponseSessionDto> Sessions { get; set; } = new List<ResponseSessionDto>();
} }
} }

@ -19,6 +19,6 @@ public class ResponseUserDto
public ESport ESport { get; set; } public ESport ESport { get; set; }
public ESportLevel ESportLevel { get; set; } public EDifficulty ESportLevel { get; set; }
} }

Binary file not shown.

@ -3,13 +3,19 @@ using Infrastructure.Entities;
using Server.Dto.Request; using Server.Dto.Request;
using Server.Dto.Response; using Server.Dto.Response;
namespace Server.Mappers; namespace Server.Mappers
public class ExerciceProfile : Profile
{ {
public ExerciceProfile() public class ExerciceProfile : Profile
{ {
CreateMap<Exercice, ResponseExerciceDto>(); public ExerciceProfile()
CreateMap<RequestExerciceDto, Exercice>(); {
CreateMap<Exercice, ResponseExerciceDto>()
.ForMember(dest => dest.TemplateName, opt => opt.MapFrom(src => src.Template.Name))
.ForMember(dest => dest.TemplateInstructions, opt => opt.MapFrom(src => src.Template.Instructions))
.ForMember(dest => dest.TemplateImageId, opt => opt.MapFrom(src => src.Template.ImageId))
.ForMember(dest => dest.TemplateVideoId, opt => opt.MapFrom(src => src.Template.VideoId));
CreateMap<RequestExerciceDto, Exercice>();
}
} }
} }

@ -1,4 +1,5 @@
using AutoMapper; using AutoMapper;
using System.Linq;
using Infrastructure.Entities; using Infrastructure.Entities;
using Server.Dto.Request; using Server.Dto.Request;
using Server.Dto.Response; using Server.Dto.Response;
@ -10,7 +11,10 @@ namespace Server.Mappers
public SessionProfile() public SessionProfile()
{ {
CreateMap<Session, ResponseSessionDto>() CreateMap<Session, ResponseSessionDto>()
.ForMember(dest => dest.Exercices, opt => opt.MapFrom(src => src.Exercices)); .ForMember(dest => dest.Duration,
opt => opt.MapFrom(src => src.Exercices.Sum(e => e.Template.Duration)))
.ForMember(dest => dest.Exercices,
opt => opt.MapFrom(src => src.Exercices));
CreateMap<RequestSessionDto, Session>() CreateMap<RequestSessionDto, Session>()
.ForMember(dest => dest.Exercices, opt => opt.Ignore()); .ForMember(dest => dest.Exercices, opt => opt.Ignore());

@ -3,23 +3,30 @@ using Infrastructure.Entities;
using Server.Dto.Request; using Server.Dto.Request;
using Server.Dto.Response; using Server.Dto.Response;
namespace Server.Mappers; namespace Server.Mappers
public class TrainingProgramProfile : Profile
{ {
public TrainingProgramProfile() public class TrainingProgramProfile : Profile
{ {
CreateMap<TrainingProgram, ResponseTrainingProgramDto>() public TrainingProgramProfile()
.ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id)) {
.ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name)) CreateMap<TrainingProgram, ResponseTrainingProgramDto>()
.ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Description)) .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id))
.ForMember(dest => dest.WeekDuration, opt => opt.MapFrom(src => src.WeekDuration)) .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name))
.ForMember(dest => dest.Sessions, opt => opt.MapFrom(src => src.Sessions)); .ForMember(dest => dest.Lang, opt => opt.MapFrom(src => src.Lang))
.ForMember(dest => dest.OwnerId, opt => opt.MapFrom(src => src.OwnerId))
.ForMember(dest => dest.WeekDuration, opt => opt.MapFrom(src => src.WeekDuration))
.ForMember(dest => dest.EGoal, opt => opt.MapFrom(src => src.Goal))
.ForMember(dest => dest.EDifficulty, opt => opt.MapFrom(src => src.Difficulty))
.ForMember(dest => dest.Sessions, opt => opt.MapFrom(src => src.Sessions));
CreateMap<RequestTrainingProgramDto, TrainingProgram>() CreateMap<RequestTrainingProgramDto, TrainingProgram>()
.ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name)) .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name))
.ForMember(dest => dest.Description, opt => opt.MapFrom(src => src.Description)) .ForMember(dest => dest.Lang, opt => opt.MapFrom(src => src.Lang))
.ForMember(dest => dest.WeekDuration, opt => opt.MapFrom(src => src.WeekDuration)) .ForMember(dest => dest.OwnerId, opt => opt.MapFrom(src => src.OwnerId))
.ForMember(dest => dest.Sessions, opt => opt.MapFrom(src => src.Sessions)); .ForMember(dest => dest.WeekDuration, opt => opt.MapFrom(src => src.WeekDuration.HasValue ? src.WeekDuration.Value : 0))
.ForMember(dest => dest.Goal, opt => opt.MapFrom(src => src.EGoal))
.ForMember(dest => dest.Difficulty, opt => opt.MapFrom(src => src.EDifficulty))
.ForMember(dest => dest.Sessions, opt => opt.MapFrom(src => src.Sessions));
}
} }
} }

@ -2,5 +2,7 @@ namespace Shared;
public enum ECategory public enum ECategory
{ {
WARMUP,
TRAINING,
STRETCHING,
} }

@ -2,5 +2,11 @@ namespace Shared;
public enum EDay public enum EDay
{ {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
} }

@ -2,5 +2,8 @@ namespace Shared;
public enum EDifficulty public enum EDifficulty
{ {
NOT_SPORTY,
BEGINNER,
SPORTY,
VERY_SPORTY
} }

@ -2,5 +2,7 @@ namespace Shared;
public enum EGoal public enum EGoal
{ {
WEIGHT_LOSS,
MASS_GAIN,
FITNESS,
} }

@ -2,5 +2,6 @@ namespace Shared;
public enum ELang public enum ELang
{ {
FR,
EN
} }

@ -2,5 +2,10 @@ namespace Shared;
public enum ETarget public enum ETarget
{ {
LEGS,
ARMS,
BACK,
CHEST,
ABS,
CARDIO
} }

@ -8,7 +8,6 @@
<ItemGroup> <ItemGroup>
<Folder Include="Criteria\" /> <Folder Include="Criteria\" />
<Folder Include="Enums\" />
</ItemGroup> </ItemGroup>
</Project> </Project>

Loading…
Cancel
Save