using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace lkfxdok.LKF
{
    public abstract class AufenthaltChildData
    {
        internal LKFLine _line;
        internal int _lastSyncIndex = -1;

        protected AufenthaltChildData(Aufenthalt aufenthalt, string line, string satzart)
        {
            if (line.StartsWith(satzart + "|"))
                _line = new LKFLine(line, aufenthalt);
            else
                _line = new LKFLine(satzart, aufenthalt);
        }

        protected AufenthaltChildData(Aufenthalt aufenthalt, string satzart)
        {
            _line = new LKFLine(satzart, aufenthalt);
        }

        public Aufenthalt Aufenthalt
        {
            get
            {
                return _line.Aufenthalt;
            }
        }

        public int LastSyncIndex
        {
            get
            {
                return _lastSyncIndex;
            }
        }

        internal LKFLine Line
        {
            get
            {
                return _line;
            }
        }

        public string this[int index]
        {
            get
            {
                return _line[index];
            }
        }

        public string GetAdditionalField (int index)
        {
            return _line[index + OfficialFieldCount];
        }

        protected virtual int OfficialFieldCount
        {
            get;
        }
    }
}
