public async Task <User> CreateExternalUserAsync(User user, UserLoginInfo login)
        {
            ValidateUser(user);

            using (IUnitOfWork uow = RepositoryFactory.CreateUnitOfWork())
            {
                Task result = identityUserRepository.CreateAsync(user);

                if (result.Exception != null)
                {
                    if (result.Exception.InnerException != null)
                    {
                        throw new RepositoryException(nameof(User), ErrorTypeEnum.DatabaseError, result.Exception.InnerException.Message, result.Exception.InnerException);
                    }
                    else
                    {
                        throw new RepositoryException(nameof(User), ErrorTypeEnum.DatabaseError, result.Exception.Message, result.Exception);
                    }
                }

                user = FindByName(user.UserName);

                await AddLoginAsync(user.Id, login);

                uow.Complete();

                return(user);
            }
        }