Пример #1
0
        public void can_handle_multiple_regions()
        {
            var code = "this is some\n" +
                     "void t() {\n" +
                     " #region mybum\n" +
                     " int x \n " +
                     " #region nestedregion1\n" +
                     " var s = fred\n" +
                     "#endregion\n" +
                     " #region nestedregion2\n" +
                     " var s = fred\n" +
                     "#endregion\n" +
                     
                     " #endregion\n" +
                     "}";
            var c = new RegionParser();


            var result = c.GetRegions(code);
            Assert.IsNotNull(result);
            Assert.AreEqual("mybum", result.First().Name);
            var expected = new string[] {"nestedregion1", "nestedregion2"};
            var actual = result.First().NestedRegions.Select(x => x.Name);
          
           var actual2 =  result.SelectMany(x => x.NestedRegions);
  CollectionAssert.AreEqual(expected, actual.ToList());
        }
Пример #2
0
        public void can_handle_multiple_regions()
        {
            var code = "this is some\n" +
                       "void t() {\n" +
                       " #region mybum\n" +
                       " int x \n " +
                       " #region nestedregion1\n" +
                       " var s = fred\n" +
                       "#endregion\n" +
                       " #region nestedregion2\n" +
                       " var s = fred\n" +
                       "#endregion\n" +

                       " #endregion\n" +
                       "}";
            var c = new RegionParser();


            var result = c.GetRegions(code);

            Assert.IsNotNull(result);
            Assert.AreEqual("mybum", result.First().Name);
            var expected = new string[] { "nestedregion1", "nestedregion2" };
            var actual   = result.First().NestedRegions.Select(x => x.Name);

            var actual2 = result.SelectMany(x => x.NestedRegions);

            CollectionAssert.AreEqual(expected, actual.ToList());
        }
Пример #3
0
        public static DemoCodeBuilder Initialize(string filePath, DemoLanguage language)
        {
            var tokenizer = TokenizerFactory.GetFor(language);
            var parser    = new RegionParser(filePath, tokenizer);
            var regions   = parser.GetRegions().ToList();

            return(new DemoCodeBuilder(filePath, regions));
        }
Пример #4
0
        private List <CodeRegion> Act(string filePath)
        {
            var tokenizer = TokenizerFactory.GetFor(DemoLanguage.Java);
            var parser    = new RegionParser(filePath, tokenizer);
            var result    = parser.GetRegions();

            return(result.ToList());
        }
Пример #5
0
        void ISvgRenderer.SetClip(Region region, CombineMode combineMode)
        {
            if (_boundables.Count == 0)
            {
                return;
            }

            if (combineMode != CombineMode.Intersect && combineMode != CombineMode.Replace)
            {
                throw new NotImplementedException();
            }

            // reset current clip
            if (combineMode == CombineMode.Replace || region == null)
            {
                _innerGraphics.PopState();
                _innerGraphics.PushState();
            }
            _innerGraphics.Transform = Matrix3x2.Multiply(_currentTransform, _initialTransform);

            if (combineMode == CombineMode.Replace || _currentClip == null || region == null)
            {
                _currentClip = region;
            }
            else if (_currentClip != region)
            {
                _currentClip = _currentClip.Clone();
                _currentClip.Intersect(region);
            }

            // set default clip
            if (_currentClip == null)
            {
                return;
            }

            RectangleF bounds;

            foreach (var clipper in RegionParser.ParseRegion(_currentClip, ((IGraphicsProvider)this).GetGraphics(), out bounds))
            {
                if (clipper is RectangleF)
                {
                    var rect = (RectangleF)clipper;
                    if (rect != _boundables.Peek().Bounds)
                    {
                        _innerGraphics.IntersectClip(Convert(rect));
                    }
                }
                else if (clipper is GraphicsPath)
                {
                    var path = (GraphicsPath)clipper;
                    _innerGraphics.IntersectClip(Convert(path));
                }
            }
        }
Пример #6
0
            public void ShouldExtractVariableStatements()
            {
                const string Code = "var x = 10;";

                var parser = new RegionParser();
                var result = parser.Parse(Code);

                result.Count().ShouldEqual(1);
                var region = result[0];

                Code.Substring(region.Offset, region.Length).ShouldEqual(Code);
            }
Пример #7
0
            public void ShouldExtractBlock()
            {
                const string Code = "if (true) { some code; }";

                var parser = new RegionParser();
                var result = parser.Parse(Code);

                result.Count().ShouldEqual(1);
                var region = result[0];

                Code.Substring(region.Offset, region.Length).ShouldEqual(Code);
            }
Пример #8
0
            public void ShouldExtractExpressionsInParantheses()
            {
                const string Code = "(10 + 5 * ( 4 - 8) )";

                var parser = new RegionParser();
                var result = parser.Parse(Code);

                result.Count().ShouldEqual(1);
                var region = result[0];

                Code.Substring(region.Offset, region.Length).ShouldEqual(Code);
            }
Пример #9
0
            public void ShouldExtractForLoops() // for loops have ';'
            {
                const string Code = "for(var i = 0; i < 3; i++) { Foo(); }";

                var parser = new RegionParser();
                var result = parser.Parse(Code);

                result.Count().ShouldEqual(1);
                var region = result[0];

                Code.Substring(region.Offset, region.Length).ShouldEqual(Code);
            }
Пример #10
0
            public void ShouldExtractBlockCodeThatBeginsWithLeftCurlyBrackets()
            {
                const string Code = "{ Foo(); ) }";

                var parser = new RegionParser();
                var result = parser.Parse(Code);

                result.Count().ShouldEqual(1);
                var region = result[0];

                Code.Substring(region.Offset, region.Length).ShouldEqual(Code);
            }
Пример #11
0
            public void ShouldExtractDoWhileAsSingleBlock()
            {
                const string Code = "do { }   while (true);";

                var parser = new RegionParser();
                var result = parser.Parse(Code);

                result.Count().ShouldEqual(1);

                var region = result[0];

                Code.Substring(region.Offset, region.Length).ShouldEqual(Code);
            }
Пример #12
0
        public void TestFile()
        {
            const string FilePath = @"D:\Work\BOA.Kernel\Dev\BOA.Kernel.CardGeneral\DebitCard\BOA.Engine.DebitCard\Utility\Validation.cs";

            var data = new RegionParserTestData
            {
                SourceText = File.ReadAllText(FilePath)
            };

            RegionParser.Parse(data);

            Assert.IsTrue(data.Regions.Count > 0);
        }
Пример #13
0
            public void ShouldExtractMultipleIfElseAsSingleBlock()
            {
                const string Code = "if { } else if { } else if { } else { }";

                var parser = new RegionParser();
                var result = parser.Parse(Code);

                result.Count().ShouldEqual(1);

                var region = result[0];

                Code.Substring(region.Offset, region.Length).ShouldEqual(Code);
            }
Пример #14
0
 private static IEnumerable <SerialInfo> GetSerials(IEnumerable <IDictionary <string, string> > cmpMatches,
                                                    string platformId)
 {
     return(from entry in cmpMatches.AsParallel()
            where entry.ContainsKey("serial")
            let name = entry["name"]
                       let serials =
                platformId.StartsWith("NINTENDO")
                 ? Regex.Replace(entry["serial"], "[A-Z]*?-[A-Z]-", string.Empty)
                 : entry["serial"] // sanitize nintendo serials
                let region = RegionParser.ParseRegion(name)
                             select new SerialInfo(platformId, name, region, serials));
 }
Пример #15
0
            public void ShouldExtractComplexVariableStatement()
            {
                const string Code = "var version = File.ReadAllText(\"src/CommonAssemblyInfo.cs\").Split(new[] { \"AssemblyInformationalVersion(\\\"\" }, 2, StringSplitOptions.None).ElementAt(1).Split(new[] { '\"' }).First();";

                var parser = new RegionParser();
                var result = parser.Parse(Code);

                result.Count().ShouldEqual(1);

                var region = result[0];

                Code.Substring(region.Offset, region.Length).ShouldEqual(Code);
            }
Пример #16
0
 private static IEnumerable <RomInfo> GetEntries(XDocument xmlDat, string platformId)
 {
     return(from game in xmlDat.Root.Elements("game").AsParallel()
            from rom in game.Elements("rom").AsParallel()
            where rom.Attribute("size").Value != "0"
            let crc = rom.Attribute("crc").Value.ToUpperInvariant()
                      let md5 = rom.Attribute("md5").Value.ToUpperInvariant()
                                let sha1 = rom.Attribute("sha1").Value.ToUpperInvariant()
                                           let filename = rom.Attribute("name").Value
                                                          let region = RegionParser.ParseRegion(filename)
                                                                       let mimetype = DatParser.GetMimeType(filename, platformId)
                                                                                      where mimetype != null
                                                                                      select new RomInfo(platformId, crc, md5, sha1, region, mimetype, filename));
 }
Пример #17
0
        public void TestLargeFile()
        {
            const string FilePath = @"D:\Work\BOA.BusinessModules\Dev\BOA.CardGeneral.DebitCard\BOA.Orchestration.CardGeneral.DebitCard\CardTransactionListForm.cs";

            var data = new RegionParserTestData
            {
                SourceText = File.ReadAllText(FilePath)
            };

            RegionParser.Parse(data);

            Assert.IsTrue(data.Regions.Count > 0);

            Log.Push(new ArgumentException("xxx"));
        }
Пример #18
0
        public void can_find_simple_regions()
        {
            var code = "this is some\n" +
                       "void t() {\n" +
                       " #region mybum\n" +
                       " int x " +
                       " #endregion\n" +
                       "}";
            var c = new RegionParser();
           

            var result = c.GetRegions(code);
            Assert.IsNotNull(result);

        }
Пример #19
0
        public void can_find_simple_regions()
        {
            var code = "this is some\n" +
                       "void t() {\n" +
                       " #region mybum\n" +
                       " int x " +
                       " #endregion\n" +
                       "}";
            var c = new RegionParser();


            var result = c.GetRegions(code);

            Assert.IsNotNull(result);
        }
Пример #20
0
        /// <summary>
        /// 新方法-加载所有规则
        /// </summary>
        public void LoadRules()
        {
            var files = Directory.GetFiles(config.RulefilesPath, "*.rule");

            if (files == null || files.Length == 0)
            {
                throw new Exception("rule文件不存在");
            }

            List <Region> regions  = new List <Region>();
            string        fileName = string.Empty;
            StringBuilder text     = new StringBuilder();

            files.ToList().ForEach(file =>
            {
                fileName     = Path.GetFileNameWithoutExtension(file);
                var fileText = File.ReadAllText(file);
                config.FileRegion[fileName] = RegionParser.ParseRegions(fileText.ToString());
                regions.AddRange(config.FileRegion[fileName]);
                text.AppendLine(fileText);
            });

            if (regions == null || regions.Count == 0)
            {
                throw new Exception("region不存在");
            }

            regions.ForEach(region =>
            {
                var rules = RuleParser.ParseRules(region.RegionContent);

                if (regions == null || regions.Count == 0)
                {
                    throw new Exception(string.Format("region '{0}' 无法找到rule", region.RegionName));
                }

                rules.ForEach(rule =>
                {
                    rule.RegionName = region.RegionName;
                });

                rules.ForEach(rule =>
                {
                    var key = string.Format("{0}.{1}", rule.RegionName, rule.RuleName);
                    config.RuleDefinations[key] = rule;
                });
            });
        }
Пример #21
0
            public void ShouldExtractComplexMethods()
            {
                const string Code = "var bau = Require<Bau>();\n\nbau\n.Task(\"default\").DependsOn(string.IsNullOrWhiteSpace(ci) ? new[] { \"unit\", \"component\", \"pack\" } : new[] { \"unit\", \"component\", \"accept\", \"pack\" });\n";

                var parser = new RegionParser();
                var result = parser.Parse(Code);

                result.Count().ShouldEqual(2);

                var region = result[0];

                Code.Substring(region.Offset, region.Length).ShouldEqual("var bau = Require<Bau>();");

                region = result[1];
                Code.Substring(region.Offset, region.Length).ShouldEqual("bau\n.Task(\"default\").DependsOn(string.IsNullOrWhiteSpace(ci) ? new[] { \"unit\", \"component\", \"pack\" } : new[] { \"unit\", \"component\", \"accept\", \"pack\" });");
            }
Пример #22
0
            public void ShouldExtractInvalidDoWhileAsTwoBlocks()
            {
                const string Code = "do { }   if (true);";

                var parser = new RegionParser();
                var result = parser.Parse(Code);

                result.Count().ShouldEqual(2);

                var region = result[0];

                Code.Substring(region.Offset, region.Length).ShouldEqual("do { }");

                region = result[1];
                Code.Substring(region.Offset, region.Length).ShouldEqual("if (true);");
            }
Пример #23
0
            public void ShouldExtractMultipleBlocks()
            {
                const string Code = "using(var s = File.Open(\"test.cs\")){ } public Foo(int x) { return x }";

                var parser = new RegionParser();
                var result = parser.Parse(Code);

                result.Count().ShouldEqual(2);

                var region = result[0];

                Code.Substring(region.Offset, region.Length).ShouldEqual("using(var s = File.Open(\"test.cs\")){ }");

                region = result[1];
                Code.Substring(region.Offset, region.Length).ShouldEqual("public Foo(int x) { return x }");
            }
        public void ParseMultipleRegions()
        {
            var parser = new RegionParser();

            var source = new StringBuilder();

            source.AppendLine(@"using System;");
            source.AppendLine(@"using System.Collections.Generic;");
            source.AppendLine(@"");
            source.AppendLine(@"namespace EntityFrameworkCore.Generator.Core.Tests");
            source.AppendLine(@"{");
            source.AppendLine(@"    public partial class User");
            source.AppendLine(@"    {");
            source.AppendLine(@"        public User()");
            source.AppendLine(@"        {");
            source.AppendLine(@"            #region Generated Initializes");
            source.AppendLine(@"            Created = DateTimeOffset.UtcNow;");
            source.AppendLine(@"            Updated = DateTimeOffset.UtcNow;");
            source.AppendLine(@"            UserRoles = new HashSet<UserRole>();");
            source.AppendLine(@"            #endregion");
            source.AppendLine(@"        }");
            source.AppendLine(@"");
            source.AppendLine(@"        #region Generated Properties");
            source.AppendLine(@"        public Guid Id { get; set; }");
            source.AppendLine(@"        public string EmailAddress { get; set; }");
            source.AppendLine(@"        public DateTimeOffset Created { get; set; }");
            source.AppendLine(@"        public DateTimeOffset Updated { get; set; }");
            source.AppendLine(@"        #endregion");
            source.AppendLine(@"");
            source.AppendLine(@"        #region Generated Relationships");
            source.AppendLine(@"        public virtual ICollection<UserRole> UserRoles { get; set; }");
            source.AppendLine(@"        #endregion");
            source.AppendLine(@"    }");
            source.AppendLine(@"}");


            var result = parser.ParseRegions(source.ToString());

            result.Should().NotBeNull();
            result.Count.Should().Be(3);

            var first = result.Values.First();

            first.Should().NotBeNull();
            first.Name.Should().Be("Generated Initializes");
        }
Пример #25
0
        /// <summary>
        /// 原方法-加载所有规则
        /// </summary>
        public void LoadRules0()
        {
            var files = System.IO.Directory.GetFiles(config.RulefilesPath, "*.rule");

            if (files == null || files.Length == 0)
            {
                throw new Exception("rule文件不存在");
            }

            StringBuilder text = new StringBuilder();

            files.ToList().ForEach(file =>
            {
                var fileText = System.IO.File.ReadAllText(file);
                text.AppendLine(fileText);
            });

            List <Region> regions = RegionParser.ParseRegions(text.ToString());

            if (regions == null || regions.Count == 0)
            {
                throw new Exception("region不存在");
            }

            regions.ForEach(region =>
            {
                var rules = RuleParser.ParseRules(region.RegionContent);

                if (regions == null || regions.Count == 0)
                {
                    throw new Exception(string.Format("region '{0}' 无法找到rule", region.RegionName));
                }

                rules.ForEach(rule =>
                {
                    rule.RegionName = region.RegionName;
                });

                rules.ForEach(rule =>
                {
                    var key = string.Format("{0}.{1}", rule.RegionName, rule.RuleName);
                    config.RuleDefinations[key] = rule;
                });
            });
        }
Пример #26
0
            public void ShouldExtractMultipleStatements()
            {
                const string Code = "var x = 123;Action a = () => x++;Console.WriteLine(x);";

                var parser = new RegionParser();
                var result = parser.Parse(Code);

                result.Count().ShouldEqual(3);
                var region = result[0];

                Code.Substring(region.Offset, region.Length).ShouldEqual("var x = 123;");

                region = result[1];
                Code.Substring(region.Offset, region.Length).ShouldEqual("Action a = () => x++;");

                region = result[2];
                Code.Substring(region.Offset, region.Length).ShouldEqual("Console.WriteLine(x);");
            }
Пример #27
0
        public void can_handle_nested_regions()
        {
            var code = "this is some\n" +
                       "void t() {\n" +
                       " #region mybum\n" +
                       " int x \n" +
                       " #region nestedregion1\n" +
                       " var s = fred\n" +
                       "#endregion\n" +
                       " #endregion\n" +
                       "}";
            var c = new RegionParser();


            var result = c.GetRegions(code);
            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count());
            Assert.AreEqual("mybum", result.First().Name);
            Assert.AreEqual("nestedregion1", result.First().NestedRegions.First().Name);
        }
Пример #28
0
        public void can_handle_nested_regions()
        {
            var code = "this is some\n" +
                       "void t() {\n" +
                       " #region mybum\n" +
                       " int x \n" +
                       " #region nestedregion1\n" +
                       " var s = fred\n" +
                       "#endregion\n" +
                       " #endregion\n" +
                       "}";
            var c = new RegionParser();


            var result = c.GetRegions(code);

            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count());
            Assert.AreEqual("mybum", result.First().Name);
            Assert.AreEqual("nestedregion1", result.First().NestedRegions.First().Name);
        }
Пример #29
0
        public void SimpleCall()
        {
            const string sourceText = @"
            
            var checkResponse =   boCardStatusChecker.CheckCardStatus(data);
            if (!checkResponse.Success)
            {
                returnObject.Results.AddRange(checkResponse.Results);
                return returnObject;
            }

";
            var          data       = new RegionParserTestData
            {
                SourceText = sourceText
            };

            RegionParser.Parse(data);

            Assert.AreEqual("boCardStatusChecker.CheckCardStatus(data);", data.Regions?[0]?.Text);
        }
Пример #30
0
        protected virtual void MergeOutput(string fullPath, string outputContent)
        {
            var outputRegions = RegionParser.ParseRegions(outputContent);

            var originalContent = File.ReadAllText(fullPath);
            var originalRegions = RegionParser.ParseRegions(originalContent);
            var originalBuilder = new StringBuilder(originalContent);

            int offset = 0;

            foreach (var pair in outputRegions)
            {
                var outputRegion = pair.Value;
                if (!originalRegions.TryGetValue(pair.Key, out var originalRegion))
                {
                    // log error
                    continue;
                }

                int startIndex    = originalRegion.StartIndex + offset;
                int beforeReplace = originalBuilder.Length;
                int length        = (originalRegion.EndIndex + offset) - startIndex;

                originalBuilder.Remove(startIndex, length);
                originalBuilder.Insert(startIndex, outputRegion.Content);

                int afterReplace = originalBuilder.Length;

                offset = offset + (afterReplace - beforeReplace);
            }

            var finalContent = originalBuilder.ToString();

            if (originalContent == finalContent)
            {
                return;
            }

            File.WriteAllText(fullPath, finalContent);
        }
Пример #31
0
        public void SimpleCallWithKnownMethod()
        {
            const string sourceText = @"
            
            var checkResponse =   boCardStatusChecker.CheckCardStatus(data);
            if (!checkResponse.Success)
            {
                returnObject.Results.AddRange(checkResponse.Results);
                return returnObject;
            }
            var x = checkResponse.Value.GetValueOrDefault();

";
            var          data       = new RegionParserTestData
            {
                SourceText = sourceText
            };

            RegionParser.Parse(data);

            Assert.AreEqual("var x = boCardStatusChecker.CheckCardStatus(data).GetValueOrDefault();", data.Regions?[0]?.Text);
        }
        public void ParseRegions()
        {
            var parser = new RegionParser();

            var source = new StringBuilder();

            source.AppendLine(@"using System;");
            source.AppendLine(@"using System.Collections.Generic;");
            source.AppendLine(@"");
            source.AppendLine(@"namespace EntityFrameworkCore.Generator.Core.Tests");
            source.AppendLine(@"{");
            source.AppendLine(@"    public partial class User");
            source.AppendLine(@"    {");
            source.AppendLine(@"        #region Generated Properties");
            source.AppendLine(@"        public Guid Id { get; set; }");
            source.AppendLine(@"        #endregion");
            source.AppendLine(@"    }");
            source.AppendLine(@"}");


            var result = parser.ParseRegions(source.ToString());

            result.Should().NotBeNull();
            result.Count.Should().Be(1);

            var first = result.Values.First();

            first.Should().NotBeNull();
            first.Name.Should().Be("Generated Properties");

            var content = new StringBuilder();

            content.AppendLine(@"#region Generated Properties");
            content.AppendLine(@"        public Guid Id { get; set; }");
            content.AppendLine(@"        #endregion");

            first.Content.Should().Be(content.ToString());
        }
Пример #33
0
        public override async Task ProcessDataAsync()
        {
            var scrapedSaleAnnounces = new List <TransportSaleAnnounce>();

            while (ItemsCountForStep > scrapedSaleAnnounces.Count)
            {
                try
                {
                    var urlForScrapping = UrlForScrapping + $"&start={ScrappingPage}";
                    var htmlDocument    = await DataLoader.LoadHtmlDocumentAsync(urlForScrapping);

                    var previewOffers = StructureExtractor.GetPreviewOfferStructure(htmlDocument, ScrappingPage).ToList();

                    for (int i = 0; i < previewOffers.Count; i++)
                    {
tryAgain:

                        try
                        {
                            var sourceLink           = SourceLinkParser.GetLink(previewOffers[i], BaseUrl);
                            var detailedHtmlDocument = await DataLoader.LoadHtmlDocumentAsync(sourceLink);

                            var detailedOfferNode = StructureExtractor.GetDetailedOfferStructure(detailedHtmlDocument);

                            var(brandId, modelId) = BrandModelParser.ParseForDetailed(detailedOfferNode);

                            var saleAnnounce = new TransportSaleAnnounce()
                            {
                                SourceLink         = sourceLink,
                                TransmissionTypeId = TransmissionTypeParser.ParseForDetailed(detailedOfferNode),
                                AdNumber           = OfferNumberParser.ParseForDetailed(detailedOfferNode),
                                BodyTypeId         = BodyTypeParser.ParseForDetailed(detailedOfferNode),
                                CityId             = RegionParser.ParseForDetailed(detailedOfferNode).Id,
                                Description        = DescriptionParser.ParseForDetailed(detailedOfferNode),
                                DriveUnitId        = DriveUnitParser.ParseForDetailed(detailedOfferNode),
                                EngineVolumetric   = EngineVolumetricParser.ParseForDetailed(detailedOfferNode),
                                FuelTypeId         = FuelTypeParser.ParseForDetailed(detailedOfferNode),
                                PreviewImageLink   = ImageLinkParser.ParseForPreview(previewOffers[i]),
                                Mileage            = MileageParser.ParseForDetailed(detailedOfferNode),
                                BrandId            = brandId,
                                VehicleTypeId      = VehicleTypeParser.ParseForDetailed(detailedOfferNode),
                                ModelId            = modelId,
                                PriceInDollars     = PriceParser.ParseForDetailed(detailedOfferNode),
                                UpdateOfferTime    = PublishDateParser.ParseForDetailed(detailedOfferNode),
                                Year             = YearParser.ParseForDetailed(detailedOfferNode),
                                CreatedAt        = DateTime.Now,
                                SourceProviderId = (int)SourceProviderEnum.RST
                            };

                            var carConditionIds = CarConditionParser.ParseForPreview(previewOffers[i]);
                            foreach (var carConditionId in carConditionIds)
                            {
                                saleAnnounce.TransportConditions.Add(new TransportConditionInSaleAnnounce()
                                {
                                    TransportConditionId = carConditionId
                                });
                            }

                            scrapedSaleAnnounces.Add(saleAnnounce);

                            UnitOfWork.TransportSaleAnnouncesRepository.Add(saleAnnounce);
                            await UnitOfWork.SaveChangesAsync();

                            ScrappingPage++;
                        }
                        catch (WebException)
                        {
                            goto tryAgain;
                        }
                    }
                }
                catch (Exception ex)
                {
                    _logger.LogError($"{ex.Message}\n{ex.StackTrace}");
                }
            }

            //await UnitOfWork.TransportSaleAnnouncesRepository.InsertRangeSaleAnnounces(scrapedSaleAnnounces);
        }