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;
 }
Beispiel #3
0
        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;
        }