using System;

namespace CalculationBackend.Model.ImportExport
{
    public class SiaRecordB : SiaRecord
    {
        public SiaRecordB(string line) : base(line)
        {
            var kapitelnummer              = PaddedLine.Substring( Positions.Kapitelnummer.S              , Positions.Kapitelnummer.L              ).TrimEnd();
            var ausgabejahr                = PaddedLine.Substring( Positions.Ausgabejahr.S                , Positions.Ausgabejahr.L                ).TrimEnd();
            var leistungsposition          = PaddedLine.Substring( Positions.Leistungsposition.S          , Positions.Leistungsposition.L          ).TrimEnd();
            var variablennummer            = PaddedLine.Substring( Positions.Variablennummer.S            , Positions.Variablennummer.L            ).TrimEnd();
            var zeilennummer               = PaddedLine.Substring( Positions.Zeilennummer.S               , Positions.Zeilennummer.L               ).TrimEnd();
            var objektgliederung           = PaddedLine.Substring( Positions.Objektgliederung.S           , Positions.Objektgliederung.L           ).TrimEnd();
            var positionslage              = PaddedLine.Substring( Positions.Positionslage.S              , Positions.Positionslage.L              ).TrimEnd();
            var variantengruppe            = PaddedLine.Substring( Positions.Variantengruppe.S            , Positions.Variantengruppe.L            ).TrimEnd();
            var varianteInnerhalbDerGruppe = PaddedLine.Substring( Positions.VarianteInnerhalbDerGruppe.S , Positions.VarianteInnerhalbDerGruppe.L ).TrimEnd();
            var verbandskalkulation        = PaddedLine.Substring( Positions.Verbandskalkulation.S        , Positions.Verbandskalkulation.L        ).TrimEnd();
            var recordtyp                  = PaddedLine.Substring( Positions.Recordtyp.S                  , Positions.Recordtyp.L                  ).TrimEnd();
            var mengenart                  = PaddedLine.Substring( Positions.Mengenart.S                  , Positions.Mengenart.L                  ).TrimEnd();
            var vorzeichenMenge            = PaddedLine.Substring( Positions.VorzeichenMenge.S            , Positions.VorzeichenMenge.L            ).TrimEnd();
            var menge                      = PaddedLine.Substring( Positions.Menge.S                      , Positions.Menge.L                      ).TrimEnd();
            var mengeneinheit              = PaddedLine.Substring( Positions.Mengeneinheit.S              , Positions.Mengeneinheit.L              ).TrimEnd();
            var preisart                   = PaddedLine.Substring( Positions.Preisart.S                   , Positions.Preisart.L                   ).TrimEnd();
            var vorzeichenPreis            = PaddedLine.Substring( Positions.VorzeichenPreis.S            , Positions.VorzeichenPreis.L            ).TrimEnd();
            var preis                      = PaddedLine.Substring( Positions.Preis.S                      , Positions.Preis.L                      ).TrimEnd();
            var laufnummer                 = PaddedLine.Substring( Positions.Laufnummer.S                 , Positions.Laufnummer.L                 ).TrimEnd();
            var kagCode                    = PaddedLine.Substring( Positions.KagCode.S                    , Positions.KagCode.L                    ).TrimEnd();
            var elementcode                = PaddedLine.Substring( Positions.Elementcode.S                , Positions.Elementcode.L                ).TrimEnd();
            var positionstext              = PaddedLine.Substring( Positions.Positionstext.S              , Positions.Positionstext.L              ).TrimEnd();
            var spezielleCodierungen       = PaddedLine.Substring( Positions.SpezielleCodierungen.S       , Positions.SpezielleCodierungen.L       ).TrimEnd();
            var spezielleCodierungen0      = PaddedLine.Substring( Positions.SpezielleCodierungen0.S      , Positions.SpezielleCodierungen0.L      ).TrimEnd();
            var spezielleCodierungen1      = PaddedLine.Substring( Positions.SpezielleCodierungen1.S      , Positions.SpezielleCodierungen1.L      ).TrimEnd();
            var spezielleCodierungen2      = PaddedLine.Substring( Positions.SpezielleCodierungen2.S      , Positions.SpezielleCodierungen2.L      ).TrimEnd();
            var spezielleCodierungen3      = PaddedLine.Substring( Positions.SpezielleCodierungen3.S      , Positions.SpezielleCodierungen3.L      ).TrimEnd();
            var spezielleCodierungen4      = PaddedLine.Substring( Positions.SpezielleCodierungen4.S      , Positions.SpezielleCodierungen4.L      ).TrimEnd();
            var spezielleCodierungen5      = PaddedLine.Substring( Positions.SpezielleCodierungen5.S      , Positions.SpezielleCodierungen5.L      ).TrimEnd();

            this.Kapitelnummer              = kapitelnummer              == string.Empty ? null : kapitelnummer;
            this.Ausgabejahr                = ausgabejahr                == string.Empty ? null : ausgabejahr;
            this.Leistungsposition          = leistungsposition          == string.Empty ? null : leistungsposition;
            this.Variablennummer            = variablennummer            == string.Empty ? null : variablennummer;
            this.Zeilennummer               = zeilennummer               == string.Empty ? null : zeilennummer;
            this.Objektgliederung           = objektgliederung           == string.Empty ? null : objektgliederung;
            this.Positionslage              = positionslage              == string.Empty ? null : positionslage;
            this.Variantengruppe            = variantengruppe            == string.Empty ? null : variantengruppe;
            this.VarianteInnerhalbDerGruppe = varianteInnerhalbDerGruppe == string.Empty ? null : varianteInnerhalbDerGruppe;
            this.Verbandskalkulation        = verbandskalkulation        == string.Empty ? null : verbandskalkulation;
            this.Recordtyp                  = recordtyp                  == string.Empty ? null : recordtyp;
            this.Mengenart                  = mengenart                  == string.Empty ? null : mengenart;
            this.VorzeichenMenge            = vorzeichenMenge            == string.Empty ? null : vorzeichenMenge;
            this.Menge                      = menge                      == string.Empty ? null : decimal.Parse(menge) / 1000;
            this.Mengeneinheit              = mengeneinheit              == string.Empty ? null : mengeneinheit;
            this.Preisart                   = preisart                   == string.Empty ? null : preisart;
            this.VorzeichenPreis            = vorzeichenPreis            == string.Empty ? null : vorzeichenPreis;
            this.Preis                      = preis                      == string.Empty ? null : decimal.Parse(preis) / 100;
            this.Laufnummer                 = laufnummer                 == string.Empty ? null : laufnummer;
            this.KagCode                    = kagCode                    == string.Empty ? null : kagCode;
            this.Elementcode                = elementcode                == string.Empty ? null : elementcode;
            this.Positionstext              = positionstext              == string.Empty ? null : positionstext;
            this.SpezielleCodierungen       = spezielleCodierungen       == string.Empty ? null : spezielleCodierungen;
            this.SpezielleCodierungen0      = spezielleCodierungen0      == string.Empty ? null : spezielleCodierungen0;
            this.SpezielleCodierungen1      = spezielleCodierungen1      == string.Empty ? null : spezielleCodierungen1;
            this.SpezielleCodierungen2      = spezielleCodierungen2      == string.Empty ? null : spezielleCodierungen2;
            this.SpezielleCodierungen3      = spezielleCodierungen3      == string.Empty ? null : spezielleCodierungen3;
            this.SpezielleCodierungen4      = spezielleCodierungen4      == string.Empty ? null : spezielleCodierungen4;
            this.SpezielleCodierungen5      = spezielleCodierungen5      == string.Empty ? null : spezielleCodierungen5;
        }

        public string Kapitelnummer { get; set; }
        //public string? (leer) { get; set; }
        public string? Ausgabejahr { get; set; }
        public string? Leistungsposition { get; set; }
        public string? Variablennummer { get; set; }
        public string? Zeilennummer { get; set; }
        public string? Objektgliederung { get; set; }
        public string? Positionslage { get; set; }
        public string? Variantengruppe { get; set; }
        public string? VarianteInnerhalbDerGruppe { get; set; }
        public string? Verbandskalkulation { get; set; }
        public string? Recordtyp { get; set; }
        //public string? (leer) { get; set; }
        public string? Mengenart { get; set; }
        public string? VorzeichenMenge { get; set; }
        public decimal? Menge { get; set; }
        public string? Mengeneinheit { get; set; }
        public string? Preisart { get; set; }
        public string? VorzeichenPreis { get; set; }
        public decimal? Preis { get; set; }
        public string? Laufnummer { get; set; }
        public string? KagCode { get; set; }
        public string? Elementcode { get; set; }
        public string? Positionstext { get; set; }
        public string? SpezielleCodierungen { get; set; }
        public string? SpezielleCodierungen0 { get; set; }
        public string? SpezielleCodierungen1 { get; set; }
        public string? SpezielleCodierungen2 { get; set; }
        public string? SpezielleCodierungen3 { get; set; }
        public string? SpezielleCodierungen4 { get; set; }
        public string? SpezielleCodierungen5 { get; set; }
    }
}
