// return empty website model if sitemap not found
        public async Task <WebSite> DoAnalysisAsync(string domain)
        {
            var webSite = new WebSite();

            _logger.LogInformation("Start to determine a sitemap.");
            var urls = await _sitemapDeterminator.GetListOfUrlsAsync(domain);

            _logger.LogInformation($"The sitemap was determined. Was found {urls.Count} urls.");

            if (urls.Count != ZERO)
            {
                _logger.LogInformation("Start to analyse a website.");
                var analysisWebPages = await _responseTimeAnalyzer.DoAnalysisOfWebSiteAsync(urls);

                _logger.LogInformation("The website was analysed.");

                webSite.DateOfAnalysis = DateTime.Now;
                webSite.Authority      = urls[ZERO].GetLeftPart(UriPartial.Authority);

                var webPages = new List <WebPage>();
                analysisWebPages.ForEach(a =>
                                         webPages.Add(
                                             new WebPage()
                {
                    MaxResponseTime = a.MaxResponseTime,
                    MinResponseTime = a.MinResponseTime,
                    Path            = a.Uri.Replace(webSite.Authority, string.Empty),
                    WebSite         = webSite
                }));
                await _webPageRepository.AddRangeAsync(webPages.ToArray());

                _logger.LogInformation("Webpages was added to database.");
            }

            return(webSite);
        }