using SewerStammGen.Shared.Contracts;
using SewerStammGen.Shared.Domain;
using SewerStammGen.Shared.Enum;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WWTech_KanalSchnittstelle.Exporter.Kandis
{
    internal class KANDIS_HALTUNG60 : KANDIS_Exporter
    {
        public KANDIS_HALTUNG60(string filename, List<Kanal> kanaele, IWWLog log) : base(filename+".hal", EExportType.KANDIS6, kType.HALTUNG,log)
        {
            foreach(Kanal haltung in  kanaele)
            {
                WriteContent(new Tuple<uint, uint>(3, 17), haltung.StartSchacht.Objektbezeichnung);
                WriteContent(new Tuple<uint, uint>(24, 38), haltung.EndSchacht.Objektbezeichnung);
                WriteContent(new Tuple<uint, uint>(45, 64), haltung.Objektbezeichnung);
                WriteContent(new Tuple<uint, uint>(66, 75), "K"); // Kanalart
                WriteContent(new Tuple<uint, uint>(77, 86), "S"); // Entwässerungskennzeichen
                WriteContent(new Tuple<uint, uint>(88, 97), "IB"); // Betriebzustand
                WriteContent(new Tuple<uint, uint>(173, 182), haltung.Material);
                WriteContent(new Tuple<uint, uint>(184, 193), "1"); // Profil
                WriteContent(new Tuple<uint, uint>(195, 198), haltung.DN.ToString()); // Profilhöhe
                WriteContent(new Tuple<uint, uint>(195, 198), haltung.DN.ToString()); // Profilbreite
                WriteContent(new Tuple<uint, uint>(227,234), haltung.Haltungslaenge.ToString());
                WriteContent(new Tuple<uint, uint>(236, 245), "1"); // Status haltungslänge
                WriteContent(new Tuple<uint, uint>(307, 314), ""); // Sohlhöhe AS
                WriteContent(new Tuple<uint, uint>(316, 325), "1"); // Status Sohlhöhe AS
                WriteContent(new Tuple<uint, uint>(327, 334), ""); // Sohlhöhe ES
                WriteContent(new Tuple<uint, uint>(336, 345), "1"); // Status Sohlhöhe ES
                WriteContent(new Tuple<uint, uint>(1152, 1161), "Marwede"); // Vermesser
                WriteContent(new Tuple<uint, uint>(1257, 1266), "19.04.2023"); // Aufnahmedatum
                WriteLineInFile();
            }
            CloseStream();
        }
    }
}
