//methods
        public async Task <CommandResult <AddUserOutputModel> > AddUserAsync(AddUserInputModel inputModel)
        {
            _inputModel = inputModel ?? throw new ArgumentNullException(nameof(inputModel));
            _userToAdd  = new User(inputModel.ToUserModel());

            if (!_userToAdd.IsValid)
            {
                return(PresentValidationErrors());
            }

            if (await IsUserAlreadyStoredAsync(_userToAdd))
            {
                return(PresentDuplicatedResult(new AddUserOutputModel(_userToAdd.GetModel())));
            }

            _userToAdd = await SaveToStorageAsync();

            return(PresentSuccessfulResult());
        }