Skip to content

Commit f2725a1

Browse files
Merge pull request #4 from chenxidev1129/2-add-user-curd-endpoints
add user endpoints
2 parents 88abd95 + 9ade2f3 commit f2725a1

File tree

9 files changed

+155
-12
lines changed

9 files changed

+155
-12
lines changed

taskmaster-api/Controllers/TaskController.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
1-
using Microsoft.AspNetCore.Authorization;
2-
using Microsoft.AspNetCore.Mvc;
1+
using Microsoft.AspNetCore.Mvc;
32
using taskmaster_api.Data.DTOs;
4-
using taskmaster_api.Data.Models;
53
using taskmaster_api.Services.Interface;
64

75
namespace taskmaster_api.Controllers
@@ -18,7 +16,6 @@ public TaskController(ITaskService taskService)
1816
}
1917

2018
[HttpGet("{id}")]
21-
[Authorize]
2219
public IActionResult GetTask(int id)
2320
{
2421
return ToHttpResult<TaskDto>(_taskService.GetTaskById(id));
@@ -31,7 +28,6 @@ public IActionResult CreateTask(TaskDto taskDto)
3128
}
3229

3330
[HttpPut("{id}")]
34-
[Authorize(Roles = UserRoles.Admin)]
3531
public IActionResult UpdateTask(int id, TaskDto taskDto)
3632
{
3733
return ToHttpResult<TaskDto>(_taskService.UpdateTask(id, taskDto));
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
using Microsoft.AspNetCore.Authorization;
2+
using Microsoft.AspNetCore.Mvc;
3+
using taskmaster_api.Data.DTOs;
4+
using taskmaster_api.Data.Models;
5+
using taskmaster_api.Services.Interface;
6+
7+
namespace taskmaster_api.Controllers
8+
{
9+
[Route("api/[controller]")]
10+
[ApiController]
11+
[Authorize(Roles = UserRoles.Admin)]
12+
public class UserController : ApplicationControllerBase
13+
{
14+
private readonly IUserService _userService;
15+
16+
public UserController(IUserService userService)
17+
{
18+
_userService = userService;
19+
}
20+
21+
[HttpGet]
22+
public IActionResult GetAllUsers()
23+
{
24+
return ToHttpResult<List<UserDto>>(_userService.GetAllUsers());
25+
}
26+
27+
[HttpGet("{id}")]
28+
public IActionResult GetUser(string id)
29+
{
30+
return ToHttpResult<UserDto>(_userService.GetUserById(id));
31+
}
32+
33+
[HttpDelete("{id}")]
34+
public IActionResult DeleteUser(string id)
35+
{
36+
return ToHttpResult(_userService.DeleteUser(id));
37+
}
38+
}
39+
}

taskmaster-api/Data/DTOs/UserDto.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,9 @@
22
{
33
public class UserDto
44
{
5+
public string Id { get; set; }
6+
public string Email { get; set; }
7+
public string UserName { get; set; }
8+
59
}
610
}

taskmaster-api/Program.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
builder.Services.AddScoped<ITaskRepository, TaskRepository>();
6363
builder.Services.AddScoped<ITaskService, TaskService>();
6464
builder.Services.AddScoped<IAuthService, AuthService>();
65+
builder.Services.AddScoped<IUserService, UserService>();
6566

6667
var app = builder.Build();
6768

taskmaster-api/Services/AuthService.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
using Microsoft.IdentityModel.Tokens;
88
using System.Text;
99
using taskmaster_api.Data.Models;
10-
using Microsoft.Extensions.Logging;
1110

1211
namespace taskmaster_api.Services
1312
{

taskmaster-api/Services/Interface/ITaskService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ public interface ITaskService
88
{
99
ICoreActionResult<TaskDto> GetTaskById(int id);
1010
ICoreActionResult<List<TaskDto>> GetAllTasks();
11-
ICoreActionResult<TaskDto> CreateTask(TaskDto task);
12-
ICoreActionResult<TaskDto> UpdateTask(int id, TaskDto task);
11+
ICoreActionResult<TaskDto> CreateTask(TaskDto taskDto);
12+
ICoreActionResult<TaskDto> UpdateTask(int id, TaskDto taskDto);
1313
ICoreActionResult DeleteTask(int id);
1414
}
1515
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using taskmaster_api.Data.DTOs.Interface;
2+
using taskmaster_api.Data.DTOs;
3+
4+
namespace taskmaster_api.Services.Interface
5+
{
6+
public interface IUserService
7+
{
8+
ICoreActionResult<UserDto> GetUserById(string id);
9+
ICoreActionResult<List<UserDto>> GetAllUsers();
10+
ICoreActionResult DeleteUser(string id);
11+
}
12+
}

taskmaster-api/Services/TaskService.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
using Microsoft.AspNetCore.Mvc;
2-
using Microsoft.Extensions.Logging;
3-
using taskmaster_api.Data.DTOs;
1+
using taskmaster_api.Data.DTOs;
42
using taskmaster_api.Data.DTOs.Interface;
5-
using taskmaster_api.Data.Entities;
63
using taskmaster_api.Data.Repositories.Interface;
74
using taskmaster_api.Services.Interface;
85

@@ -16,6 +13,7 @@ public class TaskService : ITaskService
1613
public TaskService(ITaskRepository taskRepository, ILogger<TaskService> logger)
1714
{
1815
_taskRepository = taskRepository;
16+
_logger = logger;
1917
}
2018

2119
public ICoreActionResult<TaskDto> GetTaskById(int id)
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
using Microsoft.AspNetCore.Identity;
2+
using taskmaster_api.Data.DTOs;
3+
using taskmaster_api.Data.DTOs.Interface;
4+
using taskmaster_api.Services.Interface;
5+
6+
namespace taskmaster_api.Services
7+
{
8+
public class UserService : IUserService
9+
{
10+
private readonly UserManager<IdentityUser> _userManager;
11+
private readonly ILogger<TaskService> _logger;
12+
13+
public UserService(UserManager<IdentityUser> userManager, ILogger<TaskService> logger)
14+
{
15+
_userManager = userManager;
16+
_logger = logger;
17+
}
18+
19+
public ICoreActionResult DeleteUser(string id)
20+
{
21+
try
22+
{
23+
var user = _userManager.FindByIdAsync(id).Result;
24+
25+
if (user == null)
26+
{
27+
_logger.LogInformation("User not found");
28+
return CoreActionResult.Failure("User not found", "NotFound");
29+
}
30+
31+
var result = _userManager.DeleteAsync(user).Result;
32+
33+
return CoreActionResult.Success();
34+
}
35+
catch (Exception ex)
36+
{
37+
_logger.LogInformation(ex.Message);
38+
return CoreActionResult.Exception(ex);
39+
}
40+
}
41+
42+
public ICoreActionResult<List<UserDto>> GetAllUsers()
43+
{
44+
try
45+
{
46+
List<UserDto> userDtoList = new List<UserDto>();
47+
foreach (var user in _userManager.Users)
48+
{
49+
userDtoList.Add(new UserDto
50+
{
51+
Id = user.Id,
52+
UserName = user.UserName,
53+
Email = user.Email
54+
});
55+
}
56+
57+
return CoreActionResult<List<UserDto>>.Success(userDtoList);
58+
}
59+
catch (Exception ex)
60+
{
61+
_logger.LogInformation(ex.Message);
62+
return CoreActionResult<List<UserDto>>.Exception(ex);
63+
}
64+
}
65+
66+
public ICoreActionResult<UserDto> GetUserById(string id)
67+
{
68+
try
69+
{
70+
var user = _userManager.FindByIdAsync(id).Result;
71+
72+
if (user == null)
73+
{
74+
_logger.LogInformation("User not found");
75+
return CoreActionResult<UserDto>.Failure("User not found", "NotFound");
76+
}
77+
78+
var userDto = new UserDto
79+
{
80+
Id = user.Id,
81+
UserName = user.UserName,
82+
Email = user.Email
83+
};
84+
85+
return CoreActionResult<UserDto>.Success(userDto);
86+
}
87+
catch (Exception ex)
88+
{
89+
_logger.LogInformation(ex.Message);
90+
return CoreActionResult<UserDto>.Exception(ex);
91+
}
92+
}
93+
}
94+
}

0 commit comments

Comments
 (0)