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));
        }
 public ConversieResultaat(DatabaseZoekStatus status, ILiturgieTekstObject invoerTekst, ISlideOpbouw regel = null)
 {
     ResultaatStatus = status;
     InputTekst      = invoerTekst;
     ResultaatSlide  = regel;
 }
        public static string KrijgHelpendeTekstBijLiturgieFout(DatabaseZoekStatus resultaatFout, ILiturgieTekstObject vanInterpretatie)
        {
            switch (resultaatFout)
            {
            case DatabaseZoekStatus.DatabaseFout:
                return($"De tekst achter 'als' is niet correct.");

            case DatabaseZoekStatus.SetFout:
                return($"'{vanInterpretatie.Benaming}' is niet een bekend lied, bijbelboek of slide.");

            case DatabaseZoekStatus.SubSetFout:
                return(string.IsNullOrWhiteSpace(vanInterpretatie.Deel) ? "Je moet een hoofdstuk of lied opgeven." : $"'{vanInterpretatie.Deel}' is niet te vinden in {vanInterpretatie.Benaming}.");

            case DatabaseZoekStatus.VersFout:
                return($"Niet alle verzen konden gevonden worden in de database.");

            case DatabaseZoekStatus.VersOnderverdelingMismatch:
                return($"Bij '{vanInterpretatie.Deel} {vanInterpretatie.Deel}' kan je helaas geen specifieke verzen opgeven.");

            case DatabaseZoekStatus.VersOnleesbaar:
                return($"Een van de verzen geeft aan dat er geen inhoud aan hem gekoppeld is in de database. Kan je niet echt iets mee, maar dat gaat nu dus wel fout.");

            case DatabaseZoekStatus.Onbekend:
                return("Er is iets goed mis, ik kan je niet verder helpen.");
            }
            return(string.Empty);
        }