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 { private readonly IUserRepository _userRepository; private readonly IUnitOfWork _unitOfWork; public EditUserCommandHandler(IUserRepository userRepository, IUnitOfWork unitOfWork) { _userRepository = userRepository; _unitOfWork = unitOfWork; } public async Task 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 Roles, bool IsActive) : IBaseCommand;