* Maintain DataModel for User, Role, Function and UserRole
This commit is contained in:
88
OrdersManagementDataModel/Services/UserService.cs
Normal file
88
OrdersManagementDataModel/Services/UserService.cs
Normal file
@@ -0,0 +1,88 @@
|
||||
using AutoMapper;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using OrdersManagementDataModel.Dtos;
|
||||
using OrdersManagementDataModel.Entities;
|
||||
|
||||
namespace OrdersManagementDataModel.Services;
|
||||
|
||||
public class UserService(OrdersManagementDbContext context, IMapper mapper) : IUserService
|
||||
{
|
||||
public async Task<IEnumerable<UserDto>> GetUsers()
|
||||
{
|
||||
IList<UserDto> users = await context.Users.Select(x => mapper.Map<UserDto>(x)).ToListAsync();
|
||||
|
||||
return users;
|
||||
}
|
||||
|
||||
public async Task<UserDto?> GetUserById(Guid id)
|
||||
{
|
||||
UserDto? user = await context.Users.Where(x => x.RowPointer == id)
|
||||
.Select(x => mapper.Map<UserDto>(x)).FirstOrDefaultAsync();
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
public async Task<UserDto?> GetUserByUsername(string username)
|
||||
{
|
||||
UserDto? user = await context.Users.Where(x => x.Login == username)
|
||||
.Select(x => mapper.Map<UserDto>(x)).FirstOrDefaultAsync();
|
||||
|
||||
return user;
|
||||
}
|
||||
|
||||
public async Task<int> AddUser(UserDto userDto)
|
||||
{
|
||||
User user = new User
|
||||
{
|
||||
Login = userDto.Login,
|
||||
PasswordHash = userDto.PasswordHash,
|
||||
IsTemporaryPassword = true,
|
||||
IsActive = true,
|
||||
Email = userDto.Email,
|
||||
RowPointer = Guid.NewGuid(),
|
||||
CreatedDate = DateTime.Now,
|
||||
ActiveFrom = DateTime.Now,
|
||||
FirstName = userDto.FirstName,
|
||||
LastName = userDto.LastName
|
||||
};
|
||||
|
||||
context.Users.Add(user);
|
||||
return await context.SaveChangesAsync();
|
||||
}
|
||||
|
||||
public async Task<int> UpdateUser(UserDto userDto)
|
||||
{
|
||||
User user = mapper.Map<User>(userDto);
|
||||
context.Users.Update(user);
|
||||
return await context.SaveChangesAsync();
|
||||
}
|
||||
|
||||
public async Task<int> DeleteUser(Guid id)
|
||||
{
|
||||
User? user = await context.Users.Where(x => x.RowPointer == id).FirstOrDefaultAsync() ?? null;
|
||||
|
||||
if (user == null) return 0;
|
||||
|
||||
context.Users.Remove(user);
|
||||
return await context.SaveChangesAsync();
|
||||
}
|
||||
|
||||
public async Task<IList<UserRoleDto>> GetUserRoles(Guid userId)
|
||||
{
|
||||
List<UserRoleDto> userRoles = await context.Users
|
||||
.Where(x => x.RowPointer == userId)
|
||||
.SelectMany(x => x.UserRoles)
|
||||
.Select(x => mapper.Map<UserRoleDto>(x))
|
||||
.ToListAsync();
|
||||
|
||||
return userRoles;
|
||||
}
|
||||
|
||||
public async Task<UserDto?> GetUserByLoginAndPassword(string login, string password)
|
||||
{
|
||||
UserDto? user = await context.Users.Where(x => x.Login == login && x.PasswordHash == password)
|
||||
.Select(x => mapper.Map<UserDto>(x)).FirstOrDefaultAsync();
|
||||
|
||||
return user;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user