Add users routes 🧑‍💻🧑‍💻
continuous-integration/drone/push Build is passing Details

pull/3/head
Louis LABORIE 4 months ago
parent 2b7f8881b9
commit 6de74044bf

@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Mvc;
using Server.Dto.Request; using Server.Dto.Request;
using Server.Dto.Response; using Server.Dto.Response;
using Asp.Versioning; using Asp.Versioning;
using Microsoft.AspNetCore.Authorization;
using Server.IServices; using Server.IServices;
namespace Server.Controller.v1; namespace Server.Controller.v1;
@ -39,4 +40,39 @@ public class UsersController : ControllerBase
var alumni = _dataServices.GetUserById(id); var alumni = _dataServices.GetUserById(id);
return alumni.Result == null ? NotFound() : Ok(alumni); return alumni.Result == null ? NotFound() : Ok(alumni);
} }
[HttpPost]
[ProducesResponseType(typeof(ResponseUserDto), StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[AllowAnonymous]
public async Task<IActionResult> CreateUser([FromBody] RequestUserDto request)
{
if (!ModelState.IsValid) return BadRequest(ModelState);
var createdUser = await _dataServices.CreateUser(request);
return CreatedAtAction(nameof(GetAlumniById), new { id = createdUser.Id }, createdUser);
}
[HttpPut("{id}")]
[ProducesResponseType(typeof(ResponseUserDto), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[AllowAnonymous]
public async Task<IActionResult> UpdateUser(string id, [FromBody] RequestUserDto request)
{
if (!ModelState.IsValid) return BadRequest(ModelState);
var updatedProgram = await _dataServices.UpdateUser(id, request);
return updatedProgram == null ? NotFound() : Ok(updatedProgram);
}
[HttpDelete("{id}")]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
[AllowAnonymous]
public async Task<IActionResult> DeleteUser(string id)
{
var deleted = await _dataServices.DeleteUser(id);
return deleted ? NoContent() : NotFound();
}
} }

@ -9,4 +9,8 @@ public interface IUsersService
{ {
Task<ResponseUserDto?> GetUserById(string id); Task<ResponseUserDto?> GetUserById(string id);
Task<PaginatedResult<ResponseUserDto>> GetUsers(int page, int size, bool ascending = true); Task<PaginatedResult<ResponseUserDto>> GetUsers(int page, int size, bool ascending = true);
Task<ResponseUserDto?> CreateUser(RequestUserDto request);
Task<ResponseUserDto?> UpdateUser(string id, RequestUserDto request);
Task<bool> DeleteUser(string id);
} }

@ -3,6 +3,9 @@ using Infrastructure.Repositories;
using Server.Dto.Response; using Server.Dto.Response;
using Server.IServices; using Server.IServices;
using AutoMapper; using AutoMapper;
using Azure;
using Infrastructure.Entities;
using Server.Dto.Request;
using Shared; using Shared;
namespace Server.Services; namespace Server.Services;
@ -31,8 +34,39 @@ public class UsersService : IUsersService
return userDto; return userDto;
} }
public Task<PaginatedResult<ResponseUserDto>> GetUsers(int page, int size, bool ascending = true) public async Task<PaginatedResult<ResponseUserDto>> GetUsers(int page, int size, bool ascending = true)
{ {
throw new NotImplementedException(); var users = await _userRepository.GetPaginatedListAsync(page - 1, size, null, null);
var result = _mapper.Map<PaginatedResult<ResponseUserDto>>(users);
return result;
}
public async Task<ResponseUserDto?> CreateUser(RequestUserDto request)
{
var user = _mapper.Map<User>(request);
await _userRepository.InsertAsync(user);
await _context.SaveChangesAsync();
return _mapper.Map<ResponseUserDto>(user);
}
public async Task<ResponseUserDto?> UpdateUser(string id,RequestUserDto request)
{
var user = await _userRepository.GetByIdAsync(id);
if (user == null) return null;
_mapper.Map(request, user);
_userRepository.Update(user);
await _context.SaveChangesAsync();
return _mapper.Map<ResponseUserDto>(user);
}
public async Task<bool> DeleteUser(string id)
{
var user = await _userRepository.GetByIdAsync(id);
if (user == null) return false;
_userRepository.Delete(id);
await _context.SaveChangesAsync();
return true;
} }
} }

@ -0,0 +1,8 @@
namespace Shared;
public enum ECategory
{
WARM_UP,
TRAINING,
STRETCHING
}

@ -0,0 +1,9 @@
namespace Shared;
public enum ETarget
{
LEG,
ARM,
CARDIO,
HAMSTRING
}
Loading…
Cancel
Save