Esempio n. 1
0
        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);
        }