using System;
using System.Linq;
using GCHR.Model.Konto;

namespace GCHR.Model.Uebersetzung
{
    class HerstellerKonto : IKonto
    {
        public HerstellerKonto(string csv)
        {
            var kontoInfo = csv.Split(new char[] { ';' }, 11);

            try
            {
                Kontonummer = kontoInfo[0];
                Bezeichnung = kontoInfo[1];
                Kontoart = kontoInfo[2];
                KontoTyp = new KontoTyp(kontoInfo[3]);
                KontoRegel = new Regel(kontoInfo[4]);
                VerrechnungVon = kontoInfo[5];
                VerrechnungNach = kontoInfo[6];
                Konto3 = kontoInfo[7];
                Konto4 = kontoInfo[8];
                Konto5 = kontoInfo[9];
                Ebenen = kontoInfo[10];
            }
            catch (ArgumentOutOfRangeException)
            {
                if (kontoInfo.Count() < 4) KontoTyp = new KontoTyp("S");
                if (kontoInfo.Count() < 5) KontoRegel = new Regel("0,0");
            }
        }

        public override string ToString()
        {
            return String.Join(";", new string[] { Kontonummer, Bezeichnung, Kontoart, KontoTyp.ToString(), KontoRegel.ToString(), 
                                                   VerrechnungVon, VerrechnungNach, Konto3, Konto4, Konto5, Ebenen });
        }
        
        #region IKonto Member

        public string Kontonummer { get; set; }
        
        public string Bezeichnung { get; set; }

        public KontoTyp KontoTyp { get; set; }

        #endregion

        public string Kontoart { get; set; }

        public Regel KontoRegel { get; set; }
        public string VerrechnungVon { get; set; }
        public string VerrechnungNach { get; set; }
        public string Konto3 { get; set; }
        public string Konto4 { get; set; }
        public string Konto5 { get; set; }
        public string Ebenen { get; set; }
    }
}