using Managing.Application.Abstractions.Repositories; using Managing.Domain.Users; using Managing.Infrastructure.Databases.MongoDb; using Managing.Infrastructure.Databases.MongoDb.Abstractions; using Managing.Infrastructure.Databases.MongoDb.Collections; namespace Managing.Infrastructure.Databases; public class UserRepository : IUserRepository { private readonly IMongoRepository _userRepository; public UserRepository(IMongoRepository userRepository) { _userRepository = userRepository; } public async Task GetUserByAgentNameAsync(string agentName) { var user = await _userRepository.FindOneAsync(u => u.AgentName == agentName); return MongoMappers.Map(user); } public async Task GetUserByNameAsync(string name) { var user = await _userRepository.FindOneAsync(u => u.Name == name); return MongoMappers.Map(user); } public async Task InsertUserAsync(User user) { await _userRepository.InsertOneAsync(MongoMappers.Map(user)); } public async Task UpdateUser(User user) { try { var dto = await _userRepository.FindOneAsync(u => u.Name == user.Name); dto.AgentName = user.AgentName; dto.AvatarUrl = user.AvatarUrl; dto.TelegramChannel = user.TelegramChannel; _userRepository.Update(dto); } catch (Exception e) { Console.WriteLine(e); throw new Exception("Cannot update user"); } } }