Files
Backend-Api/ProgramManager/src/Application/GozareshgirProgramManager.Application/Modules/Users/Commands/EditUser/EditUserCommandHandler.cs

34 lines
1.4 KiB
C#

using GozareshgirProgramManager.Application._Common.Interfaces;
using GozareshgirProgramManager.Application._Common.Models;
using GozareshgirProgramManager.Domain._Common;
using GozareshgirProgramManager.Domain.RoleUserAgg;
using GozareshgirProgramManager.Domain.UserAgg.Repositories;
namespace GozareshgirProgramManager.Application.Modules.Users.Commands.EditUser;
public class EditUserCommandHandler :IBaseCommandHandler<EditUserCommand>
{
private readonly IUserRepository _userRepository;
private readonly IUnitOfWork _unitOfWork;
public EditUserCommandHandler(IUserRepository userRepository, IUnitOfWork unitOfWork)
{
_userRepository = userRepository;
_unitOfWork = unitOfWork;
}
public async Task<OperationResult> Handle(EditUserCommand request, CancellationToken cancellationToken)
{
var user = await _userRepository.GetByGozareshgirAccountId(request.AccountId);
if (user != null)
{
var userRoles = request.Roles.Where(x => x > 0).Select(x => new RoleUser(x)).ToList();
user.Edit(request.FullName, request.UserName, request.Mobile, userRoles, request.IsActive);
await _unitOfWork.SaveChangesAsync();
}
return OperationResult.Success();
}
}
public record EditUserCommand(string FullName, string UserName, string Mobile,long AccountId, List<long> Roles, bool IsActive) : IBaseCommand;