85 lines
2.5 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|