().HasData(users);
}
diff --git a/README.md b/README.md
index 12f2a25..e3370fb 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-
SAE Alica
+ Optifit WebService
Entity Framework - API dotnet
@@ -25,34 +25,24 @@
### Récapitulatif du Projet
-Ce repot représente le rendu en API et Entity Framework, dans le cadre de notre SAe Alica.
+Ce repot représente le rendu en API et Entity Framework, dans le cadre de notre SAE de 3ème année à l'IUT de Clermont-Ferrand.
-En ce qui concerne la notation, notre travaille se trouve sur la branche **dev**
-## Prérequis pour le projet Entity Framework
-
-* [Visual Studio](https://visualstudio.microsoft.com/) - Environnement de développement intégré (IDE) recommandé pour les projets .NET si vous êtes sur Window
-* [Rider](https://www.jetbrains.com/fr-fr/rider/) - Environnement de développement intégré (IDE) recommandé pour les projets .NET si vous êtes sur MAC
-* [Code First](https://codefirst.iut.uca.fr/) - Outil de versioning
+## Prérequis
## Premiers Pas
-#### Warning : Le développement se faire sur la branche **dev**
-1. Cloner le dépôt Git : *git clone 'https://codefirst.iut.uca.fr/git/sae.alica/API_dotnet.git'*
-2. Aller dans le dossier API_dotnet : *cd API_dotnet/*
-3. Changer de branche afin d'avoir la dernière version du projet : *git checkout dev*
-4. Verifier bien que vous êtes sur la branche dev : *git branch*
-5. Lancer le projet avec votre IDE (Rider ou Visual Studio Code)
-6. Lancer la solution
-7. Profiter des fonctionnalités de l'API via swagger
## Fabriqué avec
-* [Visual Studio](https://visualstudio.microsoft.com/) - Environnement de développement intégré (IDE) recommandé pour les projets .NET
+* [JetBrain Rider](https://www.jetbrains.com/fr-fr/rider/) - Environnement de développement intégré (IDE) recommandé pour les projets .NET
* [C#](https://learn.microsoft.com/fr-fr/dotnet/csharp/) - Documentation C#
* [Entity Framework](https://learn.microsoft.com/fr-fr/ef/) - Documentation EF
* [CodeFirst](https://codefirst.iut.uca.fr/) - Gitea
## Contributeurs
+* [Vianney Jourdy](https://codefirst.iut.uca.fr/git/vianney.jourdy)
+* [Tony Fages](https://codefirst.iut.uca.fr/git/tony.fages)
* [Léo TUAILLON](https://codefirst.iut.uca.fr/git/leo.tuaillon)
-* [Thomas MUZARD](https://codefirst.iut.uca.fr/git/thomas.muzard)
\ No newline at end of file
+* [Anthony Richard](https://codefirst.iut.uca.fr/git/anthony.richard)
+* [Louis Laborie](https://codefirst.iut.uca.fr/git/louis.laborie)
diff --git a/Server/API_dotnet.csproj.user b/Server/API_dotnet.csproj.user
deleted file mode 100644
index 703da71..0000000
--- a/Server/API_dotnet.csproj.user
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
- https
- MinimalApiScaffolder
- root/Common/Api
- 650
-
-
\ No newline at end of file
diff --git a/Server/Controller/v1/AlumniRestrictedController.cs b/Server/Controller/v1/AlumniRestrictedController.cs
deleted file mode 100644
index ab7a72c..0000000
--- a/Server/Controller/v1/AlumniRestrictedController.cs
+++ /dev/null
@@ -1,45 +0,0 @@
-using Microsoft.AspNetCore.Mvc;
-using Server.Dto.Response;
-using Asp.Versioning;
-using Server.IServices;
-using Shared.Criteria;
-
-namespace Server.Controller.v1;
-
-[ApiController]
-[ApiVersion("1.0")]
-[Route("api/v{version:apiVersion}/alumni-restricted")]
-public class AlumniRestrictedController : ControllerBase
-{
- private readonly ILogger _logger;
- private IAlumnisService _dataServices;
-
- public AlumniRestrictedController(ILogger logger, IAlumnisService dataServices)
- {
- _logger = logger;
- _dataServices = dataServices;
- }
-
- [HttpGet]
- [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)]
- [ProducesResponseType(StatusCodes.Status204NoContent)]
- [RequireHttps]
- public async Task GetAlumniRestricted([FromQuery] string? lastname, [FromQuery] int page = 1, [FromQuery] int size = 5,
- [FromQuery] AlumniOrderCriteria orderCriteria = AlumniOrderCriteria.None, [FromQuery] bool ascending = true)
- {
- var alumni = await _dataServices.GetAlumnisRestricted(lastname, page, size, orderCriteria, ascending);
- if( alumni.Count == 0) return NoContent();
- return Ok(alumni.Alumnis);
- }
-
-
- [HttpGet("{id}")]
- [ProducesResponseType(typeof(ResponseAlumniDto), StatusCodes.Status200OK)]
- [ProducesResponseType(StatusCodes.Status404NotFound)]
- [RequireHttps]
- public IActionResult GetAlumniRestrictedById(string id)
- {
- var alumni = _dataServices.GetAlumniRestrictedById(id);
- return alumni.Result == null ? NotFound() : Ok(alumni.Result);
- }
-}
\ No newline at end of file
diff --git a/Server/Controller/v1/AlumnisController.cs b/Server/Controller/v1/AlumnisController.cs
deleted file mode 100644
index f7c7966..0000000
--- a/Server/Controller/v1/AlumnisController.cs
+++ /dev/null
@@ -1,56 +0,0 @@
-using Microsoft.AspNetCore.Mvc;
-using Server.Dto.Request;
-using Server.Dto.Response;
-using Asp.Versioning;
-using Server.IServices;
-using Shared.Criteria;
-
-namespace Server.Controller.v1;
-
-[ApiController]
-[ApiVersion("1.0")]
-[Route("api/v{version:apiVersion}/[controller]")]
-public class AlumnisController : ControllerBase
-{
- private readonly ILogger _logger;
- private IAlumnisService _dataServices;
-
- public AlumnisController(ILogger logger, IAlumnisService dataServices)
- {
- _logger = logger;
- _dataServices = dataServices;
- }
-
- [HttpGet]
- [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)]
- [ProducesResponseType(StatusCodes.Status204NoContent)]
- [RequireHttps]
- public IActionResult GetAlumni([FromQuery] string? lastname, [FromQuery] int page = 1, [FromQuery] int size = 5,
- [FromQuery] AlumniOrderCriteria orderCriteria = AlumniOrderCriteria.None, [FromQuery] bool ascending = true)
- {
- var alumni = _dataServices.GetAlumnis(lastname, page, size, orderCriteria, ascending);
- return alumni.Result.Count == 0 ? NoContent() : Ok(alumni.Result.Alumnis);
- }
-
-
- [HttpPost()]
- [ProducesResponseType(typeof(ResponseAlumniDto), StatusCodes.Status201Created)]
- [ProducesResponseType(StatusCodes.Status400BadRequest)]
- [RequireHttps]
- public IActionResult CreateAlumni([FromBody] RequestAlumniDto alumniDto)
- {
- var alumni = _dataServices.CreateAlumni(alumniDto);
- return alumni.Result == null ? BadRequest() : CreatedAtAction(nameof(CreateAlumni), alumni);
- }
-
- [HttpGet("{id}")]
- [ProducesResponseType(typeof(ResponseAlumniDto), StatusCodes.Status200OK)]
- [ProducesResponseType(StatusCodes.Status404NotFound)]
-
- [RequireHttps]
- public IActionResult GetAlumniById(string id)
- {
- var alumni = _dataServices.GetAlumniById(id);
- return alumni.Result == null ? NotFound() : Ok(alumni);
- }
-}
\ No newline at end of file
diff --git a/Server/Controller/v1/EventsController.cs b/Server/Controller/v1/EventsController.cs
deleted file mode 100644
index a4fee54..0000000
--- a/Server/Controller/v1/EventsController.cs
+++ /dev/null
@@ -1,85 +0,0 @@
-using Microsoft.AspNetCore.Mvc;
-using Server.Dto.Request;
-using Server.Dto.Response;
-using Asp.Versioning;
-using Server.IServices;
-using Shared.Criteria;
-
-namespace Server.Controller.v1;
-
-[ApiController]
-[ApiVersion("1.0")]
-[Route("api/v{version:apiVersion}/[controller]")]
-public class EventsController : ControllerBase
-{
- private readonly ILogger _logger;
- private readonly IEventsService _dataServices;
-
- public EventsController(ILogger logger, IEventsService dataServices)
- {
- _logger = logger;
- _dataServices = dataServices;
- }
-
- [HttpGet]
- [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)]
- [ProducesResponseType(StatusCodes.Status204NoContent)]
- public async Task GetEvents([FromQuery] string? title, [FromQuery] int page = 1, [FromQuery] int size = 5,
- [FromQuery] EventOrderCriteria criteria = EventOrderCriteria.Date, [FromQuery] bool ascending = true)
- {
- var result = await _dataServices.GetEvents(title, page, size, criteria, ascending);
- if (result.Count == 0) return NoContent();
- return Ok(result.Events);
- }
-
- [HttpGet("{id}")]
- [ProducesResponseType(typeof(ResponseEventDto), StatusCodes.Status200OK)]
- [ProducesResponseType(StatusCodes.Status404NotFound)]
- [RequireHttps]
- public IActionResult GetEventById(string id)
- {
- var evt = _dataServices.GetEventById(id);
- return evt.Result == null ? NotFound() : Ok(evt.Result);
- }
-
- [HttpPost]
- [ProducesResponseType(typeof(ResponseEventDto), StatusCodes.Status201Created)]
- [ProducesResponseType(StatusCodes.Status400BadRequest)]
- [RequireHttps]
- public IActionResult CreateEvent([FromBody] RequestEventDto eventDto)
- {
- var evenement = _dataServices.CreateEvent(eventDto);
- return evenement.Result == null ? BadRequest() : CreatedAtAction(nameof(CreateEvent), evenement.Result);
- }
-
-
- [HttpPut("{id}")]
- [ProducesResponseType(typeof(ResponseEventDto), StatusCodes.Status200OK)]
- [ProducesResponseType(StatusCodes.Status400BadRequest)]
- [RequireHttps]
- public IActionResult UpdateEvent(string id, [FromBody] RequestEventDto evenement)
- {
- var eventSelected = _dataServices.UpdateEvent(id, evenement);
- return eventSelected == Task.FromResult(null) ? BadRequest() : Ok(eventSelected.Result);
- }
-
- [HttpDelete("{id}")]
- [ProducesResponseType(typeof(bool), StatusCodes.Status200OK)]
- [ProducesResponseType(StatusCodes.Status404NotFound)]
- [RequireHttps]
- public IActionResult DeleteEvent(string id)
- {
- return _dataServices.DeleteEvent(id).Result ? Ok() : NotFound();
- }
-
- [HttpGet("Alica/{id}")]
- [ProducesResponseType(typeof(IEnumerable), 200)]
- [RequireHttps]
- public IActionResult GetEventsByAlumniId(string id)
- {
- //var evenement = _dataServices.GetData();
- //var evenementSelected = evenement.Result.Where(x => x.AlicaId == id).ToList();
- //return evenementSelected.Count() == 0 ? NoContent() : Ok(evenementSelected);
- return Ok();
- }
-}
\ No newline at end of file
diff --git a/Server/Controller/v1/ExperiencesController.cs b/Server/Controller/v1/ExperiencesController.cs
deleted file mode 100644
index 37ef302..0000000
--- a/Server/Controller/v1/ExperiencesController.cs
+++ /dev/null
@@ -1,90 +0,0 @@
-using Microsoft.AspNetCore.Mvc;
-using Server.Dto.Request;
-using Server.Dto.Response;
-using Asp.Versioning;
-using Server.IServices;
-using Shared.Criteria;
-
-namespace Server.Controller.v1;
-
-[ApiController]
-[ApiVersion("1.0")]
-[Route("api/v{version:apiVersion}/[controller]")]
-public class ExperiencesController : ControllerBase
-{
- private readonly ILogger _logger;
- private readonly IExperiencesService _dataServices;
-
- public ExperiencesController(ILogger logger, IExperiencesService dataServices)
- {
- _logger = logger;
- _dataServices = dataServices;
- }
-
- [HttpGet]
- [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)]
- [ProducesResponseType(StatusCodes.Status204NoContent)]
- [RequireHttps]
- public async Task GetExperiences([FromQuery] string? title, [FromQuery] int page = 1, [FromQuery] int size = 5,
- [FromQuery] ExperienceOrderCriteria criteria = ExperienceOrderCriteria.StartDate, [FromQuery] bool ascending = true)
- {
-
- var result = await _dataServices.GetExperiences(title, page, size, criteria, ascending);
- if (result.Count == 0) return NoContent();
- return Ok(result.Experiences);
- }
-
- [HttpGet("{id}")]
- [ProducesResponseType(typeof(ResponseExperienceDto), StatusCodes.Status200OK)]
- [ProducesResponseType(StatusCodes.Status404NotFound)]
- [RequireHttps]
- public IActionResult GetExperienceById(string id)
- {
- var experience = _dataServices.GetExperienceById(id);
- return experience.Result == null ? NotFound() : Ok(experience.Result);
-
- }
-
- [HttpPost]
- [ProducesResponseType(typeof(ResponseExperienceDto), StatusCodes.Status201Created)]
- [ProducesResponseType(StatusCodes.Status400BadRequest)]
- [RequireHttps]
- public IActionResult CreateExperience([FromBody] RequestExperienceDto experienceDto)
- {
- var experience = _dataServices.CreateExperience(experienceDto);
- return experience.Result == null ? BadRequest() : CreatedAtAction(nameof(CreateExperience), experience.Result);
-
- }
-
-
- [HttpPut("{id}")]
- [ProducesResponseType(typeof(ResponseExperienceDto), StatusCodes.Status200OK)]
- [ProducesResponseType(StatusCodes.Status400BadRequest)]
- [RequireHttps]
- public IActionResult UpdateExperience(string id, [FromBody] RequestExperienceDto experience)
- {
- var experienceSelected = _dataServices.UpdateExperience(id, experience);
- return experienceSelected.Result == null ? BadRequest() : Ok(experienceSelected.Result);
-
- }
-
- [HttpDelete("{id}")]
- [ProducesResponseType(typeof(bool), StatusCodes.Status200OK)]
- [ProducesResponseType(StatusCodes.Status404NotFound)]
- [RequireHttps]
- public IActionResult DeleteExperience(string id)
- {
- return _dataServices.DeleteExperience(id).Result ? Ok() : NotFound();
- }
-
- [HttpGet("Alica/{id}")]
- [ProducesResponseType(typeof(IEnumerable), 200)]
- [RequireHttps]
- public IActionResult GetExperiencesByAlumniId(string id)
- {
- //var experience = _dataServices.GetData();
- //var experienceSelected = experience.Result.Where(x => x.AlicaId == id).ToList();
- //return experienceSelected.Count() == 0 ? NoContent() : Ok(experienceSelected);
- return Ok();
- }
-}
\ No newline at end of file
diff --git a/Server/Controller/v1/FormationsController.cs b/Server/Controller/v1/FormationsController.cs
deleted file mode 100644
index 6bbc0b3..0000000
--- a/Server/Controller/v1/FormationsController.cs
+++ /dev/null
@@ -1,86 +0,0 @@
-using Microsoft.AspNetCore.Mvc;
-using Server.Dto.Request;
-using Server.Dto.Response;
-using Asp.Versioning;
-using Server.IServices;
-using Shared.Criteria;
-
-namespace Server.Controller.v1;
-
-[ApiController]
-[ApiVersion("1.0")]
-[Route("api/v{version:apiVersion}/[controller]")]
-public class FormationsController : ControllerBase
-{
- private readonly ILogger _logger;
- private IFormationsService _dataServices;
-
- public FormationsController(ILogger logger, IFormationsService dataServices)
- {
- _logger = logger;
- _dataServices = dataServices;
- }
-
- [HttpGet]
- [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)]
- [ProducesResponseType(StatusCodes.Status204NoContent)]
- [RequireHttps]
- public async Task GetFormations([FromQuery] string? name, [FromQuery] int page = 1, [FromQuery] int size = 5,
- [FromQuery] FormationOrderCriteria criteria = FormationOrderCriteria.StartDate, [FromQuery] bool ascending = true)
- {
- var result = await _dataServices.GetFormations(name, page, size, criteria, ascending);
- if (result.Count == 0) return NoContent();
- return Ok(result.Formations);
- }
-
- [HttpGet("{id}")]
- [ProducesResponseType(typeof(ResponseFormationDto), StatusCodes.Status200OK)]
- [ProducesResponseType(StatusCodes.Status404NotFound)]
- [RequireHttps]
- public IActionResult GetFormationById(string id)
- {
- var formation = _dataServices.GetFormationById(id);
- return formation.Result == null ? NotFound() : Ok(formation.Result);
- }
-
- [HttpPost]
- [ProducesResponseType(typeof(ResponseFormationDto), StatusCodes.Status201Created)]
- [ProducesResponseType(StatusCodes.Status400BadRequest)]
- [RequireHttps]
- public IActionResult CreateFormation([FromBody] RequestFormationDto experienceDto)
- {
- var formation = _dataServices.CreateFormation(experienceDto);
- return formation.Result == null ? BadRequest() : CreatedAtAction(nameof(CreateFormation), formation.Result);
- }
-
-
- [HttpPut("{id}")]
- [ProducesResponseType(typeof(ResponseFormationDto), StatusCodes.Status200OK)]
- [ProducesResponseType(StatusCodes.Status400BadRequest)]
- [RequireHttps]
- public IActionResult UpdateFormation(string id, [FromBody] RequestFormationDto formation)
- {
- var formationSelected = _dataServices.UpdateFormation(id, formation);
- return formationSelected.Result == null ? BadRequest() : Ok(formationSelected.Result);
- }
-
- [HttpDelete("{id}")]
- [ProducesResponseType(typeof(bool), StatusCodes.Status200OK)]
- [ProducesResponseType(StatusCodes.Status404NotFound)]
- [RequireHttps]
- public IActionResult DeleteFormation(string id)
- {
- return _dataServices.DeleteFormation(id).Result ? Ok() : NotFound();
- }
-
- [HttpGet("Alica/{id}")]
- [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)]
- [RequireHttps]
- public IActionResult GetFormationsByAlumniId(string id)
- {
- //var formation = _dataServices.GetData();
- //var formationSelected = formation.Result.Where(x => x.AlicaId == id).ToList();
- //return formationSelected.Count() == 0 ? NoContent() : Ok(formationSelected);
- return Ok();
- }
-}
\ No newline at end of file
diff --git a/Server/Controller/v1/UsersController.cs b/Server/Controller/v1/UsersController.cs
new file mode 100644
index 0000000..6bc7875
--- /dev/null
+++ b/Server/Controller/v1/UsersController.cs
@@ -0,0 +1,45 @@
+using Microsoft.AspNetCore.Mvc;
+using Server.Dto.Request;
+using Server.Dto.Response;
+using Asp.Versioning;
+using Server.IServices;
+
+namespace Server.Controller.v1;
+
+[ApiController]
+[ApiVersion("1.0")]
+[Route("api/v{version:apiVersion}/[controller]")]
+public class UsersController : ControllerBase
+{
+ private readonly ILogger _logger;
+ private IUsersService _dataServices;
+
+ public UsersController(ILogger logger, IUsersService dataServices)
+ {
+ _logger = logger;
+ _dataServices = dataServices;
+ }
+
+ [HttpGet]
+ [ProducesResponseType(typeof(IEnumerable), StatusCodes.Status200OK)]
+ [ProducesResponseType(StatusCodes.Status204NoContent)]
+ [RequireHttps]
+ public IActionResult GetUsers([FromQuery] int pageIndex = 1, [FromQuery] int pageSize = 5, [FromQuery] bool ascending = true)
+ {
+ var users = _dataServices.GetUsers(pageIndex, pageSize, ascending);
+ return users.Result.TotalCount == 0 ? NoContent() : Ok(users);
+ }
+
+
+
+ [HttpGet("{id}")]
+ [ProducesResponseType(typeof(ResponseUserDto), StatusCodes.Status200OK)]
+ [ProducesResponseType(StatusCodes.Status404NotFound)]
+
+ [RequireHttps]
+ public IActionResult GetAlumniById(string id)
+ {
+ var alumni = _dataServices.GetUserById(id);
+ return alumni.Result == null ? NotFound() : Ok(alumni);
+ }
+}
\ No newline at end of file
diff --git a/Server/Dto/Request/RequestAlumniDto.cs b/Server/Dto/Request/RequestAlumniDto.cs
deleted file mode 100644
index b667698..0000000
--- a/Server/Dto/Request/RequestAlumniDto.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace Server.Dto.Request;
-
-public class RequestAlumniDto
-{
- [EmailAddress(ErrorMessage = "Invalid Email")]
- [Required(ErrorMessage = "Email is required")]
- public string Email { get; set; }
-
- [Required(ErrorMessage = "Password is required")]
- public string Password { get; set; }
-
- [Required(ErrorMessage = "EntryYear is required")]
- public string EntryYear { get; set; }
-
- [Required(ErrorMessage = "FirstName is required")]
- public string FirstName { get; set; }
-
- [Required(ErrorMessage = "LastName is required")]
- public string LastName { get; set; }
-
- public string? LinkedinUrl { get; set; }
-
- public string? GithubUrl { get; set; }
-
- public string? PortfolioUrl { get; set; }
-
- public string? ImageUrl { get; set; }
-}
\ No newline at end of file
diff --git a/Server/Dto/Request/RequestEventDto.cs b/Server/Dto/Request/RequestEventDto.cs
deleted file mode 100644
index b2b2e4e..0000000
--- a/Server/Dto/Request/RequestEventDto.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace Server.Dto.Request;
-
-public class RequestEventDto
-{
- [Required(ErrorMessage = "AlumniId is required")]
- public string AlumniId { get; set; }
-
- [Required(ErrorMessage = "Title is required")]
- public string Title { get; set; }
-
- [Required(ErrorMessage = "Description is required")]
- public string Description { get; set; }
-
- [Required(ErrorMessage = "Date is required")]
- public DateTime Date { get; set; }
-
- [Required(ErrorMessage = "NumberOfParticipants is required")]
- public int nbMaxRegistrations { get; set; }
-
- public string? ImageUrl { get; set; }
-}
\ No newline at end of file
diff --git a/Server/Dto/Request/RequestExperienceDto.cs b/Server/Dto/Request/RequestExperienceDto.cs
deleted file mode 100644
index 63cfc26..0000000
--- a/Server/Dto/Request/RequestExperienceDto.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace Server.Dto.Request;
-
-public class RequestExperienceDto
-{
- [Required(ErrorMessage = "AlumniId is required")]
- public string AlumniId { get; set; }
-
- [Required(ErrorMessage = "Title of post is required")]
- public string Title { get; set; }
-
- [Required(ErrorMessage = "StartingDate is required")]
- public DateTime StartingDate { get; set; }
-
- public DateTime? EndingDate { get; set; }
-
- [Required(ErrorMessage = "Company's name is required")]
- public string CompanyName { get; set; }
-
- [Required(ErrorMessage = "CurrentFormation is required")]
- public bool CurrentJob { get; set; }
-}
\ No newline at end of file
diff --git a/Server/Dto/Request/RequestFormationDto.cs b/Server/Dto/Request/RequestFormationDto.cs
deleted file mode 100644
index cca9a2f..0000000
--- a/Server/Dto/Request/RequestFormationDto.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using System.ComponentModel.DataAnnotations;
-
-namespace Server.Dto.Request;
-
-public class RequestFormationDto
-{
- [Required(ErrorMessage = "AlumniId is required")]
- public string AlumniId { get; set; }
-
- [Required(ErrorMessage = "Name of formation is required")]
- public string Name { get; set; }
-
- [Required(ErrorMessage = "StartingDate is required")]
- public DateTime StartingDate { get; set; }
-
- public DateTime? EndingDate { get; set; }
-
- [Required(ErrorMessage = "School's name is required")]
- public string SchoolName { get; set; }
-
- [Required(ErrorMessage = "CurrentFormation is required")]
- public bool CurrentFormation { get; set; }
-}
\ No newline at end of file
diff --git a/Server/Dto/Request/RequestUserDto.cs b/Server/Dto/Request/RequestUserDto.cs
new file mode 100644
index 0000000..9ab798b
--- /dev/null
+++ b/Server/Dto/Request/RequestUserDto.cs
@@ -0,0 +1,9 @@
+using System.ComponentModel.DataAnnotations;
+
+namespace Server.Dto.Request;
+
+public class RequestUserDto
+{
+ [Required(ErrorMessage = "FirstName is required")]
+ public string Name { get; set; }
+}
\ No newline at end of file
diff --git a/Server/Dto/Response/ResponseAlumniDto.cs b/Server/Dto/Response/ResponseAlumniDto.cs
deleted file mode 100644
index 910d447..0000000
--- a/Server/Dto/Response/ResponseAlumniDto.cs
+++ /dev/null
@@ -1,19 +0,0 @@
-using Shared.Enums;
-
-namespace Server.Dto.Response;
-
-public class ResponseAlumniDto
-{
- public string Id { get; set; }
- public string Email { get; set; }
- public ERole ERole { get; set; }
- public string EntryYear { get; set; }
- public string FirstName { get; set; }
- public string LastName { get; set; }
- public string? LinkedinUrl { get; set; }
- public string? GithubUrl { get; set; }
- public string? PortfolioUrl { get; set; }
- public string? ImageUrl { get; set; }
- public IEnumerable Experiences { get; set; } = new List();
- public IEnumerable Formations { get; set; } = new List();
-}
\ No newline at end of file
diff --git a/Server/Dto/Response/ResponseEventDto.cs b/Server/Dto/Response/ResponseEventDto.cs
deleted file mode 100644
index 9e64891..0000000
--- a/Server/Dto/Response/ResponseEventDto.cs
+++ /dev/null
@@ -1,13 +0,0 @@
-namespace Server.Dto.Response;
-
-public class ResponseEventDto
-{
- public string Id { get; set; }
- public string? AlumniId { get; set; }
- public string Title { get; set; }
- public string? ImageUrl { get; set; }
- public string Description { get; set; }
- public DateTime Date { get; set; }
- public int nbMaxRegistrations { get; set; }
- public int nbRegistrations { get; set; }
-}
\ No newline at end of file
diff --git a/Server/Dto/Response/ResponseExperienceDto.cs b/Server/Dto/Response/ResponseExperienceDto.cs
deleted file mode 100644
index 0da01f0..0000000
--- a/Server/Dto/Response/ResponseExperienceDto.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-namespace Server.Dto.Response;
-
-public class ResponseExperienceDto
-{
- public string Id { get; set; }
- public string? AlumniId { get; set; }
- public string Title { get; set; }
- public DateTime StartingDate { get; set; }
- public DateTime? EndingDate { get; set; }
- public string CompanyName { get; set; }
- public bool CurrentJob { get; set; }
-}
\ No newline at end of file
diff --git a/Server/Dto/Response/ResponseFormationDto.cs b/Server/Dto/Response/ResponseFormationDto.cs
deleted file mode 100644
index 1f9f4b5..0000000
--- a/Server/Dto/Response/ResponseFormationDto.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-namespace Server.Dto.Response;
-
-public class ResponseFormationDto
-{
- public string Id { get; set; }
- public string? AlumniId { get; set; }
- public string Name { get; set; }
- public DateTime StartingDate { get; set; }
- public DateTime? EndingDate { get; set; }
- public string SchoolName { get; set; }
- public bool CurrentFormation { get; set; }
-}
\ No newline at end of file
diff --git a/Server/Dto/Response/ResponseRestrictedAlumniDto.cs b/Server/Dto/Response/ResponseRestrictedAlumniDto.cs
deleted file mode 100644
index 86dff93..0000000
--- a/Server/Dto/Response/ResponseRestrictedAlumniDto.cs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace Server.Dto.Response;
-
-public class ResponseRestrictedAlumniDto
-{
- public string Id { get; set; }
- public string FirstName { get; set; }
- public string LastName { get; set; }
- public string? LinkedinUrl { get; set; }
- public string? ImageUrl { get; set; }
-}
\ No newline at end of file
diff --git a/Server/Dto/Response/ResponseUserDto.cs b/Server/Dto/Response/ResponseUserDto.cs
new file mode 100644
index 0000000..49a5695
--- /dev/null
+++ b/Server/Dto/Response/ResponseUserDto.cs
@@ -0,0 +1,15 @@
+namespace Server.Dto.Response;
+
+public class ResponseUserDto
+{
+ public string Id { get; set; }
+ public string Name { get; set; }
+ public int Age { get; set; }
+ public float Height { get; set; }
+ public float Weight { get; set; }
+ public bool Sexe { get; set; }
+ public string? Logo { get; set; }
+ public int NbSessionPerWeek { get; set; }
+ public string? EGoal { get; set; }
+ public string? ESleepLevel { get; set; }
+}
\ No newline at end of file
diff --git a/Server/IServices/IAlumnisService.cs b/Server/IServices/IAlumnisService.cs
deleted file mode 100644
index 89f2dd7..0000000
--- a/Server/IServices/IAlumnisService.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using Server.Dto.Request;
-using Server.Dto.Response;
-using Shared.Criteria;
-
-namespace Server.IServices;
-
-public interface IAlumnisService
-{
- Task<(long Count, IEnumerable Alumnis)> GetAlumnisRestricted(string? lastname, int page, int size, AlumniOrderCriteria orderCriteria = AlumniOrderCriteria.None, bool ascending = true);
- Task GetAlumniRestrictedById(string id);
- Task GetAlumniById(string id);
- Task<(long Count, IEnumerable Alumnis)> GetAlumnis
- (string? lastname, int page, int size, AlumniOrderCriteria orderCriteria = AlumniOrderCriteria.None,
- bool ascending = true);
-
- Task CreateAlumni(RequestAlumniDto alumni);
-}
\ No newline at end of file
diff --git a/Server/IServices/IEventsService.cs b/Server/IServices/IEventsService.cs
deleted file mode 100644
index 0d3a4b1..0000000
--- a/Server/IServices/IEventsService.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using Server.Dto.Request;
-using Server.Dto.Response;
-using Shared.Criteria;
-
-namespace Server.IServices;
-
-public interface IEventsService
-{
- Task GetEventById(string id);
-
- Task<(long Count, IEnumerable Events)> GetEvents
- (string? title, int page, int size, EventOrderCriteria orderCriteria = EventOrderCriteria.Date,
- bool ascending = true);
-
- Task CreateEvent(RequestEventDto evt);
- Task UpdateEvent(string id, RequestEventDto evt);
- Task DeleteEvent(string id);
-}
diff --git a/Server/IServices/IExperiencesService.cs b/Server/IServices/IExperiencesService.cs
deleted file mode 100644
index 2ae3f4f..0000000
--- a/Server/IServices/IExperiencesService.cs
+++ /dev/null
@@ -1,18 +0,0 @@
-using Server.Dto.Request;
-using Server.Dto.Response;
-using Shared.Criteria;
-
-namespace Server.IServices;
-
-public interface IExperiencesService
-{
- Task GetExperienceById(string id);
-
- Task<(long Count, IEnumerable Experiences)> GetExperiences
- (string? title, int page, int size,
- ExperienceOrderCriteria orderCriteria = ExperienceOrderCriteria.EndDate, bool ascending = true);
-
- Task CreateExperience(RequestExperienceDto experience);
- Task UpdateExperience(string id, RequestExperienceDto experience);
- Task DeleteExperience(string id);
-}
\ No newline at end of file
diff --git a/Server/IServices/IFormationsService.cs b/Server/IServices/IFormationsService.cs
deleted file mode 100644
index 48bb8b0..0000000
--- a/Server/IServices/IFormationsService.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using Server.Dto.Request;
-using Server.Dto.Response;
-using Shared.Criteria;
-
-namespace Server.IServices;
-
-public interface IFormationsService
-{
- Task GetFormationById(string id);
-
- Task<(long Count, IEnumerable Formations)> GetFormations
- (string? name, int page, int size, FormationOrderCriteria orderCriteria, bool ascending = true);
-
- Task CreateFormation(RequestFormationDto formation);
- Task UpdateFormation(string id, RequestFormationDto formation);
- Task DeleteFormation(string id);
-}
\ No newline at end of file
diff --git a/Server/IServices/IUsersService.cs b/Server/IServices/IUsersService.cs
new file mode 100644
index 0000000..c451027
--- /dev/null
+++ b/Server/IServices/IUsersService.cs
@@ -0,0 +1,12 @@
+using Infrastructure.Entities;
+using Server.Dto.Request;
+using Server.Dto.Response;
+using Shared;
+
+namespace Server.IServices;
+
+public interface IUsersService
+{
+ Task GetUserById(string id);
+ Task> GetUsers(int page, int size, bool ascending = true);
+}
\ No newline at end of file
diff --git a/Server/Mappers/AlumnisMappers.cs b/Server/Mappers/AlumnisMappers.cs
deleted file mode 100644
index b92c073..0000000
--- a/Server/Mappers/AlumnisMappers.cs
+++ /dev/null
@@ -1,64 +0,0 @@
-using Infrastructure.Entities;
-using Server.Dto.Request;
-using Server.Dto.Response;
-using Shared.Enums;
-
-namespace Server.Mappers;
-
-public static class AlumnisMappers
-{
- public static ResponseAlumniDto ToDto(this User alumni)
- {
- return new ResponseAlumniDto
- {
- Id = alumni.Id,
- Email = alumni.Email,
- ERole = alumni.Role.ToERole(),
- EntryYear = alumni.EntryYear,
- FirstName = alumni.FirstName,
- LastName = alumni.LastName,
- LinkedinUrl = alumni.Linkedin,
- GithubUrl = alumni.Github,
- PortfolioUrl = alumni.WebSite,
- Experiences = alumni.Experiences.Select(e => e.ToDto()),
- Formations = alumni.Formations.Select(f => f.ToDto())
- };
- }
-
- public static ResponseRestrictedAlumniDto ToDtoRestricted(this User alumni)
- {
- return new ResponseRestrictedAlumniDto
- {
- Id = alumni.Id,
- FirstName = alumni.FirstName,
- LastName = alumni.LastName,
- LinkedinUrl = alumni.Linkedin
- };
- }
-
- public static User ToEntity(this RequestAlumniDto alumni)
- {
- return new User
- {
- Email = alumni.Email,
- Password = alumni.Password,
- EntryYear = alumni.EntryYear,
- FirstName = alumni.FirstName,
- LastName = alumni.LastName,
- Linkedin = alumni.LinkedinUrl,
- Github = alumni.GithubUrl,
- WebSite = alumni.PortfolioUrl,
- Role = "USER"
- };
- }
-
- public static ERole ToERole(this string role)
- {
- return role switch
- {
- "ADMIN" => ERole.ADMIN,
- "MODERATOR" => ERole.MODERATOR,
- "USER" => ERole.USER
- };
- }
-}
\ No newline at end of file
diff --git a/Server/Mappers/EventsMappers.cs b/Server/Mappers/EventsMappers.cs
deleted file mode 100644
index eb9fa6d..0000000
--- a/Server/Mappers/EventsMappers.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using Infrastructure.Entities;
-using Server.Dto.Request;
-using Server.Dto.Response;
-
-namespace Server.Mappers;
-
-public static class EventsMappers
-{
- public static ResponseEventDto ToDto(this EventEntity evt)
- {
- return new ResponseEventDto
- {
- Id = evt.Id,
- Title = evt.Title,
- Description = evt.Description,
- Date = evt.Date,
- nbMaxRegistrations = evt.nbPlaces,
- nbRegistrations = evt.Participants.Count
- };
- }
-
- public static EventEntity ToEntity(this RequestEventDto evt)
- {
- return new EventEntity
- {
- Title = evt.Title,
- Description = evt.Description,
- Date = evt.Date,
- nbPlaces = evt.nbMaxRegistrations
- };
- }
-}
\ No newline at end of file
diff --git a/Server/Mappers/ExperiencesMappers.cs b/Server/Mappers/ExperiencesMappers.cs
deleted file mode 100644
index 7e3cc49..0000000
--- a/Server/Mappers/ExperiencesMappers.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using Infrastructure.Entities;
-using Server.Dto.Request;
-using Server.Dto.Response;
-
-namespace Server.Mappers
-{
- public static class ExperiencesMappers
- {
- public static ResponseExperienceDto ToDto(this ExperienceEntity exp)
- {
- return new ResponseExperienceDto
- {
- Id = exp.Id,
- AlumniId = exp.AlumniId,
- Title= exp.Title,
- StartingDate = exp.StartDate,
- EndingDate = exp.EndDate,
- CompanyName = exp.CompanyName,
- CurrentJob = exp.IsCurrent,
- };
- }
-
- public static ExperienceEntity ToEntity(this RequestExperienceDto exp)
- {
- return new ExperienceEntity
- {
- AlumniId = exp.AlumniId,
- Title = exp.Title,
- StartDate = exp.StartingDate,
- EndDate = exp.EndingDate,
- CompanyName = exp.CompanyName,
- IsCurrent = exp.CurrentJob,
- };
- }
- }
-}
diff --git a/Server/Mappers/FormationsMappers.cs b/Server/Mappers/FormationsMappers.cs
deleted file mode 100644
index 660722a..0000000
--- a/Server/Mappers/FormationsMappers.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-using Infrastructure.Entities;
-using Server.Dto.Request;
-using Server.Dto.Response;
-
-namespace Server.Mappers
-{
- public static class FormationsMappers
- {
- public static ResponseFormationDto ToDto(this FormationEntity form)
- {
- return new ResponseFormationDto
- {
- Id = form.Id,
- AlumniId = form.AlumniId,
- Name = form.Name,
- StartingDate = form.StartDate,
- EndingDate = form.EndDate,
- SchoolName = form.SchoolName,
- CurrentFormation = form.IsCurrent,
- };
- }
-
- public static FormationEntity ToEntity(this RequestFormationDto form)
- {
- return new FormationEntity
- {
- SchoolName = form.SchoolName,
- Name = form.Name,
- StartDate = form.StartingDate,
- EndDate = form.EndingDate,
- IsCurrent = form.CurrentFormation
- };
- }
- }
-}
diff --git a/Server/Mappers/UsersMappers.cs b/Server/Mappers/UsersMappers.cs
new file mode 100644
index 0000000..cfd7c73
--- /dev/null
+++ b/Server/Mappers/UsersMappers.cs
@@ -0,0 +1,36 @@
+using Infrastructure.Entities;
+using Server.Dto.Request;
+using Server.Dto.Response;
+using AutoMapper;
+
+namespace Server.Mappers;
+
+public class UsersMappers : Profile
+{
+ public UsersMappers()
+ {
+ _ = CreateMap()
+ .ForMember(dest => dest.Id, opt => opt.MapFrom(src => src.Id))
+ .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name))
+ .ForMember(dest => dest.Age, opt => opt.MapFrom(src => src.Age))
+ .ForMember(dest => dest.Height, opt => opt.MapFrom(src => src.Height))
+ .ForMember(dest => dest.Weight, opt => opt.MapFrom(src => src.Weight))
+ .ForMember(dest => dest.Sexe, opt => opt.MapFrom(src => src.Sexe))
+ .ForMember(dest => dest.Logo, opt => opt.MapFrom(src => src.Logo))
+ .ForMember(dest => dest.NbSessionPerWeek, opt => opt.MapFrom(src => src.NbSessionPerWeek))
+ .ForMember(dest => dest.EGoal, opt => opt.MapFrom(src => src.EGoal))
+ .ForMember(dest => dest.ESleepLevel, opt => opt.MapFrom(src => src.ESleepLevel));
+
+ _ = CreateMap()
+ .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name));
+ //.ForMember(dest => dest.Age, opt => opt.MapFrom(src => src.Age))
+ //.ForMember(dest => dest.Height, opt => opt.MapFrom(src => src.Height))
+ //.ForMember(dest => dest.Weight, opt => opt.MapFrom(src => src.Weight))
+ //.ForMember(dest => dest.Sexe, opt => opt.MapFrom(src => src.Sexe))
+ //.ForMember(dest => dest.Logo, opt => opt.MapFrom(src => src.Logo))
+ //.ForMember(dest => dest.NbSessionPerWeek, opt => opt.MapFrom(src => src.NbSessionPerWeek))
+ //.ForMember(dest => dest.EGoal, opt => opt.MapFrom(src => src.EGoal))
+ //.ForMember(dest => dest.ESleepLevel, opt => opt.MapFrom(src => src.ESleepLevel));
+ }
+
+}
\ No newline at end of file
diff --git a/Server/Program.cs b/Server/Program.cs
index f54e2ef..52fa197 100644
--- a/Server/Program.cs
+++ b/Server/Program.cs
@@ -4,53 +4,57 @@ using Server.IServices;
using Asp.Versioning;
using Server.Services;
using Microsoft.OpenApi.Models;
+using Infrastructure.Repositories;
+using AutoMapper;
+using Server.Mappers;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
-
-builder.Services.AddScoped();
-builder.Services.AddScoped();
-builder.Services.AddScoped();
-builder.Services.AddScoped();
+builder.Services.AddScoped();
+builder.Services.AddScoped(); // Register UserRepository
builder.Services.AddControllers();
-builder.Services.AddDbContext(options =>
- options.UseSqlite("Data Source=FirstTest.db"));
+builder.Services.AddDbContext(options =>
+ options.UseSqlite("Data Source=FirstTest.db"));
+
+// Register AutoMapper
+builder.Services.AddAutoMapper(typeof(UsersMappers));
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
-//allow us to have lowercase urls (/alica instead of /Alica)
-builder.Services.AddRouting(options => options.LowercaseUrls = true);
+builder.Services.AddSwaggerGen(c =>
+ c.SwaggerDoc("v1", new OpenApiInfo { Title = "Optifit API", Version = "v1" })
+);
-// Add API's versionning
+// Add API's versioning
builder.Services.AddApiVersioning(options =>
-{
- options.DefaultApiVersion = new ApiVersion(1, 0);
- options.AssumeDefaultVersionWhenUnspecified = true;
- options.ReportApiVersions = true;
-})
-.AddApiExplorer(options =>
-{
- options.GroupNameFormat = "'v'VVV";
- options.SubstituteApiVersionInUrl = true;
-});
+ {
+ options.DefaultApiVersion = new ApiVersion(1, 0);
+ options.AssumeDefaultVersionWhenUnspecified = true;
+ options.ReportApiVersions = true;
+ })
+ .AddApiExplorer(options =>
+ {
+ options.GroupNameFormat = "'v'VVV";
+ options.SubstituteApiVersionInUrl = true;
+ });
+
+builder.Services.AddRouting(options => options.LowercaseUrls = true);
-builder.Services.AddSwaggerGen(c =>
- c.SwaggerDoc("v1", new OpenApiInfo { Title = "Alica API First Version", Version = "v1" })
-);
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
- app.UseSwaggerUI();
+ app.UseSwaggerUI(c =>
+ {
+ c.SwaggerEndpoint("/swagger/v1/swagger.json", "Optifit API v1");
+ c.RoutePrefix = string.Empty; // Serve Swagger UI at the app's root
+ });
}
app.UseHttpsRedirection();
-
-// app.UseAuthorization();
-
+app.UseAuthorization();
app.MapControllers();
-
app.Run();
\ No newline at end of file
diff --git a/Server/Properties/launchSettings.json b/Server/Properties/launchSettings.json
index e8afd30..c959d0a 100644
--- a/Server/Properties/launchSettings.json
+++ b/Server/Properties/launchSettings.json
@@ -1,13 +1,4 @@
{
- "$schema": "http://json.schemastore.org/launchsettings.json",
- "iisSettings": {
- "windowsAuthentication": false,
- "anonymousAuthentication": true,
- "iisExpress": {
- "applicationUrl": "http://localhost:8364",
- "sslPort": 44312
- }
- },
"profiles": {
"http": {
"commandName": "Project",
@@ -38,4 +29,4 @@
}
}
}
-}
+}
\ No newline at end of file
diff --git a/Server/Server.csproj b/Server/Server.csproj
index 926b88a..676f13f 100644
--- a/Server/Server.csproj
+++ b/Server/Server.csproj
@@ -10,6 +10,7 @@
+
diff --git a/Server/Server.csproj.user b/Server/Server.csproj.user
deleted file mode 100644
index 2c8f5c1..0000000
--- a/Server/Server.csproj.user
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
- https
- ApiControllerEmptyScaffolder
- root/Common/Api
-
-
\ No newline at end of file
diff --git a/Server/Services/AlumniService.cs b/Server/Services/AlumniService.cs
deleted file mode 100644
index c071b96..0000000
--- a/Server/Services/AlumniService.cs
+++ /dev/null
@@ -1,83 +0,0 @@
-using Infrastructure;
-using Microsoft.EntityFrameworkCore;
-using Server.Dto.Request;
-using Server.Dto.Response;
-using Server.IServices;
-using Server.Mappers;
-using Shared.Criteria;
-
-namespace Server.Services;
-
-public class AlumniService(AlumniDbContext context) : IAlumnisService
-{
- public Task<(long Count, IEnumerable Alumnis)> GetAlumnisRestricted(string? lastname, int page, int size,
- AlumniOrderCriteria orderCriteria = AlumniOrderCriteria.None, bool ascending = true)
- {
- var query = context.Alumni.Skip((page-1) * size).Take(size);
- if (lastname != null)
- {
- query = context.Alumni.Where(e => e.LastName.Contains(lastname)).Skip((page-1) * size).Take(size);
- }
- switch (orderCriteria)
- {
- case AlumniOrderCriteria.Name:
- query = ascending ? query.OrderBy(e => e.LastName) : query.OrderByDescending(e => e.LastName);
- break;
- case AlumniOrderCriteria.None:
- break;
- }
- var count = query.LongCount();
- return Task.FromResult((count, query.AsEnumerable().Select(e => e.ToDtoRestricted())));
- }
-
- public Task GetAlumniRestrictedById(string id)
- {
- var result = context.Alumni.FirstOrDefault(e => e.Id == id);
- return Task.FromResult(result?.ToDtoRestricted());
- }
-
- public Task GetAlumniById(string id)
- {
- var result = context.Alumni
- .Include(a => a.Experiences)
- .Include(a => a.Formations)
- .FirstOrDefault(e => e.Id == id);
- return Task.FromResult(result?.ToDto());
- }
-
- public Task<(long Count, IEnumerable Alumnis)> GetAlumnis(string? lastname, int page, int size,
- AlumniOrderCriteria orderCriteria = AlumniOrderCriteria.None,
- bool ascending = true)
- {
- var query = context.Alumni
- .Include(a => a.Experiences)
- .Include(a => a.Formations)
- .Skip((page-1) * size)
- .Take(size);
- if (lastname != null)
- {
- query = context.Alumni.Where(e => e.LastName.Contains(lastname))
- .Include(a => a.Experiences)
- .Include(a => a.Formations)
- .Skip((page-1) * size)
- .Take(size);
- }
- switch (orderCriteria)
- {
- case AlumniOrderCriteria.Name:
- query = ascending ? query.OrderBy(e => e.LastName) : query.OrderByDescending(e => e.LastName);
- break;
- case AlumniOrderCriteria.None:
- break;
- }
- var count = query.LongCount();
- return Task.FromResult((count, query.AsEnumerable().Select(e => e.ToDto())));
- }
-
- public Task CreateAlumni(RequestAlumniDto alumni)
- {
- var result = context.Alumni.AddAsync(alumni.ToEntity());
- context.SaveChangesAsync();
- return Task.FromResult(result.Result?.Entity.ToDto());
- }
-}
\ No newline at end of file
diff --git a/Server/Services/EventServices.cs b/Server/Services/EventServices.cs
deleted file mode 100644
index 570959a..0000000
--- a/Server/Services/EventServices.cs
+++ /dev/null
@@ -1,73 +0,0 @@
-using Infrastructure;
-using Server.Dto.Request;
-using Server.Dto.Response;
-using Server.IServices;
-using Server.Mappers;
-using Shared.Criteria;
-
-namespace Server.Services;
-
-///
-/// Opération CRUD des évènements
-///
-/// TODO : manque subscribe subscribers unsubscribe et récupérer les inscription d'un alumni
-public class EventServices(AlumniDbContext context) : IEventsService
-{
- public Task GetEventById(string id)
- {
- var result = context.Events.FirstOrDefault(e => e.Id == id);
- return Task.FromResult(result?.ToDto());
- }
-
- public Task<(long Count, IEnumerable Events)> GetEvents(string? title, int page, int size,
- EventOrderCriteria orderCriteria = EventOrderCriteria.Date, bool ascending = true)
- {
- var query = context.Events.Skip((page-1) * size).Take(size);
- if (title != null)
- {
- query = context.Events.Where(e => e.Title.Contains(title)).Skip((page-1) * size).Take(size);
- }
- switch (orderCriteria)
- {
- case EventOrderCriteria.Date:
- query = ascending ? query.OrderBy(e => e.Date) : query.OrderByDescending(e => e.Date);
- break;
- case EventOrderCriteria.Title:
- query = ascending ? query.OrderBy(e => e.Title) : query.OrderByDescending(e => e.Title);
- break;
- case EventOrderCriteria.NbPlaces:
- query = ascending ? query.OrderBy(e => e.nbPlaces) : query.OrderByDescending(e => e.nbPlaces);
- break;
- }
- var count = query.LongCount();
- return Task.FromResult((count, query.AsEnumerable().Select(e => e.ToDto())));
- }
-
- public Task CreateEvent(RequestEventDto evt)
- {
- var result = context.Events.AddAsync(evt.ToEntity());
- context.SaveChangesAsync();
- return Task.FromResult(result.Result.Entity.ToDto());
- }
-
- public Task UpdateEvent(string id, RequestEventDto evt)
- {
- var result = context.Events.FirstOrDefault(e => e.Id == id);
- if (result == null) return Task.FromResult(null);
- result.Title = evt.Title;
- result.Description = evt.Description;
- result.Date = evt.Date;
- result.nbPlaces = evt.nbMaxRegistrations;
- context.SaveChangesAsync();
- return Task.FromResult(result.ToDto());
- }
-
- public Task DeleteEvent(string id)
- {
- var result = context.Events.FirstOrDefault(e => e.Id == id);
- if (result == null) return Task.FromResult(false);
- context.Events.Remove(result);
- context.SaveChangesAsync();
- return Task.FromResult(true);
- }
-}
\ No newline at end of file
diff --git a/Server/Services/ExperienceServices.cs b/Server/Services/ExperienceServices.cs
deleted file mode 100644
index 5ef6e65..0000000
--- a/Server/Services/ExperienceServices.cs
+++ /dev/null
@@ -1,82 +0,0 @@
-using Infrastructure;
-using Server.Dto.Request;
-using Server.Dto.Response;
-using Server.IServices;
-using Shared.Criteria;
-using Server.Mappers;
-
-namespace Server.Services;
-
-public class ExperienceServices(AlumniDbContext context) : IExperiencesService
-{
- public Task