示例#1
0
 public void Initialise()
 {
     _liturgieSettingsDefault = new LiturgieSettings
     {
         ToonBijbeltekstenInLiturgie = true,
     };
 }
示例#2
0
 public void Initialise()
 {
     _liturgieInterpreteer    = new Mock <ILiturgieTekstNaarObject>().Object;
     _liturgieSettingsDefault = new LiturgieSettings
     {
         ToonBijbeltekstenInLiturgie = true,
     };
 }
        private DatabaseResultaat Opzoeken(ILiturgieTekstObject item, LiturgieSettings settings)
        {
            var setNaam = item.Benaming;

            if (item is ILiturgieInterpretatieBijbeltekst)
            {
                return(BijbeltekstOpzoeken(setNaam, item as ILiturgieInterpretatieBijbeltekst, settings));
            }
            var zoekNaam = item.Deel;

            if (IsNullOrEmpty(item.Deel))
            {
                setNaam  = FileEngineDefaults.CommonFilesSetName;
                zoekNaam = item.Benaming;
            }

            return(NormaalOpzoeken(setNaam, zoekNaam, item.Verzen.ToList(), settings));
        }
        public ITekstNaarSlideConversieResultaat ConverteerNaarSlide(ILiturgieTekstObject tekstInput, LiturgieSettings settings, IEnumerable <LiturgieMapmaskArg> masks = null)
        {
            var regel         = (Slide)null;
            var isBlancoSlide = false;

            // zoek de regels in de database en pak ook de naamgeving daar uit over
            var dbResult = (DatabaseResultaat)null;

            if (!tekstInput.OptiesGebruiker.NietVerwerkenViaDatabase)
            {
                dbResult = Opzoeken(tekstInput, settings);
                // TODO blanco check
                if (dbResult.Status != DatabaseZoekStatus.Opgelost)
                {
                    return(new ConversieResultaat(dbResult.Status, tekstInput));
                }
                regel         = new Slide(dbResult);
                isBlancoSlide = string.Compare(tekstInput.Benaming, LiturgieOptieSettings.BlancoSlide, true) == 0;
            }
            else
            {
                regel = new Slide(tekstInput.Benaming, tekstInput.Deel, tekstInput.VerzenZoalsIngevoerd);
            }

            // verwerk de opties
            regel.VerwerkenAlsSlide   = !tekstInput.OptiesGebruiker.NietVerwerkenViaDatabase;
            regel.TonenInOverzicht    = tekstInput.OptiesGebruiker.ToonInOverzicht ?? regel.TonenInOverzicht;
            regel.TonenInVolgende     = tekstInput.OptiesGebruiker.ToonInVolgende ?? true;
            regel.OverslaanInVolgende = isBlancoSlide;

            // Check of er een mask is (mooiere naam)
            // Anders underscores als spaties tonen
            var maskCheck = masks?.FirstOrDefault(m => Compare(m.RealName, regel.DisplayEdit.Naam, true) == 0);

            if (maskCheck != null)
            {
                regel.DisplayEdit.Naam = maskCheck.Name;
            }
            else
            {
                regel.DisplayEdit.Naam = (regel.DisplayEdit.Naam ?? "").Replace("_", " ");
            }
            regel.DisplayEdit.SubNaam = (regel.DisplayEdit.SubNaam ?? "").Replace("_", " ");

            // regel visualisatie na bewerking
            if (IsNullOrEmpty(regel.DisplayEdit.NaamOverzicht))
            {
                regel.DisplayEdit.NaamOverzicht = regel.DisplayEdit.Naam;
            }

            // kijk of de opties nog iets zeggen over alternatieve naamgeving
            if (!IsNullOrWhiteSpace(tekstInput.OptiesGebruiker.AlternatieveNaamOverzicht))
            {
                regel.DisplayEdit.NaamOverzicht = tekstInput.OptiesGebruiker.AlternatieveNaamOverzicht;
                regel.DisplayEdit.SubNaam       = null;
            }
            else if (!IsNullOrWhiteSpace(tekstInput.TeTonenNaamOpOverzicht))
            {
                regel.DisplayEdit.NaamOverzicht = tekstInput.TeTonenNaamOpOverzicht;
                regel.DisplayEdit.SubNaam       = null;
            }
            // kijk of de opties nog iets zeggen over alternatieve naamgeving
            if (!IsNullOrWhiteSpace(tekstInput.OptiesGebruiker.AlternatieveNaam))
            {
                regel.DisplayEdit.Naam    = tekstInput.OptiesGebruiker.AlternatieveNaam;
                regel.DisplayEdit.SubNaam = null;
            }
            else if (!IsNullOrWhiteSpace(tekstInput.TeTonenNaam))
            {
                regel.DisplayEdit.Naam    = tekstInput.TeTonenNaam;
                regel.DisplayEdit.SubNaam = null;
            }

            // geef de oplossing terug
            return(new ConversieResultaat(DatabaseZoekStatus.Opgelost, tekstInput, regel));
        }
        private DatabaseResultaat BijbeltekstOpzoeken(string setNaam, ILiturgieInterpretatieBijbeltekst item, LiturgieSettings settings)
        {
            var resultaat = new DatabaseResultaat(VerwerkingType.bijbeltekst);

            var content         = new List <ILiturgieContent>();
            var versDelenLijst  = item.PerDeelVersen.ToList();
            var displaySelected = false;

            foreach (var deel in versDelenLijst)
            {
                var dbResult = _database.KrijgItem(VerwerkingType.bijbeltekst, setNaam, deel.Deel, deel.Verzen, settings);
                if (dbResult.Status != DatabaseZoekStatus.Opgelost)
                {
                    return(new DatabaseResultaat(dbResult.Status));
                }
                content.AddRange(dbResult.Content);

                if (!displaySelected)
                {
                    resultaat.DisplayEdit.Naam    = !string.IsNullOrEmpty(dbResult.Onderdeel.AlternatieveNaam) ? dbResult.Onderdeel.AlternatieveNaam : dbResult.Onderdeel.Naam;
                    resultaat.DisplayEdit.SubNaam = dbResult.Fragment.Naam;
                    displaySelected = true;
                }
            }
            resultaat.DisplayEdit.VersenGebruikDefault = item.VerzenZoalsIngevoerd;
            resultaat.Content = content.ToList();
            resultaat.DisplayEdit.VolledigeContent = versDelenLijst.Count == 1 && !versDelenLijst.FirstOrDefault().Verzen.Any();
            resultaat.TonenInOverzicht             = settings.ToonBijbeltekstenInLiturgie;

            return(resultaat);
        }
        private DatabaseResultaat NormaalOpzoeken(string setNaam, string zoekNaam, IEnumerable <string> verzen, LiturgieSettings settings)
        {
            var resultaat = new DatabaseResultaat(VerwerkingType.normaal);

            var verzenList = verzen.ToList();
            var dbResult   = _database.KrijgItem(VerwerkingType.normaal, setNaam, zoekNaam, verzenList, settings);

            if (dbResult.Status != DatabaseZoekStatus.Opgelost)
            {
                return(new DatabaseResultaat(dbResult.Status));
            }

            if (dbResult.Onderdeel.Naam == FileEngineDefaults.CommonFilesSetName)
            {
                resultaat.DisplayEdit.Naam = dbResult.Fragment.Naam;
                resultaat.DisplayEdit.VersenGebruikDefault = string.Empty;  // Expliciet: Common bestanden hebben nooit versen
            }
            else
            {
                resultaat.DisplayEdit.Naam    = dbResult.Onderdeel.Naam;
                resultaat.DisplayEdit.SubNaam = dbResult.Fragment.Naam;
            }
            resultaat.Content = dbResult.Content.ToList();
            if (dbResult.ZonderContentSplitsing)
            {
                resultaat.DisplayEdit.VersenGebruikDefault = string.Empty;  // Altijd default gebruiken omdat er altijd maar 1 content is
            }
            resultaat.DisplayEdit.VolledigeContent = !verzenList.Any();

            // Basis waarde van tonen in overzicht bepalen
            if (setNaam != FileEngineDefaults.CommonFilesSetName && !(dbResult.StandaardNietTonenInLiturgie ?? false))
            {
                resultaat.TonenInOverzicht = true;  // Nullable. Alleen true als we het belangrijk vinden. Is default, kan overschreven worden.
            }
            // bepaal de naamgeving
            if (!IsNullOrWhiteSpace(dbResult.Onderdeel.AlternatieveNaam))
            {
                resultaat.DisplayEdit.Naam = dbResult.Onderdeel.AlternatieveNaam.Equals(_defaultSetNameEmpty, StringComparison.CurrentCultureIgnoreCase) ? null : dbResult.Onderdeel.AlternatieveNaam;
            }

            return(resultaat);
        }
示例#7
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);
        }