import json
import os


class IFikoOpGLv1():
    op = None
    __exportDosya = None

    aktif_satir: str = "BAS"
    aktivite_say = 0

    son = {
        "takim_yonu": None,
        "devir": ["0", "YOK", "YOK"],
        "hiz":  ["0", "YOK"],
        "aktivite_ismi": None,
        "aktivite": None
    }

    def __init__(self, op):
        self.op = op
        dosya_yolu = self.op.programlar[0].processDokuman.klasoru
        print(dosya_yolu)
        # self.__importDosya = open(dosya_yolu, 'r')
        self.__exportDosya = open(os.path.join(
            dosya_yolu, self.op.ismi+".FikoOpGLv1"), 'w', encoding="utf-8", errors='ignore')
        self.baslat()

    def baslat(self):
        self.__exportDosya.writelines(
            [f"#$ FikoYT PART OPERASYONU BASLANGICI {self.op.ismi}\n"])
        self.__exportDosya.writelines(
            [json.dumps(self.op.toFikoGL, ensure_ascii=False), "\n"])

        self.__exportDosya.writelines(
            [f"#$ FikoYT CIZIMLER BASLANGICI\n"])

        self.__exportDosya.writelines(
            ["{}\n"])

        self.__exportDosya.writelines(
            [f"#$ FikoYT VRML CIZIM BASLANGICI {self.op.urunDokumani.referansProduct.dokuman.ismi}\n"])

        self.__exportDosya.writelines(self.FikoWrlOku())

        self.__exportDosya.writelines(
            [f"#$ FikoYT VRML CIZIM BITIS {self.op.urunDokumani.referansProduct.dokuman.ismi}\n"])

        self.__exportDosya.writelines(
            [f"#$ FikoYT CIZIMLER BITIS\n"])

        self.__exportDosya.writelines(
            [f"#$ FikoYT PROGRAMLAR BASLANGICI\n"])
            
        for prgi in range(self.op.programlar.sayisi):
            prg = self.op.programlar[prgi]
            prgAptContents = self.FikoAptV1Oku(prg)
            self.__exportDosya.writelines([prgAptContents+"\n"])
        
        self.__exportDosya.writelines(
            [f"#$ FikoYT PROGRAMLAR BITIS\n"])

            # self.__exportDosya.writelines(
            #     [f"# FikoYT PROGRAM BASLANGICI {prg.ismi}\n"])

            # self.__exportDosya.writelines(
            #     [json.dumps(prg.toFikoGL, ensure_ascii=False)])

            # self.__exportDosya.writelines(
            #     [f"# FikoYT PROGRAM BITIS {prg.ismi}\n"])

        self.__exportDosya.writelines(
            [f"#$ FikoYT PART OPERASYONU BITIS {self.op.ismi}"])

    def FikoWrlOku(self):
        partDokuman = self.op.urunDokumani.referansProduct.dokuman
        if os.path.exists(
            partDokuman.klasoru
            + "//"
            + self.op.ismi
            + ".FikoWrl"
        ):
            os.remove(
                os.path.join(
                    partDokuman.klasoru,
                    self.op.ismi + ".FikoWrl"
                )
            )

        partDokuman.veriAktar(
            os.path.join(
                partDokuman.klasoru,
                self.op.ismi + ".FikoWrl"
            ),
            "wrl"
        )
        with open(
                os.path.join(
                    partDokuman.klasoru,
                    self.op.ismi + ".FikoWrl"
                ), encoding="utf-8", errors='ignore'
        ) as f:
            cizimContents = f.read()
            f.close()
        return cizimContents

    def FikoAptV1Oku(self, prg):
        partDokuman = self.op.urunDokumani.referansProduct.dokuman
        if os.path.exists(
            partDokuman.klasoru
            + "//"
            + prg.ismi
            + ".FikoAptv1"
        ):
            os.remove(
                os.path.join(
                    partDokuman.klasoru,
                    prg.ismi + ".FikoAptv1"
                )
            )

        if prg.bos:
            rtrn = f"#$ FikoYT PROGRAM BASLANGICI {prg.ismi}\n"
            rtrn += f"{json.dumps(prg.toFikoGL, ensure_ascii=False)}\n"
            rtrn += f"#$ FikoYT PROGRAM BITIS {prg.ismi}"
            return rtrn
        fkaptv1 = prg.fiko_apt_v1

        # partDokuman.veriAktar(
        #     os.path.join(
        #         partDokuman.klasoru,
        #         self.op.ismi + ".FikoWrl"
        #     ),
        #     "wrl"
        # )
        with open(
                os.path.join(
                    partDokuman.klasoru,
                    prg.ismi + ".FikoAptv1"
                ), encoding="utf-8", errors='ignore'
        ) as f:
            prgcontents = f.read()
            f.close()
        return prgcontents
