Files
BeWoPlaner/Dakota/Models/Blocke/BlockFile.cs

85 lines
2.5 KiB
C#

using Dakota.Models.Infos;
using Dakota.Models.Nachrichten;
using Dakota.Models.Segmente;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Dakota.Models.Blocke
{
/// <summary>
/// Nutzdatendatei ohne Logik
/// </summary>
internal class BlockFile : Block
{
public SegmentUNB SegmentUNB { get; private set; }
public List<BlockKostenträger> BlockKostenträger { get; private set; }
public SegmentUNZ SegmentUNZ { get; private set; }
internal BlockFile()
{
SegmentUNB = new SegmentUNB();
BlockKostenträger = new List<BlockKostenträger>();
SegmentUNZ = new SegmentUNZ(GetUNHCount);
}
public override List<Segment> GetAllSegments()
{
var list = new List<Segment>();
list.Add(SegmentUNB);
foreach (var block in BlockKostenträger)
{
list.AddRange(block.GetSegments());
}
list.Add(SegmentUNZ);
return list;
}
public override int GetUNHCount()
{
int i = 0;
foreach (var block in BlockKostenträger)
{
i += block.GetUNHCount();
}
return i;
}
internal void Add(BlockKostenträger blockkosten)
{
BlockKostenträger.Add(blockkosten);
}
public void Apply(InfoDateiNutzdaten info)
{
SegmentUNB.SyntaxKennung.SetValue(info.SyntaxKennung);
SegmentUNB.SyntaxVersionsnummer.SetValue(info.SyntaxVersion);
SegmentUNB.Absenderdatei.SetValue(info.Absenderbezeichnung);
SegmentUNB.Empfangdatei.SetValue(info.Empfangerbezeichnung);
SegmentUNB.Datum.SetValue(info.Created);
SegmentUNB.Uhrzeit.SetValue(info.Created);
SegmentUNB.Datenaustauschreferenz.SetValue(info.Datenaustauschreferenz);
SegmentUNB.Leistungsbereich.SetValue(info.Leistungsbereich);
SegmentUNB.Anwengundsreferenz.SetValue(info.Anwendungsreferenz);
SegmentUNB.Testindikator.SetValue(info.Testindikator);
foreach (var blockinfo in info.BlockKostentragers)
{
var block = new BlockKostenträger();
block.Apply(blockinfo);
Add(block);
}
SegmentUNZ.Datenaustauschreferenz.SetValue(info.Datenaustauschreferenz);
}
}
}