from win32com.client import CDispatch

from IFikoAcilar.IFikoAcilar import IFikoAcilar
from IFikomObject import IFikomObject

__author__ = 'PC'

import os

"""
Wtec Tezgahı İçin
"""

class IACAciSonuc(object):
    A = 0.000
    C = 0.000
    dik = False
    islenebilir = True
    hata = False
    hataStr = str

    def __repr__(self):
        return repr(str(self))

    def __str__(self):
        return str({"A":self.A,"C":self.C,"dik":self.dik,"islenebilir":self.islenebilir,"hata":self.hata,"hatastr":self.hataStr})


class IFikoACAci(IFikomObject) :
    def __init__(self , obj:CDispatch, sahip:IFikoAcilar=None) :
        super(IFikoACAci, self).__init__(obj, sahip)
        self.__aktivite = sahip
        self.__eksenVektor = self.__aktivite.eksenVektor
        self.__saltAcilar = self.__aktivite.saltAcilar

        self.__dosya = os.path.realpath(os.path.join(self.anaProgram.scriptYolu, "Prg", "FikoDosya"))

    @property
    def islenebilir(self) :
        if self.__saltAcilar.altAci <= 90 :
            return True
        else :
            return False

    @property
    def __saltAciAl(self) :
        self.anaProgram.dosyaUyarilariniGoster = False

        dok = self.__aktivite.anaProgram.dokumanlar.oku(
            os.path.join(self.__dosya, "WBK.FikoDll"))
        part = dok.asPartDokuman.part
        parametreler = part.parametreler

        parametreler.item(u"Ust").degeri = self.__saltAcilar.ustAci
        parametreler.item(u"Alt").degeri = self.__saltAcilar.altAci

        part.guncelle()

        srBK =  parametreler.item(u"B-ACISI").degeri
        srCK = parametreler.item(u"C-ACISI").degeri

        dok.kapat()
        self.anaProgram.dosyaUyarilariniGoster = True

        return { "A" : float(srBK) , "C" : float(srCK) }

    @property
    def acilar(self) :
        self.__sonuc = IACAciSonuc()
        ust = self.__saltAcilar.ustAci
        alt = self.__saltAcilar.altAci
        # --->
        if ust == 0.000 and alt == 90.000 :
            self.__sonuc.A = 90.000
            self.__sonuc.C = 180.000
            self.__sonuc.islenebilir = True
            self.__sonuc.dik = True
        if ust == 90.000 and alt == 90.000 :
            self.__sonuc.A = 0.000
            self.__sonuc.C = 180.000
            self.__sonuc.islenebilir = True
            self.__sonuc.dik = True
        if ust == 180.000 and alt == 90.000 :
            self.__sonuc.A = 270.000
            self.__sonuc.C = 180.000
            self.__sonuc.islenebilir = True
            self.__sonuc.dik = True
        if ust == 270.000 and alt == 90.000 :
            self.__sonuc.A = 180.000
            self.__sonuc.C = 180.000
            self.__sonuc.islenebilir = True
            self.__sonuc.dik = True
        if ust == 0.000 and alt == 0.000 :
            self.__sonuc.A = 0.000
            self.__sonuc.C = 0.000
            self.__sonuc.islenebilir = True
            self.__sonuc.dik = True
        #--->
        if not self.islenebilir :
            print(u"Bu Acilarda Wtecte Islem Yapilamaz")
            UAtoBc = { "B" : 0.000 , "C" : 0.000 , "Islenebilir" : False , "Dik" : False , "Hata" : True }
            self.__sonuc.A = 0.000
            self.__sonuc.C = 0.000
            self.__sonuc.islenebilir = False
            self.__sonuc.dik = False
            self.__sonuc.hata = True
            self.__sonuc.hataStr = "Bu Açılarda Wtecte İşlem Yapılamaz"
        #--->
        if self.__sonuc.dik == False and self.__sonuc.hata == False and self.__sonuc.islenebilir == True :
            ACAci = self.__saltAciAl
            self.__sonuc.A = ACAci["A"]
            self.__sonuc.C = ACAci["C"]
                # UAtoBc.update(SrAci)
        return self.__sonuc

    @property
    def A(self):
        rslt = self.acilar.A
        return rslt

    @property
    def C(self):
        rslt = self.acilar.C
        return rslt

    def __call__(self) :
        return { "Acilar" : self.acilar}

    def __str__(self) :
        return repr({ "Acilar" : self.acilar})