diff --git a/Server/Controller/v1/UsersController.cs b/Server/Controller/v1/UsersController.cs index 4209c78..f62e714 100644 --- a/Server/Controller/v1/UsersController.cs +++ b/Server/Controller/v1/UsersController.cs @@ -2,6 +2,7 @@ using Microsoft.AspNetCore.Mvc; using Server.Dto.Request; using Server.Dto.Response; using Asp.Versioning; +using Microsoft.AspNetCore.Authorization; using Server.IServices; namespace Server.Controller.v1; @@ -39,4 +40,39 @@ public class UsersController : ControllerBase var alumni = _dataServices.GetUserById(id); return alumni.Result == null ? NotFound() : Ok(alumni); } + + [HttpPost] + [ProducesResponseType(typeof(ResponseUserDto), StatusCodes.Status201Created)] + [ProducesResponseType(StatusCodes.Status400BadRequest)] + [AllowAnonymous] + public async Task 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 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 DeleteUser(string id) + { + var deleted = await _dataServices.DeleteUser(id); + return deleted ? NoContent() : NotFound(); + } } \ No newline at end of file diff --git a/Server/IServices/IUsersService.cs b/Server/IServices/IUsersService.cs index c451027..831e88f 100644 --- a/Server/IServices/IUsersService.cs +++ b/Server/IServices/IUsersService.cs @@ -9,4 +9,8 @@ public interface IUsersService { Task GetUserById(string id); Task> GetUsers(int page, int size, bool ascending = true); + Task CreateUser(RequestUserDto request); + Task UpdateUser(string id, RequestUserDto request); + Task DeleteUser(string id); + } \ No newline at end of file diff --git a/Server/Services/UsersService.cs b/Server/Services/UsersService.cs index 84e3105..60d6c66 100644 --- a/Server/Services/UsersService.cs +++ b/Server/Services/UsersService.cs @@ -3,6 +3,9 @@ using Infrastructure.Repositories; using Server.Dto.Response; using Server.IServices; using AutoMapper; +using Azure; +using Infrastructure.Entities; +using Server.Dto.Request; using Shared; namespace Server.Services; @@ -31,8 +34,39 @@ public class UsersService : IUsersService return userDto; } - public Task> GetUsers(int page, int size, bool ascending = true) + public async Task> 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>(users); + return result; + } + + public async Task CreateUser(RequestUserDto request) + { + var user = _mapper.Map(request); + await _userRepository.InsertAsync(user); + await _context.SaveChangesAsync(); + return _mapper.Map(user); + } + + public async Task 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(user); + } + + public async Task DeleteUser(string id) + { + var user = await _userRepository.GetByIdAsync(id); + if (user == null) return false; + + _userRepository.Delete(id); + await _context.SaveChangesAsync(); + return true; } } \ No newline at end of file diff --git a/Shared/ECategory.cs b/Shared/ECategory.cs new file mode 100644 index 0000000..11f823a --- /dev/null +++ b/Shared/ECategory.cs @@ -0,0 +1,8 @@ +namespace Shared; + +public enum ECategory +{ + WARM_UP, + TRAINING, + STRETCHING +} \ No newline at end of file diff --git a/Shared/ETarget.cs b/Shared/ETarget.cs new file mode 100644 index 0000000..8e03c04 --- /dev/null +++ b/Shared/ETarget.cs @@ -0,0 +1,9 @@ +namespace Shared; + +public enum ETarget +{ + LEG, + ARM, + CARDIO, + HAMSTRING +} \ No newline at end of file