using SewerStammGen.Shared.Contracts;
using SewerStammGen.Shared.Domain;
using SewerStammGen.Shared.Enum;

namespace WWTech_KanalSchnittstelle.Exporter.Kandis
{
    internal class KANDIS_HAUSREV60 : KANDIS_Exporter
    {
        public KANDIS_HAUSREV60(string filename, List<Schacht> schaechte, IWWLog log) : base(filename + ".rev", EExportType.KANDIS6, kType.REVSCHACHT, log)
        {
            foreach(Schacht schacht in schaechte)
            {
                WriteContent(new Tuple<uint, uint>(3, 17), schacht.Objektbezeichnung);
                WriteContent(new Tuple<uint, uint>(19, 28), "ABW"); // Revisionschachtart
                WriteContent(new Tuple<uint, uint>(30, 39), "K"); // Kanalart
                WriteContent(new Tuple<uint, uint>(41, 50), "S"); // Entwässerungskennzeichen
                WriteContent(new Tuple<uint, uint>(52, 61), "IB");
                WriteContent(new Tuple<uint, uint>(191, 198), schacht.DeckelHoehe.ToString()); // Deckelhöhe
                WriteContent(new Tuple<uint, uint>(200, 209), "1"); // Status Deckelhöhe
                WriteContent(new Tuple<uint, uint>(211,218), schacht.SohlHoehe.ToString());
                WriteContent(new Tuple<uint, uint>(220, 229), "1"); // Status Sohlhöhe
                // Schachtmittelpunktkoordinaten
                WriteContent(new Tuple<uint, uint>(293,307), schacht.SohlRechtsWert.ToString());
                WriteContent(new Tuple<uint, uint>(309, 323), schacht.SohlHochWert.ToString());
                WriteContent(new Tuple<uint, uint>(325, 334), "1"); // Status Schachtmittelkoordinaten
                // Deckelkoordinaten
                WriteContent(new Tuple<uint, uint>(336, 350), schacht.DeckelRechtsWert.ToString());
                WriteContent(new Tuple<uint, uint>(352, 366), schacht.DeckelHochWert.ToString());
                WriteContent(new Tuple<uint, uint>(368, 377), "1");
                WriteLineInFile();
            }
            CloseStream();
        }
    }
}
