Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 1 addition & 5 deletions taskmaster-api/Controllers/TaskController.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc;
using taskmaster_api.Data.DTOs;
using taskmaster_api.Data.Models;
using taskmaster_api.Services.Interface;

namespace taskmaster_api.Controllers
Expand All @@ -18,7 +16,6 @@ public TaskController(ITaskService taskService)
}

[HttpGet("{id}")]
[Authorize]
public IActionResult GetTask(int id)
{
return ToHttpResult<TaskDto>(_taskService.GetTaskById(id));
Expand All @@ -31,7 +28,6 @@ public IActionResult CreateTask(TaskDto taskDto)
}

[HttpPut("{id}")]
[Authorize(Roles = UserRoles.Admin)]
public IActionResult UpdateTask(int id, TaskDto taskDto)
{
return ToHttpResult<TaskDto>(_taskService.UpdateTask(id, taskDto));
Expand Down
39 changes: 39 additions & 0 deletions taskmaster-api/Controllers/UserController.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using taskmaster_api.Data.DTOs;
using taskmaster_api.Data.Models;
using taskmaster_api.Services.Interface;

namespace taskmaster_api.Controllers
{
[Route("api/[controller]")]
[ApiController]
[Authorize(Roles = UserRoles.Admin)]
public class UserController : ApplicationControllerBase
{
private readonly IUserService _userService;

public UserController(IUserService userService)
{
_userService = userService;
}

[HttpGet]
public IActionResult GetAllUsers()
{
return ToHttpResult<List<UserDto>>(_userService.GetAllUsers());
}

[HttpGet("{id}")]
public IActionResult GetUser(string id)
{
return ToHttpResult<UserDto>(_userService.GetUserById(id));
}

[HttpDelete("{id}")]
public IActionResult DeleteUser(string id)
{
return ToHttpResult(_userService.DeleteUser(id));
}
}
}
4 changes: 4 additions & 0 deletions taskmaster-api/Data/DTOs/UserDto.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,9 @@
{
public class UserDto
{
public string Id { get; set; }
public string Email { get; set; }
public string UserName { get; set; }

}
}
1 change: 1 addition & 0 deletions taskmaster-api/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@
builder.Services.AddScoped<ITaskRepository, TaskRepository>();
builder.Services.AddScoped<ITaskService, TaskService>();
builder.Services.AddScoped<IAuthService, AuthService>();
builder.Services.AddScoped<IUserService, UserService>();

var app = builder.Build();

Expand Down
1 change: 0 additions & 1 deletion taskmaster-api/Services/AuthService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
using Microsoft.IdentityModel.Tokens;
using System.Text;
using taskmaster_api.Data.Models;
using Microsoft.Extensions.Logging;

namespace taskmaster_api.Services
{
Expand Down
4 changes: 2 additions & 2 deletions taskmaster-api/Services/Interface/ITaskService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ public interface ITaskService
{
ICoreActionResult<TaskDto> GetTaskById(int id);
ICoreActionResult<List<TaskDto>> GetAllTasks();
ICoreActionResult<TaskDto> CreateTask(TaskDto task);
ICoreActionResult<TaskDto> UpdateTask(int id, TaskDto task);
ICoreActionResult<TaskDto> CreateTask(TaskDto taskDto);
ICoreActionResult<TaskDto> UpdateTask(int id, TaskDto taskDto);
ICoreActionResult DeleteTask(int id);
}
}
12 changes: 12 additions & 0 deletions taskmaster-api/Services/Interface/IUserService.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
using taskmaster_api.Data.DTOs.Interface;
using taskmaster_api.Data.DTOs;

namespace taskmaster_api.Services.Interface
{
public interface IUserService
{
ICoreActionResult<UserDto> GetUserById(string id);
ICoreActionResult<List<UserDto>> GetAllUsers();
ICoreActionResult DeleteUser(string id);
}
}
6 changes: 2 additions & 4 deletions taskmaster-api/Services/TaskService.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using taskmaster_api.Data.DTOs;
using taskmaster_api.Data.DTOs;
using taskmaster_api.Data.DTOs.Interface;
using taskmaster_api.Data.Entities;
using taskmaster_api.Data.Repositories.Interface;
using taskmaster_api.Services.Interface;

Expand All @@ -16,6 +13,7 @@ public class TaskService : ITaskService
public TaskService(ITaskRepository taskRepository, ILogger<TaskService> logger)
{
_taskRepository = taskRepository;
_logger = logger;
}

public ICoreActionResult<TaskDto> GetTaskById(int id)
Expand Down
94 changes: 94 additions & 0 deletions taskmaster-api/Services/UserService.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
using Microsoft.AspNetCore.Identity;
using taskmaster_api.Data.DTOs;
using taskmaster_api.Data.DTOs.Interface;
using taskmaster_api.Services.Interface;

namespace taskmaster_api.Services
{
public class UserService : IUserService
{
private readonly UserManager<IdentityUser> _userManager;
private readonly ILogger<TaskService> _logger;

public UserService(UserManager<IdentityUser> userManager, ILogger<TaskService> logger)
{
_userManager = userManager;
_logger = logger;
}

public ICoreActionResult DeleteUser(string id)
{
try
{
var user = _userManager.FindByIdAsync(id).Result;

if (user == null)
{
_logger.LogInformation("User not found");
return CoreActionResult.Failure("User not found", "NotFound");
}

var result = _userManager.DeleteAsync(user).Result;

return CoreActionResult.Success();
}
catch (Exception ex)
{
_logger.LogInformation(ex.Message);
return CoreActionResult.Exception(ex);
}
}

public ICoreActionResult<List<UserDto>> GetAllUsers()
{
try
{
List<UserDto> userDtoList = new List<UserDto>();
foreach (var user in _userManager.Users)
{
userDtoList.Add(new UserDto
{
Id = user.Id,
UserName = user.UserName,
Email = user.Email
});
}

return CoreActionResult<List<UserDto>>.Success(userDtoList);
}
catch (Exception ex)
{
_logger.LogInformation(ex.Message);
return CoreActionResult<List<UserDto>>.Exception(ex);
}
}

public ICoreActionResult<UserDto> GetUserById(string id)
{
try
{
var user = _userManager.FindByIdAsync(id).Result;

if (user == null)
{
_logger.LogInformation("User not found");
return CoreActionResult<UserDto>.Failure("User not found", "NotFound");
}

var userDto = new UserDto
{
Id = user.Id,
UserName = user.UserName,
Email = user.Email
};

return CoreActionResult<UserDto>.Success(userDto);
}
catch (Exception ex)
{
_logger.LogInformation(ex.Message);
return CoreActionResult<UserDto>.Exception(ex);
}
}
}
}