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

namespace WWTech_KanalSchnittstelle.Exporter.Kandis
{
    internal class KANDIS_SCHACHT60 : KANDIS_Exporter
    {
        public KANDIS_SCHACHT60(string filename,List<Schacht> schaechte, IWWLog log) : base(filename+".sch", EExportType.KANDIS6, kType.SCHACHT,log)
        {

            foreach(Schacht schacht in schaechte)
            {
                WriteContent(new Tuple<uint, uint>(3, 17), schacht.Objektbezeichnung);
                WriteContent(new Tuple<uint, uint>(56, 65), "S");
                WriteContent(new Tuple<uint, uint>(67, 76), "IB");
                WriteContent(new Tuple<uint, uint>(78, 87), "RESC");
                WriteContent(new Tuple<uint, uint>(190, 197), schacht.DeckelHoehe.ToString());
                WriteContent(new Tuple<uint, uint>(199, 208), "1"); // Status Deckelhöhe
                WriteContent(new Tuple<uint, uint>(210, 217), schacht.SohlHoehe.ToString());
                WriteContent(new Tuple<uint, uint>(219, 228), "1"); // Status Sohlhöhe
                // Schachtmittelpunktkoordinaten
                WriteContent(new Tuple<uint, uint>(284, 298), schacht.SohlRechtsWert.ToString());
                WriteContent(new Tuple<uint, uint>(300, 314), schacht.SohlHochWert.ToString());
                WriteContent(new Tuple<uint, uint>(316, 325), "1"); // Status der Schachtmittelpunktkoordinaten
                // Deckelkoordinaten
                WriteContent(new Tuple<uint, uint>(370, 384), schacht.DeckelRechtsWert.ToString());
                WriteContent(new Tuple<uint, uint>(386, 400), schacht.DeckelHochWert.ToString());
                WriteContent(new Tuple<uint, uint>(402, 411), "1"); // Status der Deckelkoordinaten

                WriteContent(new Tuple<uint, uint>(1222, 1231), schacht.Vermesser); // Vermesser
                WriteContent(new Tuple<uint, uint>(1319, 1328), schacht.AufnahmeDatum); // Aufnahmedatum
                WriteLineInFile();
            }
            CloseStream();
        }
    }
}
