__author__ = 'PC'

import inspect
import os

from IAcilar.IKacmaDegerleri import IKacmaDegerleri
from IAktiviteler import IAktivite


class IAciWtec(object) :
	def __init__(self, Aktv: IAktivite) :
		self.aktivite = Aktv
		self.anaProgram = self.aktivite.anaProgram
		self.Tav20Er32 = self.aktivite.acilar.tav20Er32

	@property
	def islenebilir(self) :
		if self.Tav20Er32.altAci <= 90 :
			return True
		else :
			return False

	@property
	def saltAciAl(self) :
		# try:
		ScriptYolu = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
		TempDsya = os.path.realpath(ScriptYolu + u"\\..\\Prg\\FikoDosya\\WBK.FikoDll")
		#            os.rename(TempDsya,ScriptYolu+
		#                "\\Prg\\FikoDosya\\"+"WBK.CATPart")
		#        except:
		#            pass
		#        dosya=os.path.realpath(ScriptYolu+
		#                    u"\\Prg\\FikoDosya\\WBK.CATPart")

		self.doc = self.anaProgram.dokumanlar.oku(TempDsya)
		part = self.doc.asPartDokuman.catNesne
		params = part.part.Parameters

		tavUst = params.Item(u"Ust")
		tavAlt = params.Item(u"Alt")

		tavUst.Value = float(self.Tav20Er32.ustAci)
		tavAlt.Value = float(self.Tav20Er32.altAci)

		part.part.update()

		srBK = params.Item(u"B-ACISI").value
		srCK = params.Item(u"C-ACISI").value

		self.doc.kapat()

		#        try:
		#            TempDsya=os.path.realpath(ScriptYolu+
		#                    u"\\Prg\\FikoDosya\\WBK.CATPart")
		#            os.rename(TempDsya,ScriptYolu+"\\Prg\\FikoDosya\\WBK.FikoDll")
		#        except:
		#            pass

		return { "B" : float(srBK) , "C" : float(srCK) }

	@property
	def acilar(self) :
		UAtoBc = { "B" : 0.000 , "C" : 0.000 , "Islenebilir" : True , "Dik" : False , "Hata" : False }
		ust = self.Tav20Er32.ustAci
		alt = self.Tav20Er32.altAci
		# --->
		if ust == 0.000 and alt == 90.000 :
			UAtoBc["B"] = 90.000
			UAtoBc["C"] = 180.000
			UAtoBc["Islenebilir"] = True
			UAtoBc["Dik"] = True
		if ust == 90.000 and alt == 90.000 :
			UAtoBc["B"] = 0.000
			UAtoBc["C"] = 180.000
			UAtoBc["Islenebilir"] = True
			UAtoBc["Dik"] = True
		if ust == 180.000 and alt == 90.000 :
			UAtoBc["B"] = 270.000
			UAtoBc["C"] = 180.000
			UAtoBc["Islenebilir"] = True
			UAtoBc["Dik"] = True
		if ust == 270.000 and alt == 90.000 :
			UAtoBc["B"] = 180.000
			UAtoBc["C"] = 180.000
			UAtoBc["Islenebilir"] = True
			UAtoBc["Dik"] = True
		if ust == 0.000 and alt == 0.000 :
			UAtoBc["B"] = 0.000
			UAtoBc["C"] = 0.000
			UAtoBc["Islenebilir"] = True
			UAtoBc["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 }
		#--->
		if UAtoBc["Dik"] == False and UAtoBc["Hata"] == False and UAtoBc["Islenebilir"] == True :
			SrAci = self.saltAciAl
			UAtoBc["B"] = SrAci["B"]
			UAtoBc["C"] = SrAci["C"]
			UAtoBc.update(SrAci)
		return UAtoBc

	@property
	def KacmaDegerleri(self) :
		return IKacmaDegerleri(self.aktivite)

	def __call__(self) :
		return { "Acilar" : self.acilar , "Kacma Degerleri" : self.KacmaDegerleri() }

	def __str__(self) :
		return repr({ "Acilar" : self.acilar , "Kacma Degerleri" : self.KacmaDegerleri() })