Add User Repository, and restructure controllers

This commit is contained in:
lumijiez
2025-06-06 20:05:51 +03:00
parent f7c84a1147
commit 6c2c846a21
8 changed files with 68 additions and 0 deletions

View File

@@ -21,6 +21,7 @@
<Folder Include="Users\Create\" />
<Folder Include="Users\Delete\" />
<Folder Include="Users\Query\" />
<Folder Include="Users\Roles\" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,11 @@
using Imprink.Domain.Entities.Users;
namespace Imprink.Domain.Repositories;
public interface IRoleRepository
{
Task<IEnumerable<Role>> GetAllRolesAsync(CancellationToken cancellationToken = default);
Task<Role?> GetRoleByIdAsync(Guid roleId, CancellationToken cancellationToken = default);
Task<Role?> GetRoleByNameAsync(string roleName, CancellationToken cancellationToken = default);
Task<bool> RoleExistsAsync(Guid roleId, CancellationToken cancellationToken = default);
}

View File

@@ -0,0 +1,36 @@
using Imprink.Domain.Entities.Users;
namespace Imprink.Domain.Repositories;
public interface IUserRepository
{
Task<User?> GetUserByIdAsync(string userId, CancellationToken cancellationToken = default);
Task<User?> GetUserByEmailAsync(string email, CancellationToken cancellationToken = default);
Task<IEnumerable<User>> GetAllUsersAsync(CancellationToken cancellationToken = default);
Task<IEnumerable<User>> GetActiveUsersAsync(CancellationToken cancellationToken = default);
Task<User> CreateUserAsync(User user, CancellationToken cancellationToken = default);
Task<User> UpdateUserAsync(User user, CancellationToken cancellationToken = default);
Task DeleteUserAsync(string userId, CancellationToken cancellationToken = default);
Task<bool> UserExistsAsync(string userId, CancellationToken cancellationToken = default);
Task<bool> EmailExistsAsync(string email, CancellationToken cancellationToken = default);
Task<bool> ActivateUserAsync(string userId, CancellationToken cancellationToken = default);
Task<bool> DeactivateUserAsync(string userId, CancellationToken cancellationToken = default);
Task UpdateLastLoginAsync(string userId, DateTime loginTime, CancellationToken cancellationToken = default);
Task<IEnumerable<User>> SearchUsersAsync(string searchTerm, CancellationToken cancellationToken = default);
Task<IEnumerable<User>> GetUsersByRoleAsync(Guid roleId, CancellationToken cancellationToken = default);
Task<(IEnumerable<User> Users, int TotalCount)> GetUsersPagedAsync(
int pageNumber,
int pageSize,
string? searchTerm = null,
bool? isActive = null,
CancellationToken cancellationToken = default);
Task<User?> GetUserWithAddressesAsync(string userId, CancellationToken cancellationToken = default);
Task<User?> GetUserWithRolesAsync(string userId, CancellationToken cancellationToken = default);
Task<User?> GetUserWithAllRelatedDataAsync(string userId, CancellationToken cancellationToken = default);
}

View File

@@ -0,0 +1,15 @@
using Imprink.Domain.Entities.Users;
namespace Imprink.Domain.Repositories;
public interface IUserRoleRepository
{
Task<IEnumerable<Role>> GetUserRolesAsync(string userId, CancellationToken cancellationToken = default);
Task<IEnumerable<User>> GetUsersInRoleAsync(Guid roleId, CancellationToken cancellationToken = default);
Task<bool> IsUserInRoleAsync(string userId, Guid roleId, CancellationToken cancellationToken = default);
Task<UserRole?> GetUserRoleAsync(string userId, Guid roleId, CancellationToken cancellationToken = default);
Task AddUserRoleAsync(UserRole userRole, CancellationToken cancellationToken = default);
Task RemoveUserRoleAsync(UserRole userRole, CancellationToken cancellationToken = default);
Task<IEnumerable<UserRole>> GetUserRolesByUserIdAsync(string userId, CancellationToken cancellationToken = default);
}

View File

@@ -29,4 +29,9 @@
</Content>
</ItemGroup>
<ItemGroup>
<Folder Include="Controllers\Orders\" />
<Folder Include="Controllers\Users\" />
</ItemGroup>
</Project>