public Slide(string naam, string subnaam, string verzenZoalsIngevoerd) { DisplayEdit.Naam = naam; DisplayEdit.SubNaam = subnaam; DisplayEdit.VersenGebruikDefault = verzenZoalsIngevoerd; VerwerkenAlsType = VerwerkingType.nietverwerken; }
public Slide(DatabaseResultaat opBasisVanDbResult) { DisplayEdit.Naam = opBasisVanDbResult.DisplayEdit.Naam; DisplayEdit.SubNaam = opBasisVanDbResult.DisplayEdit.SubNaam; DisplayEdit.VersenGebruikDefault = opBasisVanDbResult.DisplayEdit.VersenGebruikDefault ?? DisplayEdit.VersenGebruikDefault; DisplayEdit.VolledigeContent = opBasisVanDbResult.DisplayEdit.VolledigeContent; Content = opBasisVanDbResult.Content; TonenInOverzicht = opBasisVanDbResult.TonenInOverzicht ?? false; VerwerkenAlsType = opBasisVanDbResult.VerwerkenAlsType; }
public IOplossing KrijgItem(VerwerkingType alsType, string onderdeelNaam, string fragmentNaam, IEnumerable <string> fragmentDelen, LiturgieSettings settings) { var database = alsType == VerwerkingType.normaal ? _databases.GetDefault() : _databases.Extensions.FirstOrDefault(e => e.Name == LiturgieDatabaseSettings.DatabaseNameBijbeltekst); if (database == null) { return new Oplossing() { Status = DatabaseZoekStatus.DatabaseFout } } ; var set = database.Engine.Where(s => string.Equals(s.Name.SafeName, onderdeelNaam, StringComparison.CurrentCultureIgnoreCase) || (settings.GebruikDisplayNameVoorZoeken && string.Equals(s.Settings.DisplayName, onderdeelNaam, StringComparison.CurrentCultureIgnoreCase))).FirstOrDefault(); if (set == null) { return new Oplossing() { Status = DatabaseZoekStatus.SetFout } } ; // Kijk of we het specifieke item in de set kunnen vinden var subSet = set.Where(r => Compare(r.Name.SafeName, fragmentNaam, StringComparison.CurrentCultureIgnoreCase) == 0 || Compare(r.Name.Name, fragmentNaam, StringComparison.CurrentCultureIgnoreCase) == 0).FirstOrDefault(); if (subSet == null) { return new Oplossing() { Status = DatabaseZoekStatus.SubSetFout } } ; var returnValue = new Oplossing { Onderdeel = new OplossingOnderdeel { Naam = set.Name.Name, VeiligeNaam = set.Name.SafeName, AlternatieveNaam = set.Settings.DisplayName, }, Fragment = new OplossingOnderdeel { Naam = subSet.Name.Name, VeiligeNaam = subSet.Name.SafeName, }, ZonderContentSplitsing = !set.Settings.ItemsHaveSubContent, StandaardNietTonenInLiturgie = set.Settings.NotVisibleInIndex, }; // Je kunt geen verzen opgeven als we ze niet los hebben. // (Andere kant op kan wel: geen verzen opgeven terwijl ze er wel zijn (wat 'alle verzen' betekend)) if (fragmentDelen != null && fragmentDelen.Any() && !(set.Settings.ItemsHaveSubContent || set.Settings.ItemIsSubContent)) { return new Oplossing() { Status = DatabaseZoekStatus.VersOnderverdelingMismatch } } ; if (fragmentDelen == null || !fragmentDelen.Any()) { // We hebben geen versenlijst en de set instellingen zeggen zonder verzen te zijn dus hebben we n samengevoegd item if (!(set.Settings.ItemsHaveSubContent || set.Settings.ItemIsSubContent)) { var content = KrijgDirecteContent(subSet.Content, null); if (content == null) { return new Oplossing() { Status = DatabaseZoekStatus.VersOnleesbaar } } ; returnValue.Content = new List <ILiturgieContent> { content }; } // Een item met alle verzen else { returnValue.Content = KrijgContentDelayed(subSet, set.Settings) .Select(s => s.GetContent()) .Where(s => s != null) // omdat we alles ophalen kunnen hier dingen in zitten die niet kloppen .OrderBy(s => s.Nummer) // Op volgorde van nummer .ToList(); } } else { // Specifieke verzen var delayedContent = KrijgContentDelayed(subSet, set.Settings); var preSelect = InterpreteerNummers(fragmentDelen, delayedContent.Select(c => c.PossibleNummer)) // We houden de volgorde van het opgeven aan omdat die afwijkend kan zijn .Select(n => n.ToString()) .Select(n => new { Naam = n, SubSet = delayedContent.FirstOrDefault(c => c.PossibleNummer == n), }) .ToList(); // Specifieke verzen moeten allemaal gevonden kunnen worden if (preSelect.Any(c => c.SubSet == null)) { return new Oplossing() { Status = DatabaseZoekStatus.VersFout } } ; returnValue.Content = preSelect .Select(s => s.SubSet.GetContent()) .ToList(); // Specifieke verzen moeten allemaal interpreteerbaar zijn if (returnValue.Content.Any(c => c == null)) { return new Oplossing() { Status = DatabaseZoekStatus.VersOnleesbaar } } ; } returnValue.Status = DatabaseZoekStatus.Opgelost; return(returnValue); }
public DatabaseResultaat(VerwerkingType type) { VerwerkenAlsType = type; }
public IZoekresultaat ZoekOnderdeel(VerwerkingType alsType, string onderdeelNaam, string fragmentNaam, IEnumerable<string> fragmentDelen = null) { var database = alsType == VerwerkingType.normaal ? _databases.GetDefault() : _databases.Extensions.FirstOrDefault(e => e.Name == LiturgieDatabaseSettings.DatabaseNameBijbeltekst); if (database == null) return new Zoekresultaat() { Status = LiturgieOplossingResultaat.DatabaseFout }; var set = database.Engine.Where(s => Compare(s.Name, onderdeelNaam, StringComparison.OrdinalIgnoreCase) == 0 || Compare(s.Settings.DisplayName, onderdeelNaam, StringComparison.OrdinalIgnoreCase) == 0).FirstOrDefault(); if (set == null) return new Zoekresultaat() { Status = LiturgieOplossingResultaat.SetFout }; // Kijk of we het specifieke item in de set kunnen vinden (alleen via de op-schijf naam) var subSet = set.Where(r => Compare(r.Name, fragmentNaam, StringComparison.OrdinalIgnoreCase) == 0).FirstOrDefault(); if (subSet == null) return new Zoekresultaat() { Status = LiturgieOplossingResultaat.SubSetFout }; var returnValue = new Zoekresultaat() { OnderdeelNaam = set.Name, FragmentNaam = subSet.Name, ZonderContentSplitsing = !set.Settings.ItemsHaveSubContent, OnderdeelDisplayNaam = set.Settings.DisplayName, }; // Je kunt geen verzen opgeven als we ze niet los hebben. // (Andere kant op kan wel: geen verzen opgeven terwijl ze er wel zijn (wat 'alle verzen' betekend)) if (fragmentDelen != null && fragmentDelen.Any() && !(set.Settings.ItemsHaveSubContent || set.Settings.ItemIsSubContent)) return new Zoekresultaat() { Status = LiturgieOplossingResultaat.VersOnderverdelingMismatch }; if (fragmentDelen == null || !fragmentDelen.Any()) { // We hebben geen versenlijst en de set instellingen zeggen zonder verzen te zijn dus hebben we n samengevoegd item if (!(set.Settings.ItemsHaveSubContent || set.Settings.ItemIsSubContent)) { var content = KrijgDirecteContent(subSet.Content, null); if (content == null) return new Zoekresultaat() { Status = LiturgieOplossingResultaat.VersOnleesbaar }; returnValue.Content = new List<ILiturgieContent> { content }; } // Een item met alle verzen else { returnValue.Content = KrijgContentDelayed(subSet, set.Settings) .Select(s => s.GetContent()) .Where(s => s != null) // omdat we alles ophalen kunnen hier dingen in zitten die niet kloppen .OrderBy(s => s.Nummer) // Op volgorde van nummer .ToList(); } } else { // Specifieke verzen var delayedContent = KrijgContentDelayed(subSet, set.Settings); var preSelect = InterpreteerNummers(fragmentDelen, delayedContent.Select(c => c.Name)) // We houden de volgorde van het opgeven aan omdat die afwijkend kan zijn .Select(n => n.ToString()) .Select(n => new { Naam = n, SubSet = delayedContent.FirstOrDefault(c => c.Name == n), }) .ToList(); // Specifieke verzen moeten allemaal gevonden kunnen worden if (preSelect.Any(c => c.SubSet == null)) return new Zoekresultaat() { Status = LiturgieOplossingResultaat.VersFout }; returnValue.Content = preSelect .Select(s => s.SubSet.GetContent()) .ToList(); // Specifieke verzen moeten allemaal interpreteerbaar zijn if (returnValue.Content.Any(c => c == null)) return new Zoekresultaat() { Status = LiturgieOplossingResultaat.VersOnleesbaar }; } returnValue.Status = LiturgieOplossingResultaat.Opgelost; return returnValue; }