This commit is contained in:
lumijiez
2025-06-09 00:45:42 +03:00
parent ab9b80b74f
commit a695e1cce6
19 changed files with 464 additions and 173 deletions

View File

@@ -1,5 +1,3 @@
using System.ComponentModel.DataAnnotations;
namespace Imprink.Domain.Common.Models;
public class Auth0User

View File

@@ -5,19 +5,19 @@ namespace Imprink.Domain.Entities.Users;
public class User
{
public string Id { get; set; } = null!;
public required string Name { get; set; }
public required string Nickname { get; set; }
public required string Email { get; set; }
public required string FirstName { get; set; }
public required string LastName { get; set; }
public bool EmailVerified { get; set; }
public string? FullName { get; set; }
public string? PhoneNumber { get; set; }
public DateTime? DateOfBirth { get; set; }
public required bool IsActive { get; set; }
public DateTime? LastLoginAt { get; set; }
public virtual ICollection<Address> Addresses { get; set; } = new List<Address>();
public virtual ICollection<UserRole> UserRoles { get; set; } = new List<UserRole>();
public virtual ICollection<Order> Orders { get; set; } = new List<Order>();
public string FullName => $"{FirstName} {LastName}";
public Address? DefaultAddress => Addresses.FirstOrDefault(a => a.IsDefault && a.IsActive);
public Address? DefaultAddress => Addresses.FirstOrDefault(a => a is { IsDefault: true, IsActive: true });
public IEnumerable<Role> Roles => UserRoles.Select(ur => ur.Role);
}

View File

@@ -1,9 +1,11 @@
using Imprink.Domain.Common.Models;
using Imprink.Domain.Entities.Users;
namespace Imprink.Domain.Repositories;
public interface IUserRepository
{
Task<bool> UpdateOrCreateUserAsync(Auth0User user, CancellationToken cancellationToken = default);
Task<User?> GetUserByIdAsync(string userId, CancellationToken cancellationToken = default);
Task<User?> GetUserByEmailAsync(string email, CancellationToken cancellationToken = default);
Task<IEnumerable<User>> GetAllUsersAsync(CancellationToken cancellationToken = default);
@@ -18,19 +20,8 @@ public interface IUserRepository
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);
}