public bool AddUser(UserDto userDto, int clientId) { if (!userDto?.Validate() ?? false) { return(false); } var client = _clientRepository.GetById(clientId); if (client == null) { return(false); } var user = new User { Client = client, DateOfBirth = userDto.DateOfBirth, EmailAddress = userDto.EmailAddress, Firstname = userDto.Firstname, Surname = userDto.Surname, HasCreditLimit = client.HasCreditLimit }; if (client.HasCreditLimit) { // J'ai trouvé cette classe sur le web, utilie parce qu'on ne sait pas si la factory va retourner une instance disposable ou pas. using var userCreditService = new PotentialDisposable <IUserCreditService>(_userCreditServiceFactory.GetCreditService()); var creditLimit = userCreditService.Instance.GetCreditLimit(user.Firstname, user.Surname, user.DateOfBirth); user.CreditLimit = client.CreditLimitFactor * creditLimit; } if (!user.ValidateCredit()) { return(false); } _userDataRepository.AddUser(user); return(true); }