public async Task <string> CreateShortenerAsync(string sourceLink, string appUrl) { if (!LinkHelper.IsLinkValid(sourceLink) || sourceLink == null) { throw new BusinessRuleValidationException("Неправильный URL."); } string backHalf; do { backHalf = LinkHelper.GenerateBackHalf(sourceLink); }while ((await _shortenerRepository.GetByBackHalf(backHalf)) != null); var shortener = Shortener.Create(sourceLink, appUrl, backHalf); await _shortenerRepository .CreateShortenerAsync(shortener); return(shortener.ShortLink); }