using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace DxBlazorApplication2.AS400Kommunikation
{
    /// <summary>
    /// Einfache bean zum halten der gelesenen Daten in Stringform
    /// 
    /// </summary>
    public class AS400PreviewContainer
    {
        public List<String> felder = new List<String>();

        /// <summary>
        /// Fügt einen Text zur Liste der Felder hinzu...
        /// </summary>
        /// <param name="text"></param>
        public void AddNextField(String text)
        {
            felder.Add(text);
        }

        public void AddNextField(object text)
        {
            felder.Add(text.ToString());
        }

        /// <summary>
        /// Holt einen Feldinhalt anhand des Indexes aus der Liste
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        public String GetField(int index)
        {
            return felder[index];
        }

        /// <summary>
        /// Holt einen Feldinhalt anhand des Indexes aus der Liste und
        /// konvertiert den internen String in eine int
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        public int GetIntField(int index)
        {
            int result = 0;

            try
            {
                Int32.TryParse(felder[index], out result);
            }
            catch (Exception)
            {
                result = 0;
            }

            return result;
        }

        /// <summary>
        /// Holt einen Feldinhalt anhand des Indexes aus der Liste und
        /// konvertiert den internen String in eine int
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        public DateTime GetDateField(int index)
        {
            DateTime result = DateTime.MinValue;

            try
            {
                DateTime.TryParse(felder[index], out result);
            }
            catch (Exception)
            {
                result = DateTime.MinValue;
            }

            return result;
        }

        /// <summary>
        /// Gibt die Anzahl an Feldern zurück
        /// </summary>
        /// <returns></returns>
        public int GetCount()
        {
            return felder.Count;
        }

        public int GetIntFieldFromSubString(int index, int start, int länge)
        {
            int result = 0;

            try
            {
                String temp = felder[index].PadRight(start + länge);
                temp = temp.Substring(start, länge);
                Int32.TryParse(temp, out result);
            }
            catch (Exception)
            {
                result = 0;
            }

            return result;
        }

        /// <summary>
        /// Holt einen Feldinhalt anhand des Indexes aus der Liste und
        /// konvertiert den internen String in eine double
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        public double GetDoubleField(int index)
        {
            double result = 0;

            try
            {
                Double.TryParse(felder[index], out result);
            }
            catch (Exception)
            {
                result = 0;
            }

            return result;
        }
    }
}

