void ReadHadith(XElement hadithNode) { var reference = MultiPartReference.ParseXml(hadithNode.Element("reference")); var secondaryReferences = ReadSecondaryReferences(hadithNode.Element("secondaryReferences")); var verseReferences = ReadVerseReferences(hadithNode.Element("verseReferences")); var englishTextNode = hadithNode.Element("english"); var englishText = englishTextNode.Elements("text").Select(x => x.Value); var arabicTextNode = hadithNode.Element("arabic"); var arabicText = arabicTextNode.Elements("text").Select(x => x.Value); HashSet <VerseRangeReference> additionalVerseReferences; if (VersesByHadith.TryGetValue(reference, out additionalVerseReferences)) { verseReferences = verseReferences.Concat(additionalVerseReferences); } var hadith = new Hadith( reference: reference, otherReferences: secondaryReferences, arabicText: arabicText, englishText: englishText, verseReferences: verseReferences ); Collection.AddHadith(hadith); }
public HadithDto(Hadith hadith) { Number = hadith.Number; Hadith = hadith.HadithText; Tafseel = hadith.Tafseel; Book = hadith.Book; }
void ReadHadith(XElement hadithNode) { var references = ReadReferences(hadithNode.Element("references")); var verseReferences = ReadVerseReferences(hadithNode.Element("verseReferences")); var englishTextNode = hadithNode.Element("english"); var englishText = englishTextNode.Elements("text").Select(x => x.Value); var arabicTextNode = hadithNode.Element("arabic"); var arabicText = arabicTextNode.Elements("text").Select(x => x.Value); foreach (HadithReference reference in references) { HashSet <VerseRangeReference> additionalVerseReferences; if (VersesByHadith.TryGetValue(reference, out additionalVerseReferences)) { verseReferences = verseReferences.Concat(additionalVerseReferences); break; } } var hadith = new Hadith( collection: Collection, references: references, arabicText: arabicText, englishText: englishText, verseReferences: verseReferences); Collection.AddHadith(hadith); }
public void Write(Hadith hadith) { if (hadith.Id <= 0) { throw new ArgumentOutOfRangeException(nameof(Hadith.Id)); } var document = new Document(); document.Boost = DocumentWeights.Weights["Hadith-" + hadith.CollectionCode]; document.StoreAndIndex(hadith, x => x.Id); foreach (VerseRangeReference verseRangeReference in hadith.VerseRangeReferences) { string indexName = ExpressionExtensions.GetIndexName <Hadith, object>(x => x.VerseRangeReferences); document.StoreAndIndex(indexName, verseRangeReference.ToIndexValue()); } document.AddSearchableText(hadith.ArabicText); document.AddSearchableText(hadith.EnglishText); document.StoreAndIndex(hadith, x => x.CollectionCode); document.StoreAndIndex(hadith, x => x.PrimaryReferenceCode); document.StoreAndIndex(hadith, x => x.PrimaryReferencePath); document.AddObject(hadith); IndexWriter indexWriter = IndexWriterProvider.GetIndexWriter(); indexWriter.AddDocument(document); WriteHadithReferences(indexWriter, hadith); WriteVerseReferences(indexWriter, hadith); }
void WriteHadithReferences(Hadith hadith) { using (Xml.WriteElement("references")) foreach (var reference in hadith.References.OrderBy(x => x.Code)) { WriteHadithReference(reference); } }
void WriteHadithVerseReferences(Hadith hadith) { using (Xml.WriteElement("verseReferences")) foreach (var verseReference in hadith.VerseReferences) { WriteHadithVerseReferences(verseReference); } }
void WriteHadith(Hadith hadith) { using (Xml.WriteElement("hadith")) { WriteHadithReferences(hadith); WriteHadithText(hadith); WriteHadithVerseReferences(hadith); } }
public HadithViewModel( string collectionName, Hadith hadith, IEnumerable <HadithReferenceViewModel> references) { CollectionName = collectionName; Hadith = hadith; References = references.ToList().AsReadOnly(); }
private void MigrateHadith(Hadith hadith, IEnumerable <HadithIndexDefinitionViewModel> referenceDefinitions) { Dictionary <string, HadithIndexDefinitionViewModel> definitionsByCode = referenceDefinitions.ToDictionary(x => x.Code, StringComparer.InvariantCultureIgnoreCase); int hadithId = NextHadithId++; var references = new List <HadithReferenceViewModel>(); HadithReferenceViewModel primaryReference = null; foreach (HadithReference hadithReference in hadith.References) { (int index, string suffix)[] indexValues =
private void WriteHadithReferences(IndexWriter indexWriter, Hadith hadith) { foreach (HadithReference reference in hadith.References) { var doc = new Document(); doc .AddObject(reference) .StoreAndIndex(reference, x => x.CollectionCode) .StoreAndIndex(reference, x => x.ReferenceCode, x => x.Replace("-", "")) .StoreAndIndex(reference, x => x.ReferenceValue1) .StoreAndIndex(reference, x => x.ReferenceValue1Suffix) .StoreAndIndex(reference, x => x.ReferenceValue2) .StoreAndIndex(reference, x => x.ReferenceValue2Suffix) .StoreAndIndex(reference, x => x.ReferenceValue3) .StoreAndIndex(reference, x => x.ReferenceValue3Suffix); indexWriter.AddDocument(doc); } }
private void WriteVerseReferences(IndexWriter indexWriter, Hadith hadith) { IEnumerable <HadithVerseLink> hadithVerseLinks = hadith.VerseRangeReferences .SelectMany(x => x.ToVerseReferences()) .Select(x => x.ToIndexValue()) .Select(x => new HadithVerseLink( hadithId: hadith.Id, verseId: x)); foreach (HadithVerseLink hadithVerseLink in hadithVerseLinks) { var doc = new Document(); doc .StoreAndIndex(hadithVerseLink, x => x.HadithId) .StoreAndIndex(hadithVerseLink, x => x.VerseId) .AddObject(hadithVerseLink); indexWriter.AddDocument(doc); } }
void WriteHadithText(Hadith hadith) { WriteHadithParagraphs("arabic", hadith.ArabicText); WriteHadithParagraphs("english", hadith.EnglishText); }
static void getHadith() { HadithDBEntities ctx = new HadithDBEntities(); var perowih = new string[] { "bukhari", "muslim", "nasai", "abudawud", "tirmidhi", "ibnmajah", "malik", "nawawi40", "riyadussaliheen", "adab", "qudsi40", "shamail", "bulugh" }; foreach (var item in perowih) { Hadith newNode = new Hadith(); newNode.Name = item; try { var Webget = new HtmlWeb(); var doc = Webget.Load(string.Format("http://sunnah.com/{0}/about", item)); foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@class='abouttitle']")) { newNode.Title = node.InnerHtml; } foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@class='about']")) { newNode.About = node.InnerHtml; } } catch { } ctx.Hadiths.Add(newNode); ctx.SaveChanges(); } }